Problem z funkcja i tablicami
Ostatnio zmodyfikowano 2009-08-01 15:53
mefisto Temat założony przez niniejszego użytkownika |
Problem z funkcja i tablicami » 2009-08-01 14:28:14 Witam wszystkich :) Niedawno zabralem sie za nauke C++ - ucze sie z ksiazki S.Prata "Szkoła Programowania" i w rozdziale 7 tej ze ksiazki napotkalem sie na zadanie ktorego mi nie dziala tak jak powinno. W czym rzecz ? Otóż zadanie polega na tym aby napisac 3 funkcje. 1) Funkcje wprowadzajaca dane do tablicy o rozmiarze maximum 10 liczb ale musi byc tez możliwosc wczesniejszego zakonczenia wprowadzania danych np: Podajemy rozmiar tablicy 10, wpisujemy 1,2,3,X - przy wartosci X wprowadzanie jest przerywane.To chyba udalo mie zrobic :) 2)Napisac funkcje wyswietlajaca dane. I tu mam problem poniewaz funkcja "wypisz" która zamiesciłem poniżej nie działa - wprowadzajac rozmiar tablicy 10 a nastepnie wartosc np:1,2,3,4,x - funkcja nie wyswietla poprawnych danych tj:1,2,3,4 , ba - nie wyswietla nic ;/ Rozmiar tab : 4 5 podaj nastepna wartosc :1 podaj nastepna wartosc :q wprowadzono :
3) Napisac funkcje licząca srednia podanych liczb. O to co mam w chwili obecnej. Dodam tylko ze piszac funkcje wypisz wzorowalem sie zadaniem w którym była mowa o wskaźnikach na funkcje. Analogicznie chcialem postapić u siebie ale niestety poległem :P Prosze wiec o Was o pomoc - co należy zrobic (poprawić) aby funkcja "Wypisz" działała ? O to caly mój kod : #include <iostream> using namespace std; int wypelnij( int tab[], int r ) { int i = 0; while( i < r && cin >> tab[ i ] ) { if( ++i < r ) { cout << "podaj nastepna wartosc :"; } } cin.clear(); return i; }
int wypisz( int tab[], int s, int( * p )( int *, int ) ) { cout << "wprowadzono : " << endl; int rozmiar = p( tab, s ); for( int i = 0; i < rozmiar; i++ ) { cout << tab[ i ] << endl; } }
int main( int argc, char ** argv ) { int s; cout << "Rozmiar tab :\n"; cin >> s; int tab[ s ]; wypelnij( tab, s ); wypisz( tab, s, wypelnij ); return 0; }
|
|
DejaVu |
» 2009-08-01 15:01:46 #include <iostream> using namespace std; int wypelnij( int tab[], int r ) { int i = 0; cout << "podaj npierwsza wartosc :"; while( i < r && cin >> tab[ i ] ) { if( ++i < r ) { cout << "podaj nastepna wartosc :"; } } cin.clear(); return i; }
int wypisz( int tab[], int s, int( * p )( int *, int ) ) { int rozmiar = p( tab, s ); cout << "wprowadzono : " << endl; for( int i = 0; i < rozmiar; i++ ) { cout << tab[ i ] << endl; } }
int main( int argc, char ** argv ) { int s; cout << "Rozmiar tab :\n"; cin >> s; int tab[ s ]; wypisz( tab, s, wypelnij ); return 0; }
Nie wiem skąd się nauczyłeś wskaźników na funkcje - zważywszy na fakt, że to książka i doszedłeś do 7 rozdziału... |
|
mefisto Temat założony przez niniejszego użytkownika |
» 2009-08-01 15:53:00 @Piotr Szawdyński Dziekuje Ci za odpowiedź i pomoc w programie ! O wskaźnikach na funkcje w "Szkoła programowania" jest poświęcony jeden przykład w rozdziale 7 - strona 350 , listing 7.17.fun_ptr.cpp.
Ps. Dzieki za edycje postu - nie wiedzialem jak wkleic wiec uzylem code :)
Pozdrawiam i jeszcze raz dziękuje. |
|
« 1 » |