• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Funkcja z uzyciem wskaznikow na poczatek i koniec tablicy.

0 głosów
81 wizyt
pytanie zadane 23 października 2017 w C i C++ przez chucksqll Stary wyjadacz (10,030 p.)

Witam, mam problem nie tyle co z niedziałającym program to tyle z zrozumieniem jak on działa.(dokładniej ze wskaźnikami ogólnie)

Przerabiam książkę Język C++ Szkoła Programowania, jestem obecnie w ćwiczeniach programistycznych rozdziału 7 zadanie 7. Treść:

Zmodyfikuj program z listingu 7.7, zamieniając trzy funkcje obsługujące tablice tak, aby
każda z nich używała dwóch wskaźników określających zakres. Funkcja f i l l _ a r r a y ( ) ,
zamiast zwracać aktualną liczbę elementów, ma zwrócić wskaźnik elementu znajdującego
się za ostatnim wypełnionym elementem. Inne funkcje mają używać tego wskaźnika jako
drugiego parametru pozwalającego wykryć koniec danych. Oto mój kod, prosiłbym bym o wytłumaczenie jak to tam działa zwłaszcza wskaźnik funkcji fill_array(? czy jak to nazwać) oraz ogólną ocenę poprawności, bo robi się coraz trudniej, więc więcej błędów się zdarza.

#include <iostream>

const int Max=5;
using namespace std;

double * fill_array(double * begining, double * end_tab);
void show_array(const double * begining,const double * end_tab);
void revalue(double r, double * begining, double * end_tab);

int main()
{
    double properties[Max];

    double * last_piece=fill_array(properties,properties+Max);
    show_array(properties, last_piece);
    if(properties!=last_piece)
    {
        cout<<"podaj czynnik zmiany wartosci: ";
        double factor;
        while(!(cin>>factor))
        {
            cin.clear();
            while(cin.get()!='\n')
                continue;
            cout<<"niepoprawna wartosc; podaj liczbe: ";

        }
        revalue(factor, properties, last_piece );
        show_array(properties, last_piece);
    }
    cout<<"gotowe"<<endl;
    cin.get();
    cin.get();
    return 0;
}
double * fill_array(double * begining, double * end_tab)
{
    double temp;
    double * pt;
    int i=0;

    for(pt=begining; pt!=end_tab; pt++)
    {
        cout<<"podaj wartosc nr. "<<(i+1)<<": ";
        i++;
        cin>>temp;
        if(!cin)
        {
            cin.clear();
            while(cin.get()!='\n')
                continue;
            cout<<"bledne dane koniec wczytywanaia"<<endl;
            break;
        }
        else if(temp <0)
            break;
        //ar[i]=temp;
        *pt=temp;
    }
    return pt;
}
void show_array(const double * begining,const double * end_tab)
{
    int i=0;
    const double *pt;
    for(pt=begining; pt!=end_tab; pt++)
    {
        cout<<"nieruchomosc nr "<<(i+1)<<": ";
        cout<<*pt<<endl;
        i++;
    }
}
void revalue(double r,double * begining, double * end_tab)
{
    double * pt;
    for(pt=begining; pt!=end_tab; pt++)
    {
        (*pt)*=r;
    }
}

 

komentarz 24 października 2017 przez j23 Maniak (67,300 p.)

Oto mój kod, prosiłbym bym o wytłumaczenie jak to tam działa (...)

To jak, napisałeś kod, a teraz pytasz, jak on działa?cool

 

Co do kodu to błędów nie widzę.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 52 wizyt
pytanie zadane 3 kwietnia 2017 w C i C++ przez hacker09 Użytkownik (520 p.)
0 głosów
1 odpowiedź 100 wizyt
pytanie zadane 12 stycznia 2017 w C i C++ przez kidcudi6 Nowicjusz (170 p.)
0 głosów
1 odpowiedź 93 wizyt
pytanie zadane 11 grudnia 2016 w C i C++ przez czujek22 Mądrala (6,460 p.)
Porady nie od parady
Zadając pytanie postaraj się o szczegółowe opisanie problemu oraz udostępnienie wszystkich istotnych informacji (kody źródłowe, zrzuty ekranu itp.).Opisanie problemu

54,387 zapytań

98,251 odpowiedzi

202,070 komentarzy

26,700 pasjonatów

Przeglądających: 274
Pasjonatów: 9 Gości: 265

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...