Zainicjalizowanie rozmiaru tablicy zmienna

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)

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



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];


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ć.
4
IForgotMyPass napisał(a):
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ć.

0

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

3

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

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

 
#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;
}

1

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

0

Juz rozumiem :) dzieki za odpowiedzi :D

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