[C++] Błąd w programie z Tablicami

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Awatar użytkownika
sQrtek
Sędziwy Jeż
Sędziwy Jeż
Posty: 99
Rejestracja: 13 lut 2010, 11:57
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

[C++] Błąd w programie z Tablicami

Post autor: sQrtek »

Witam
Tworzyłem przykładowy program z tablicami, i natknąłem się na pewny nietypowy problem.
Program ma pytać o wielkość zadeklarowanej tablicy, a następnie ile liczb ma wypisać z tej tablicy, po czym podaje się liczby, i na sam koniec je wypisuje.
Wydaje mi się że źle zrobiłem coś z tą ilością liczb w tablicy, bo jak zrobię normalne zadeklarowanie tablicy z jakąkolwiek ilością liczb to wszystko działa pięknie, tylko czemu nie można wczytywać ilości z poziomu programu?
Poniżej kod programy.

A wyskakuje błąd: Naruszenie ochrony pamięci

Kod: Zaznacz cały


#include <iostream>

using namespace std;

int main()
{
int ile;
float tab[ile];
int ilosc;
int i;

cout <<"Ile ma sie znalezc w tablicy liczb? ";
cin >> ile;

cout <<"Ile chcesz wypisac liczb? ";
cin >> ilosc;

for(i=0; i<ilosc; i++)
{
cout <<"Podaj liczbe nr " <<i+1 <<" :";
cin >> tab[i];
}
cout <<endl;
cout <<"Podales nastepujace liczby: ";
for(i=0; i<ilosc; i++)
{
cout << tab[i];
}

return 0;

}
[r4]
Przebojowy Jelonek
Przebojowy Jelonek
Posty: 1048
Rejestracja: 08 maja 2007, 07:40
Wersja Ubuntu: 12.10
Środowisko graficzne: Xfce
Architektura: x86

Re: [C++] Błąd w programie z Tablicami

Post autor: [r4] »

Deklarujesz zmienną "ile", ale jej nie definiujesz. Następnie próbujesz użyć jej do zadeklarowania rozmiaru tablicy -- to się nie powinno udać.

Przenieś linijkę deklarującą tablicę poniżej tej, gdzie pytasz użytkownika o jej rozmiar.
norvoles
Przebojowy Jelonek
Przebojowy Jelonek
Posty: 1113
Rejestracja: 04 sty 2008, 20:58
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Inne
Architektura: x86_64

Re: [C++] Błąd w programie z Tablicami

Post autor: norvoles »

W sumie to program działa prawidłowo, jeśli wpiszesz do tablicy co najwyżej tyle liczb, ile się pomieści w tablicy.
Generalnie lepiej byłoby użyć tablic dynamicznych. A jeszcze lepiej wektorów (vector).
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Re: [C++] Błąd w programie z Tablicami

Post autor: ethanak »

ogólnie to cała zabawa z programowaniem zaczyna się od tego, że instrukcje są wykonywane w jakiejś kolejności. jeśli użyjesz jako rozmiaru tablicy zmiennej zanim podstawisz do niej wartość to program nie wróżka i nie będzie wiedział, że pisząc zero masz na myśli 4 i grzecznie stworzy tablicę o rozmiarze zero. może naprawdę warto zacząć myśleć? wstaw deklarację tablicy we właściwe miejsce i zobacz co się stanie.
inna sptawa, że w twoim przypadku powinieneś użyć wektora.
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość