Cześć!
To mój pierwszy post, dlatego witam wszystkich :)
Mój problem powstał w wyniku wykonywania zadania domowego z lekcji Kurs C++ (#11). Założenie zadania domowego mówi o podaniu 5 liczb z których zostanie policzona średnia, a następnie wybierze liczbę najbardziej zbliżoną do średniej. Otóż zmodyfikowałem założenia i chciałbym aby to użytkownik wybrał ilość liczb wczytanych do programu. Teraz kod źródłowy, a po nim pytania:
#include <iostream>
using namespace std;
int main()
{
cout << "Ile liczb chcesz wprowadzic? Wpisz: ";
int ile_liczb;
cin >> ile_liczb;
float tablica[float(ile_liczb)]; float *wtablica=&tablica;
float liczba; float *wliczba=&liczba;
for (int i=0; i<ile_liczb; i++)
{
cout << "Wprowadz " << (i+1) << ". liczbe: ";
cin >> *wliczba;
*wtablica=*wliczba;
wtablica++;
}
return 0;
}
Oczywiście jest to początek programu, ale mam problem z rzutowaniem zmiennej otóż moja zmienna ile_liczb jest zmienną typu int równocześnie rozmiarem tablicy tablica typu float, ponieważ liczby wprowadzane do programu będą zmiennoprzecinkowe. Kompilator wyrzuca błąd przy linijce gdzie deklaruje tablicę oraz jej rozmiar, próba zmiany typu zmiennej nie pomaga.
||=== Build: Debug in zadanie (compiler: GNU GCC Compiler) ===|
...\main.cpp||In function 'int main()':|
...\main.cpp|12|error: size of array 'tablica' has non-integral type 'float'|
...\main.cpp|12|error: cannot convert 'float (*)[1]' to 'float*' in initialization|
||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
W ogóle zastanawia mnie to czemu rozmiar tablicy musi mieć taki sam typ jak tablica. rozmiar zawsze będzie intem?
Wiem, że problem można rozwiązać zmianą typu zmiennej ile_liczb z int na float, ale chciałbym rozwiązać ten problem inaczej, jak poprawnie zmienić typ zmiennej w momencie jej wykorzystania.
Dziękuje za sugestie :)