Losowanie liczb i przypisanie ich do tablicy

Odpowiedz Nowy wątek
2014-12-13 12:53
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 ?

edytowany 2x, ostatnio: pargizon, 2014-12-13 13:04

Pozostało 580 znaków

2014-12-13 13:11
1

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


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Pozostało 580 znaków

2014-12-13 13:15
0

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

Pozostało 580 znaków

2014-12-13 13:18
1

Prawie, pozbądź się

system("pause");

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Pozostało 580 znaków

2014-12-13 13:22
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.

Pozostało 580 znaków

2014-12-13 13:53

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;

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 1x, ostatnio: bogdans, 2014-12-13 13:53

Pozostało 580 znaków

2014-12-13 13:57
0

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

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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