sk8harddiefast Δημοσ. 6 Νοεμβρίου 2011 Δημοσ. 6 Νοεμβρίου 2011 Γεια σας Φτιαχνω ενα προγραμμα που θα υπολογιζει τον δεικτη μαζας σωματος και θα μας λεει αν εχουμε φυσιολογικο βαρος, αν ειμαστε υπερβαροι κλπ Το προβλημα ειναι πως σκαλωνει οταν του δεινω τα κιλα (απο εκει μεχρι εκει) > #include <stdio.h> main () { //dms= deikths_mazas_swmatos int varos; float ypsos, dms; printf ("Dwse to varos sou:"); scanf ("%d", &varos); printf ("Dwse to ypsos sou:"); scanf ("%f", &ypsos); dms= varos / (ypsos*ypsos); printf ("To varos pou dhlwses einai: %d\n", varos); printf ("To ypsos pou dhlwses einai: %1.2f\n", ypsos); printf ("O deikth mazas tou swmatos sou einai: %1.2f\n", dms); if (dms<=18.5) { printf ("Leipovarhs") } else if (dms>=18.6<=24.9) { printf ("Fysiologikos"); } else if (dms>=25<=29.9) { printf ("Ypervaros"); } else { printf ("Paxysarkos"); } } O compiler μου δεινει: > Cprogramming.c:23: warning: comparisons like X<=Y<=Z do not have their mathematical meaning Cprogramming.c:27: warning: comparisons like X<=Y<=Z do not have their mathematical meaning Πως δηλωνω την συγκριση? Βρηκα την λυση > #include <stdio.h> main () { //dms= deikths_mazas_swmatos int varos; float ypsos, dms; printf ("Dwse to varos sou:"); scanf ("%d", &varos); printf ("Dwse to ypsos sou:"); scanf ("%f", &ypsos); dms= varos / (ypsos*ypsos); printf ("To varos pou dhlwses einai: %d\n", varos); printf ("To ypsos pou dhlwses einai: %1.2f\n", ypsos); printf ("O deikth mazas tou swmatos sou einai: %1.2f\n", dms); if (dms<=18.5) { printf ("Eisai Leipovarhs\n"); } else if ((dms>=18.6) && (dms<=24.9)) { printf ("Eisai Fysiologikos\n"); } else if ((dms>=25) && (dms<=29.9)) { printf ("Eisai Ypervaros\n"); } else { printf ("Eisai Paxysarkos\n"); } pause(); }
mtsouk Δημοσ. 6 Νοεμβρίου 2011 Δημοσ. 6 Νοεμβρίου 2011 Το παρακάτω δεν είναι C: (dms>=18.6<=24.9) Πρέπει να το γράψεις: (dms>=18.6 && dms<=24.9) φιλικά,
migf1 Δημοσ. 6 Νοεμβρίου 2011 Δημοσ. 6 Νοεμβρίου 2011 Γιατί double αντί για float; Δεν βλέπω να χειρίζεται πολύ μεγάλες τιμές αυτό το προγραμματάκι.
nilosgr Δημοσ. 6 Νοεμβρίου 2011 Δημοσ. 6 Νοεμβρίου 2011 Γιατί double αντί για float; Δεν βλέπω να χειρίζεται πολύ μεγάλες τιμές αυτό το προγραμματάκι. Εδω μπορει να χαθει η ακριβεια: >dms= varos / (ypsos*ypsos); EDIT: Κανονικα και το βαρος επρεπε να ειναι double
MitsakosGR Δημοσ. 6 Νοεμβρίου 2011 Δημοσ. 6 Νοεμβρίου 2011 Δεδομένου ότι θέλει να υπολογίσει τον δείκτη μάζας σώματος η ακρίβεια του float είναι υπέρ αρκετή.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα