Witam, dopiero zaczynam naukę z c++.
Mam problem z napisaniem funkcji która sumowała by n (np. 100) losowo wybranych liczb. Starałem się coś wykombinować ale nie mam zielonego pojęcia jak się do tego zabrać. Proszę o pomoc
0
0
int suma = 0;
for(int i = 0; i < 100; i++)
{
int los = rand() % 100 + 1;
suma += los;
}
0
Serdecznie dziękuje
0
Należy dodać, że na początku programu musisz dopisać linijkę srand(time(0));, która ustawi ziarno pseudolosowości.
0
plus dołączyć bibliotekę #include <time.h> i zmienić temat, bo nie użyłem tutaj w ogóle tablic tak jak było w temacie
0
... nie wspominając już o tym że użyłeś do sumowania operatora += zamiast tablic jak jest zasugerowane w temacie.
0
#include <time.h>
//...
srand(time(0));
//...
int tab[10];
for(int i = 0; i < 10; i++)
{
int los = rand() % 100 + 1;
tab[i] = los;
}
for(int i = 1; i < 10; i++) // zaczynamy od drugiego argumentu bo suma bedzie sie znajdowala w pierwszym (bo tak to sobie wymyslilem ;]
tab[0] += tab[i]
//...
0
Można by też wykorzystać ideę PD i zrobić to jakoś tak:
#include <iostream>
using namespace std;
int main()
{
srand(time(0));
int n, *tab;
cout << "Podaj rozmiar tablicy: " << endl;
cin >> n;
tab = new int[n];
for(int i=0; i<n; i++)
{
tab[i] = rand() % 100 + 1;
cout << i+1 << " wylosowana liczba to: " << tab[i] << endl;
}
for(int i=1; i<n; i++)
tab[i]+=tab[i-1];
cout << "Suma wylosowanych liczb to: " << tab[n-1];
return 0;
}
Wydaje mi się, że includowanie biblioteki time.h nie jest potrzebne, przynajmniej pisząc program w code::blocks i kompilując używając GCC wszystko ładnie przeszło.
0
Zapomniałem o zwolnieniu pamięci. Przed return 0 obowiązkowo delete [] tab :)