Alokacja pamięci problem z rozmiarem tablicy

0

Witam, mam taki problem, że gdy wpisuje rozmiar tablicy w programie powyżej 8 to i tak program każe wpisać max. 8 elementów tej tablicy. Gdy wpisuje np. rozmiar tablicy 5 to każe wpisać 5 elementów, ale gdy już rozmiar wpisze 9 to max 8. Co może być nie tak? Oto kod:

#include <stdio.h>
#include <conio.h>
#include <iostream>
using namespace std;

int main()
 {
 	
int ile, tablica[ile], i;


cout << "Podaj wielkosc tablicy: ";
cin >> ile;
int *tab = new int[ ile ];
 
  for (i=0;i<ile;++i)
  {
     cout <<"Podaj "<<i+1<<". element tablicy: ";
     cin >>tablica[i];
     cin.ignore();
  }
 
 
  cout <<endl<<"Oto tablica: ";
  for (i=0;i<ile;++i)
     cout <<tablica[i]<<' ';
 

delete[] tab;

 return 0;
 }


0

tablica i tab to różne zmienne. tablica to VLA, czyli coś co w poprawnym C++ nie występuje. Szczególnie, gdy jest inicjalizowane wartością, która nie ma sensu (ile jest niezainicjalizowane w momencie definicji tablica)

0
kq napisał(a):

tablica i tab to różne zmienne. tablica to VLA, czyli coś co w poprawnym C++ nie występuje. Szczególnie, gdy jest inicjalizowane wartością, która nie ma sensu (ile jest niezainicjalizowane w momencie definicji tablica)

Hej, a mogę prosić o wskazanie co konkretnie trzeba poprawić? Jeszcze aż tak tego nie ogarniam :D jak zmieniam tab na tablica i na odwrót to wyskakuje błąd [Error] conflicting declaration 'int* tab' więc nie wiem co trzeba zrobić, żeby to była ta sama zmienna. I tą zmienną 'ile' gdzie powinnam przenieść w takim razie? Bo jak coś kombinuje to błąd wywala...:(

2

Wywal wszystkie użycia i deklarację tablica

0
kq napisał(a):

Wywal wszystkie użycia i deklarację tablica

Jakie użycia? Jak wywalę tą deklaracje to mi kod nie będzie w ogóle działać.

2

Wszystkie użycia, używaj tylko tab. A tab najlepiej zastąpić std::vector, ale pierw zrób aby działało.

0
kq napisał(a):

Wszystkie użycia, używaj tylko tab. A tab najlepiej zastąpić std::vector, ale pierw zrób aby działało.

Wybacz, ale dla laika to jest niezrozumiałe. Mam wywalić wszystkie zmienne czy jak?

2

Masz dwie zmienne - tablica i tab - które są odpowiedzialne za to samo. Używaj tylko tab, a tablica usuń.

0
kq napisał(a):

Masz dwie zmienne - tablica i tab - które są odpowiedzialne za to samo. Używaj tylko tab, a tablica usuń.

Aaa no i widzisz teraz to się dogadaliśmy :D dziękuję bardzo za pomoc :)

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