Adams644 Temat założony przez niniejszego użytkownika |
Przekazywanie Tablic Jednowymiarowych do Funkcji » 2015-06-09 21:28:51 Witam, stworzyłem ten temat w celu ,aby zapytać się was i prosić o sprawdzenie poprawności tego kodu z wykorzystaniem zasad opisanych w kursie tzn. Jako początkujący programista staram się przestrzegać każdych zasad ale wiadomo nie wszystko idzie od razu zapamiętać więc wolę się zapytać ,żeby nie łapać już na początku tych złych nawyków. :) Napisałem ten kod w oparciu o polecenie pracy domowej (Tytuł). Jeżeli by ktoś miał chwilę to interesuje mnie wypisanie w komentarzu zrobionych przeze mnie błędów. :) Pozdrawiam. #include <iostream> #include <cstdlib>
using namespace std; void wylosujLiczby( int tablica[], int licznik, int a, int b ) { int i = 0; do { tablica[ i ] =( rand() % b ) + a; i++; licznik--; } while( licznik > 0 ); }
void wypiszLiczby( int tablica[], int licznik ) { int i = 0; do { cout << "liczba: " << tablica[ i ] << endl; i++; licznik--; } while( licznik > 0 ); } int obliczSume( int tablica[], int licznik ) { int i = 0; int suma = 0; do { suma += tablica[ i ]; i++; licznik--; } while( licznik > 0 ); return suma; }
int main() { int tablica[ 999 ]; wylosujLiczby( tablica, 999, 4, 7 ); wypiszLiczby( tablica, 999 ); int iSuma = obliczSume( tablica, 999 ); cout << "Suma liczb wynosi: " << iSuma << endl; return 0; }
|
|
pekfos |
» 2015-06-09 21:39:34 tablica[ i ] =( rand() % b ) + a;
|
To miało losować liczby od a do b? |
|
Adams644 Temat założony przez niniejszego użytkownika |
» 2015-06-09 21:43:31 To miało losować liczby od 4 do 10 dziesiątką włącznie więc postanowiłem zapisać to w taki sposób. Z tego co pamiętam początek jest tam gdzie zmienna "a" łączna liczba losowanych liczb tam gdzie "b" |
|
pekfos |
» 2015-06-09 21:54:03 Trochę poszedłeś na łatwiznę, zmieniłeś znaczenie argumentów w skopiowanym przykładowym mainie. |
|
Adams644 Temat założony przez niniejszego użytkownika |
» 2015-06-09 21:59:16 hmmm... więc chodzi o to ,że te wartości które są podane jako argumenty źle zinterpretowałem ? Czy powinienem trzymać się jakiejś zasady ku temu? Muszę dodać ,że moim celem było napisanie poprawnie i (stylistycznie) tych funkcji oraz ,że w żadnym wypadku nie chciałem iść na łatwiznę tylko z mojego punktu logiki oraz wiedzy wydało mi się to prawidłowe. Dlatego też każda uwaga w moim kierunku będzie traktowana jako nauka. |
|
pekfos |
» 2015-06-09 22:51:12 więc chodzi o to ,że te wartości które są podane jako argumenty źle zinterpretowałem ? |
wylosuje 999 liczb całkowitych z zakresu od 4 do 10 włącznie [..]
wylosujLiczby( tablica, 999, 4, 10 );
|
Nie wiem jak inaczej to można zinterpretować. 3 różne, opisane liczby w treści zadania i takie masz podane jako argumenty. W zasadzie nie jest nigdzie napisane, że trzeba się trzymać przykładowej implementacji z treści, ale wtedy przynajmniej masz pewność, że napisane przez ciebie funkcje są na temat. |
|
Adams644 Temat założony przez niniejszego użytkownika |
» 2015-06-09 23:14:47 No dlatego też mi się nie wydaje ,żebym źle to zrozumiał co prawda zmieniłem w tym zapisie wartość gdzie jest ( 4,10 ) na (4, 7) ponieważ z wcześniejszych rozdziałów w kursie wywnioskowałem ,że wpisanie 10 losowalo by mi liczby z większego przedziału a nie to jest celem zadania. Jeżeli ,tak jak piszesz to faktycznie coś mi może umknęło i da się wykorzystać te wartości 4,10 tak żeby losowanie też było prawidłowe. :) Dzięki i chociaż ,że ten przykładowy main jest nie pod to zadanie. To i tak sprawdzę inne możliwości losowania. Pozdrawiam. ; |
|
pekfos |
» 2015-06-09 23:28:43 zmieniłem [..] ( 4,10 ) na (4, 7) ponieważ z wcześniejszych rozdziałów w kursie wywnioskowałem ,że wpisanie 10 losowalo by mi liczby z większego przedziału |
łączna liczba losowanych liczb tam gdzie "b" |
Argument b jest górną granicą przedziału, podanie go do modulo z rand() nie da pożądanego rezultatu, bo, jak sam wiesz i napisałeś, trzeba tam podać ilość liczb, więc musisz tę ilość obliczyć, mając dane granice przedziału. |
|
« 1 » |