Zainicjalizowanie rozmiaru tablicy zmienna

Zainicjalizowanie rozmiaru tablicy zmienna
balti
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 156
0

Dlaczego nie moge zainicjalizowac rozmiaru tablicy zmienna (rozmiar). Taki blad mam error: expression in new-declarator must have integral or enumeration type|
(fragment kodu)

Kopiuj
 
float rozmiar;
cin >> rozmiar;
float tab [rozmiar] //float* tab = new float [rozmiar];  Nie dziala zadna z tych instrukcji



IM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 46
1
X-on napisał(a):

Rozmiar tablicy musi być stałą całkowitą większą od zera, znaną już w trakcie kompilacji.

Bzdura.

balti napisał(a):

Taki blad mam error: expression in new-declarator must have integral or enumeration type|

Komunikat mówi, że nie możesz użyć liczby zmiennoprzecinkowej do ustalenia rozmiaru tablicy.

```cpp

size_t n;
cin >> n;

int array[n];

Kopiuj

Powyższy kod działa. Przy czym miej na uwadze, że jeśli `n` będzie za duże, to przepełnisz stos. Zamiast alokować tablice, których rozmiar jest nieznany na stosie, użyj `new`.</del>

**EDIT:** Ponieważ w zasadzie nie wiem, czy to jest zgodne ze standardem, a @spartanPAGE ułamek sekundy temu usunął komentarz sugerujący, że nie, to postanowiłem chwilowo swój post pokreślić.
twonek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2500
4
IForgotMyPass napisał(a):
Kopiuj
size_t n;
cin >> n;

int array[n];

Powyższy kod działa.

Tyle że jest niezgodny ze standardem, więc nie należy go używać.

balti
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 156
0

Czyli jak chce stworzyc dynamicznie tablice ale chce zeby rozmiar byl podany przez uzytkownika podczas uruchomienia programu to jak to zrobic ?

IM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 46
3

Możesz użyć operatora new. Ale najlepiej std::vector, który za Ciebie zadba o alokację / dealokację pamięci w odpowiednim czasie.

balti
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 156
0

Takie cos nie przejdzie bo kompilator znowu wywala blad (kompilator "mowi" , ze musi byc liczba calkowita) . Chcialem po prostu w funkcji stworzyc dynamiczna tablice za pomoca liczby wprowadzonej przez uzytkowka.
#include <iostream>

using namespace std;
float srednia(float rozmiar)
{
float* tab = new float [rozmiar];
return //(cos tam zwroci)
}
int main()
{
float n;

cin >> n;

srednia(n);
return 0;

}

Czyli

Kopiuj
 
#include <iostream>

using namespace std;
float srednia(int rozmiar)
{
    float* tab = new float [rozmiar]; //takie cos by juz przeszlo.
}
int main()
{
    int n;
   
    cin >> n;

    srednia(n);
    return 0;
}

spartanPAGE
  • Rejestracja: dni
  • Ostatnio: dni
1

Matematyka, liczby naturalne się kłaniają :-P tzw te do liczenia i kolejności

balti
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 156
0

Juz rozumiem :) dzieki za odpowiedzi :D

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.