Lekcja 19 praca domowa
Ostatnio zmodyfikowano 2015-10-07 18:17
ghost25 Temat założony przez niniejszego użytkownika |
Lekcja 19 praca domowa » 2015-10-06 19:52:18 Przy kopilacji #include <iostream> #include <cstdlib> #include <ctime>
int * wypelnij_tablice( int tablica[ 999 ] ) { int licznik = 0; do { tablica[ licznik ] =( std::rand() % 7 ) + 4; licznik++; } while( licznik < 999 ); return tablica; } int dodaj( int suma, int wypelnij_tablice_return[ 999 ] ) { wypelnij_tablice_return = wypelnij_tablice( 0 ); int licznik = 0; suma = wypelnij_tablice_return[ licznik ]; licznik++; do { suma = suma + wypelnij_tablice[ licznik ]; licznik++; } while( licznik < 999 ); return suma; } int main( int wypelnij_tablice_return2[ 999 ], int dodaj_return ) { srand( time( NULL ) ); int licznik = 0; wypelnij_tablice_return2 = wypelnij_tablice(); dodaj_return = dodaj(); do { std::cout << wypelnij_tablice[ licznik ]; licznik++; } while( licznik < 999 ); std::cout << "Suma to " << dodaj_return; }
Kompilator zwraca błąd: E:\Dokumenty\C++\zad14\zad14.cpp||In function 'int dodaj(int, int*)':| E:\Dokumenty\C++\zad14\zad14.cpp|23|warning: pointer to a function used in arithmetic [-Wpointer-arith]| E:\Dokumenty\C++\zad14\zad14.cpp|23|warning: pointer to a function used in arithmetic [-Wpointer-arith]| E:\Dokumenty\C++\zad14\zad14.cpp|23|error: invalid conversion from 'int* (*)(int*)' to 'int' [-fpermissive]| E:\Dokumenty\C++\zad14\zad14.cpp|28|warning: first argument of 'int main(int*, int)' should be 'int' [-Wmain]| E:\Dokumenty\C++\zad14\zad14.cpp|28|warning: second argument of 'int main(int*, int)' should be 'char **' [-Wmain]| E:\Dokumenty\C++\zad14\zad14.cpp||In function 'int main(int*, int)':| E:\Dokumenty\C++\zad14\zad14.cpp|32|error: too few arguments to function 'int* wypelnij_tablice(int*)'| E:\Dokumenty\C++\zad14\zad14.cpp|5|note: declared here| E:\Dokumenty\C++\zad14\zad14.cpp|33|error: too few arguments to function 'int dodaj(int, int*)'| E:\Dokumenty\C++\zad14\zad14.cpp|15|note: declared here| E:\Dokumenty\C++\zad14\zad14.cpp|36|warning: pointer to a function used in arithmetic [-Wpointer-arith]| ||=== Build failed: 3 error(s), 5 warning(s) (0 minute(s), 0 second(s)) ===| O co chodzi? |
|
carlosmay |
» 2015-10-06 20:58:26 wypelnij_tablice_return2 = wypelnij_tablice(); dodaj_return = dodaj(); |
Wywołujesz funkcje bez argumentów, a definicje funkcji przyjmują argumenty. To tyle co widać na pierwszy rzut oka. Straszny bałagan w nazwach, nieczytelne, funkcje i zmienne mają te same nazwy. Nic z tego nie rozumiem. Ogarnij bałagan od nowa.
wypelnij_tablice_return = wypelnij_tablice( 0 ); int licznik = 0; suma = wypelnij_tablice_return[ licznik ]; licznik++;
|
int main( int wypelnij_tablice_return2[ 999 ], int dodaj_return ) |
ale tego nie widziałem wcześniej. Co tutaj chcesz osiągnąć? |
|
ghost25 Temat założony przez niniejszego użytkownika |
» 2015-10-07 15:30:24 OK, już chyba rozumiem o co chodzi (przynajmniej część). Nie rozumiem jeszcze tylko dlaczego nie można utworzyć tablicy zmiennych tak normalnie wewnątrz funkcji, tylko trzeba w nawiasie po nazwie funkcji. Przecież to jest kompletnie pozbawione sensu. Czyli po prostu mam wywołać funkcje z argumentem 0? |
|
carlosmay |
» 2015-10-07 16:17:39 #include <iostream> #include <cstdlib> #include <ctime>
void wypelnij_tablice( int tab[], int rozm, int start, int stop ) { int i = 0; do { tab[ i++ ] =( std::rand() %( stop - start + 1 ) ) + start; } while( i < 999 ); }
void wypiszLiczby( int tab[], int rozm ) { int i = 0; do { std::cout << tab[ i++ ] << std::endl; } while( i < rozm ); }
int obliczSume( int tab[], int rozm ) { int i = 0; int suma = 0; do { suma += tab[ i++ ]; } while( i < rozm ); return suma; }
int main() { srand( time( 0 ) ); int tablica[ 999 ]; wypelnij_tablice( tablica, 999, 4, 10 ); wypiszLiczby( tablica, 999 ); int suma = obliczSume( tablica, 999 ); std::cout << "Suma wynosi " << suma << std::endl; return 0; } Masz kod napisany wg scenariusza w zadaniu. |
|
ghost25 Temat założony przez niniejszego użytkownika |
» 2015-10-07 18:17:45 Dzięki za pomoc |
|
« 1 » |