Losowanie liczb i przypisanie ich do tablicy

0
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{	int liczba[998],licznik=0,numerliczby=1;
	srand(time(NULL));
	
	do
	{	
		liczba[licznik]=(rand() % 7 )+ 4;
		cout<<numerliczby<<"."<<liczba[licznik]<<endl;
		licznik++;
		numerliczby++;
	}while(licznik<=998);
	
	system("pause");
	return 0;
}

Mam pytanie odnośnie powyższego kodu nie rozumiem dlaczego nie są tutaj losowane żadne liczby tylko podczas wypisania na ekran wyświetlana jest cały czas jakaś liczba ujemna(za każdym razem ta sama)

PS:Był to jakiś błąd Visuala teraz już wszystko działa jak powinno tylko mam inny problem.

#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{	
	int liczba[998],licznik=0,numerliczby=1,suma;
	srand(time(NULL));
	
	do
	{	
		liczba[licznik]=(rand() % 7 )+ 4;
		cout<<numerliczby<<"."<<liczba[licznik]<<endl;
		licznik++;
		numerliczby++;
	}while(licznik<=998);
	
	do
	{	suma=+liczba[licznik];
		licznik++;
		cout<<"suma liczb= "<<suma<<endl;
	}while(licznik<=998);
	
	system("pause");
	return 0;
}

Wszystko obliczane jest tutaj poprawnie lecz później wyświetla się błąd o treści :Stack around the variable 'liczba' was corrupted.
Mógłby ktoś mi wytłumaczyć co powyższy błąd oznacza ?

1

Wychodzisz poza tablicę liczba. Ona ma miejsce na 998 liczb, a Ty zapisujesz 999, ostatnią piszesz więc poza tablicą.

0

Dopiero teraz to zauważyłem dzięki :)
Reszta w porządku ?

1

Prawie, pozbądź się

system("pause");
0

Tak tylko wtedy od razu zamyka mi się podgląd wypisania na ekran ;/

Mam teraz problem z sumą ponieważ za każdym razem pokazuje 999 i nie wiem dlaczego wydaje mi się być napisana poprawnie.

1

Nie inicjujesz zmiennej suma

int liczba[999],licznik=0,numerliczby=1,suma = 0;

Nie zerujesz zmiennej licznik i źle dodajesz

    }while(licznik<=998);
    licznik = 0;
    do
    {   suma+=liczba[licznik];
        licznik++;

    }while(licznik<=998);
    cout<<"suma liczb= "<<suma<<endl;
0

Teraz wszystko działa jak należy :) Dzięki za pomoc !

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