Rozdział 19. O co chodzi?
Zadanie domowe
Napisz program, który wylosuje 999 liczb całkowitych z zakresu od 4 do 10 włącznie, wypisze te wartości na ekran, po czym zsumuje je i wynik wypisze na ekran. Wszelkie operacje mają zostać zrealizowane w oparciu o funkcje. Tablica ma być zadeklarowana w funkcji main. Oczekiwane funkcje:
Wypełnienie tablicy o podanym rozmiarze losowymi liczbami z przedziału podawanego przez argumenty funkcji.
Sumowanie określonej ilości liczb znajdujących się w tablicy i zwrot wyniku.
Wypisywanie zawartości tablicy.
Przykładowa implementacja funkcji main:
int main()
{
int tablica[ 999 ];
wylosujLiczby( tablica, 999, 4, 10 );
wypiszLiczby( tablica, 999 );
int iSuma = obliczSume( tablica, 999 );
std::cout << "Suma liczb wynosi: " << iSuma << std::endl;
return 0;
}
Witam, mam problem napisałem ten program z zadania domowego, lecz nie działa tak jak trzeba. Nie widzę błędu, ale coś jest nie tak. Program źle sumuje liczby. Wynik po prostu jest dużo za duży. Domyślam się, że coś z warunkami zakończeń funkcji jest coś nie tak.
#include <iostream>
#include <ctime>
#include <cstdlib>
int wylosujLiczby( int Liczby[], int limit, int przedzialOd, int przedzialDo )
{
srand( time( NULL ) );
rand();
do
{
Liczby[ limit ] = rand() %( przedzialDo + 1 - przedzialOd ) + przedzialOd;
limit--;
} while( limit > 0 );
}
int wypiszLiczby( int Liczby[], int limit )
{
do
{
std::cout << Liczby[ limit ] << std::endl;
limit--;
} while( limit > 0 );
}
int obliczSume( int Liczby[], int limit )
{
int suma;
do
{
suma = suma + Liczby[ limit ];
limit--;
} while( limit > 0 );
return suma;
}
int main()
{
int tablica[ 999 ];
wylosujLiczby( tablica, 999, 4, 10 );
wypiszLiczby( tablica, 999 );
int iSuma = obliczSume( tablica, 999 );
std::cout << "Suma liczb wynosi: " << iSuma << std::endl;
return 0;
}
A i jeszcze jedno, gdy to pisałem to w funkcji losującej zamiast
( przedzialDo + 1 - przedzialOd )
napisałem
( przedzialDo++ - przedzialOd )
a liczby losowały się ze złego przedziału. Tutaj rodzi się pytanie czemu? Przecież to praktycznie to samo. Sytuacja odwrotna była przy
limit--
, gdy napisałem
limit - 1
to pojawiał się błąd.