• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Nie działająca tablica

Object Storage Arubacloud
0 głosów
240 wizyt
pytanie zadane 11 kwietnia 2016 w C i C++ przez Michał_Warmuz Mądrala (5,830 p.)

Witam. Robię taki program do szkoły i mam problem z tablicą. Dlaczego ona nie działa :) Z góry Dziękuje za pomoc :)

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int n = 5;

int main()
{
    srand( time( NULL ) );
    for(int i=0; i<=n; i++ ) {
        int tab[i] = (rand() % 99 );
        cout<<tab[i];
    }
    return 0;
}

 

3 odpowiedzi

+4 głosów
odpowiedź 11 kwietnia 2016 przez Dubgron Mądrala (5,620 p.)
edycja 11 kwietnia 2016 przez Dubgron
 
Najlepsza

Nie działa ponieważ, w taki sposób nie inicjalizuje się zmiennych dynamicznie. Powinno to wyglądać tak.

#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
int n = 5;
 
int main()
{
    srand( time( NULL ) );

    int* tab = new int [n]

    for(int i=0; i<=n; i++ ) {
        tab[i] = rand() % 99;
        cout<<tab[i]<<endl;
    }
    return 0;
}

Mam nadzieję, że pomogłem. Pozdrawiam.

komentarz 11 kwietnia 2016 przez Patryk Krajewski Nałogowiec (26,170 p.)
"inicjuje"? Chodziło ci o to: https://pl.wikipedia.org/wiki/Inicjacja :D Poprawnie się mówi inicjalizacja i nie myl tego bo znaczą coś innego.
komentarz 11 kwietnia 2016 przez draghan VIP (106,230 p.)

Jeszcze słowo wyjaśnienia.

Pisząc:

for(int i=0; i<=n; i++ ) {
        int tab[i] = (rand() % 99 );
        cout<<tab[i];
       // ...
}

w każdym obiegu pętli tworzymy nową tablicę o ilości elementów równej numerowi iteracji tablicy. Taka tablica jest usuwana w chwili wejścia do kolejnej iteracji, dlatego Dugborn przeniósł definicję tablicy przed pętlę.

 

komentarz 11 kwietnia 2016 przez Dubgron Mądrala (5,620 p.)
Ok, dzięki. Poprawiłem :)
0 głosów
odpowiedź 11 kwietnia 2016 przez danior Początkujący (330 p.)
jak to c++ spróbuj dac u góry #include<time.h>
komentarz 11 kwietnia 2016 przez Dubgron Mądrala (5,620 p.)
edycja 5 czerwca 2016 przez Dubgron
To nie ma znaczenia czy użyje <ctime> czy <time.h>. Ale bądź co bądź to powinno się używać tej pierwszej wersji, ponieważ jest zgodna ze standardami C++, a druga to naleciałość po języku C.
komentarz 11 kwietnia 2016 przez danior Początkujący (330 p.)
Zawsze czegoś nowego się można na forum dowiedzieć :D
komentarz 11 kwietnia 2016 przez draghan VIP (106,230 p.)
Dugborn - w zasadzie ma znaczenie. Zawartość nagłówków xxx.h nie jest obwarowana przestrzenią nazw std lub przynajmniej tak się zachowuje (dołączając plik cxxx i umieszczając niezbędne deklaracje przestrzeni nazw).
komentarz 11 kwietnia 2016 przez Dubgron Mądrala (5,620 p.)
Tak, to się zgadza, ale osoba, która wrzuciła ten post miała już ustawione używanie przestrzeni nazw std, więc w takim wypadku, nie ma żadnej różnicy. Nie mniej jednak masz rację, a ja zapomniałem to tym wspomnieć. Pozdrawiam.

PS bardzo ciekawa interpretacja mojego nicku, tej jeszcze nie słyszałem :)
komentarz 11 kwietnia 2016 przez draghan VIP (106,230 p.)
Sorasy, człowiek jest zmęczony po całym dniu. Obiecuję, że więcej o takie interpretacje się nie pokuszę. ;)
0 głosów
odpowiedź 11 kwietnia 2016 przez danior Początkujący (330 p.)

Ewentualnie możesz z góry założyć wielkość tablicy jeśli ma być zawsze 5 w taki sposób

#include <iostream>
#include <cstdlib>
#include <time.h>

using namespace std;

int n = 5;
int tab[5];

int main()
{
	srand(time(NULL));
	for (int i = 0; i <= n-1; i++)
	{
		 tab[i] = (rand() % 99);
		cout << tab[i]<<endl;
	}
	cin.get();
	return 0;
}

Pozdrawiam, danior

Podobne pytania

–1 głos
1 odpowiedź 303 wizyt
pytanie zadane 2 sierpnia 2018 w Java przez Mikołaj Dudziak Nowicjusz (140 p.)
0 głosów
3 odpowiedzi 579 wizyt
0 głosów
0 odpowiedzi 145 wizyt

92,624 zapytań

141,478 odpowiedzi

319,822 komentarzy

62,005 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...