ďťż

Ładny brzuch

Witam Was. Otóż mam pewien problem. Może podam odrazu kod:
int main() { float termA[180]; float termB[180]; float min[180]; float max[180]; for( int i=0; i<180; i++ ) { // trojkat terma A if( i >= 0 && i <= 40 ) { termA[i] = (40 - i)/(40 - 0); } //trapez terma B else if( i >= 20 && i <= 40 ) { termB[i] = ( i - 20 ) / ( 40 - 20 ); } else if( i >=40 && i <= 60 ) { termB[i] = 1; } else if( i >= 60 && i <= 90 ) { termB[i] = ( 90 - i ) / ( 90 - 60 ); } }

Potem sobie pisze żeby mi wyświetlił termA. Wyniki mi zaokrągla do liczby całkowitej. Czyli jak jest 0.332 to mi pokazuje samo 0 :/ System z jakiego korzystam to Ubuntu.
Próbowałem tez inaczej dzieliłem zwykłe liczby float ze soba i wynik tez mi zaokrąglony podaje. Więc dodałem cout.precision ale to też nic nie dało. Zalezy mi na tym aby wynik pokazywał zmiennoprzecinkowy a nie liczbe całkowitą. Bardzo prosze o pomoc

Pozdrawiam



pomysł: konwersja jawna na wynik typu float. Zamiast:
termA[i] = (40 - i)/(40 - 0)
spróbuj:
termA[i] = (float)((40 - i)/(40 - 0)).
Zauważ też, że operacje matematyczne, które napisałeś w kodzie, to tak naprawdę wykonujesz na zmiennych typu całkowitego (iterator typu int i sposób zapisu liczb też jako całkowite, a nie np. 40.0)

//edit: ten kod mi już zamiast zer pokazuje liczby w formacie zmiennoprzecinkowym:
float termA[180]; float termB[180]; float min[180]; float max[180]; for( int i=0; i<180; i++ ) { // trojkat terma A if( i >= 0.0 && i <= 40.0 ) { termA[i] = (float)((40.0 - i)/(40.0 - 0.0)); }

Działa. Dziekuję bardzo za szybka odpowiedź. Pozdrawiam :)

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •