Zapis wylosowanej liczby do zmiennej

0
# include <iostream>
# include <cstdlib>
using namespace std;
int main ()
{
   int tablicaliczb[100];
   int a,z;
   cin >> a;
   srand (a);
   tablicaliczb[z] = (rand()%11)+1;
   cout << tablicaliczb[z] << endl;
   int b,y;
   cin >> b;
   srand (b);
   tablicaliczb[y] = (rand()%11)+1;
   cout << tablicaliczb[y] << endl;
   cout << tablicaliczn[z] + tablicaliczb [y];

return 0;
}

Oto moj kod. Jak widac chce aby pierwsza losowo wygenerowana liczba zapisala sie w jednej zmiennej, a druga w drugiej zmiennej. Na koncu chce aby wyswietlila sie suma obu wygenerowanych liczb. Problem polega na tym ze kiedy np pierwsza liczba wynosi 1, a druga 2 to suma ukazuje sie jako 4 a nie 3. Za kazdym razem program wyswietla po prostu podwojona druga liczbe. Jak zmienic kod, aby naprawic ten problem?

dodanie znacznika <code class="cpp"> - @furious programming

2

Ten kod to jedno wielkie nieporozumienie. Po co Ci tablica 100 liczb, jeśli potrzebujesz dwóch?

Prawdopodobnie niepoprawnie używasz srand (nie wspominając już, że rand i srand w C++ powinieneś unikać).

Nie inicjalizujesz y i z a potem z nich korzystasz (UB), przez co odnosisz się do nie wiadomo jakich elementów tablicy (zapewne w tym przypadku w debug mode 2x odnosisz się do pierwszego elementu tablicy, bo y i z mają wartość 0, stąd wynik jest jaki jest).

0

Ten kod jest tylko czescia tego co pisze i liczb bedzie wiecej niz dwie ale faktycznie 100 to pewnie za duzo wzialem to z jakiegos forum ;D czyli rozumiem ze powinienem zainicjalizowac x i y tak?

0

a moglbym Cie w takim razie poprosic zebys napisal ta czesc kodu tak jak Ty bys to zrobil? Oczywiscie jak najprosciej zebym zrozumial

2

Absolutnie, inaczej nie masz prawa ich użyć. Jeśli tych liczb jest więcej to po prostu wykonaj wszystko w pętli zamiast używać osobnych zmiennych.

constexpr int ilosc = 5;
std::mt19937 gen{std::random_device{}()};
std::uniform_int_distribution<> dis(1,11);

std::vector<int> liczby(ilosc);
for(int& x : liczby){
    x = dis(gen);
}

int suma = 0;
for(int x : liczby){
    suma += x;
}

http://melpon.org/wandbox/permlink/9ISgUy8UZpVCozt1

1 użytkowników online, w tym zalogowanych: 0, gości: 1