Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα, έχω ένα θέμα με τον παρακάτω κώδικα, Θέλω να τον κάνω να έχει ένα εύρος από 0-20 (πχ) στις τιμές που θα δίνει ο χρήστης, όχι στο πεδίο num αλλά στο value.

 

>#include <stdio.h>

void main (void)
{
int num, value;
int i=0, sum=0;
      printf ("Plithos mathimaton:"); 
      scanf("%d",&num);
          while(i<num)
           {
           printf ("Vathmos mathimatos %d : ",i+1);
           scanf  ("%f",&value);
           sum +=value;
           i++;
                     }     
double m_o = 0;
m_o = (sum/num);
printf ("O M.O einai: %f\n", m_o);
getch();
}

 

*Ο κώδικας δεν είναι εντελώς δικός μου.

Δημοσ.

Στην ουσια λοιπον θες αλλο ενα while , μια λουπα δηλαδη που θα τρεχει οσο ο χρηστης δινει τιμη εκτος ευρους.

Δημοσ.

Αυτό που λέει ο nick γύρω από την scanf ( value ) με έλεγχο...

 

>scanf("%d",&num);
          while(i<num)

 

Ανάμεσα εδώ δηλαδή;

Δημοσ.

Εμφωλευμενο μεσα στο αλλο while, Πανω απο την scanf

>
while(true) {
 scanf  ("%f",&value);
 if (value>0 && value<20)
	break;
else
ektypose " metaksy 0 kai 20"
}

Δημοσ.

Καλησπέρα, έχω ένα θέμα με τον παρακάτω κώδικα, Θέλω να τον κάνω να έχει ένα εύρος από 0-20 (πχ) στις τιμές που θα δίνει ο χρήστης, όχι στο πεδίο num αλλά στο value.

 

>#include <stdio.h>

void main (void)
{
int num, value;
int i=0, sum=0;
      printf ("Plithos mathimaton:"); 
      scanf("%d",&num);
          while(i<num)
           {
           printf ("Vathmos mathimatos %d : ",i+1);
           scanf  ("%f",&value);
           sum +=value;
           i++;
                     }     
double m_o = 0;
m_o = (sum/num);
printf ("O M.O einai: %f\n", m_o);
getch();
}

 

*Ο κώδικας δεν είναι εντελώς δικός μου.

 

Δεν θυμαμαι καθολου κωδικα έχω να γραψω καμια πενταετια :-D Ετσι όπως ειναι βάλε ενα if ωστε μετά το scanf ("%f",&value) όπου αν ειναι το f ανάμεσα στο 0 - 20 θα εκτελει αυτον τον κώδικα sum +=value; i++; αν όχι θα εμφανιζει μια printf (" Aπο 0 - 20 ειπαμε ρε μακακα, δωσε ξανα αριθμο");.

Δημοσ.

Στην ουσία θέλεις κάτι τέτοιο, μέσα στην while που ήδη έχεις.

 

>do
{

// Εμφάνιση μηνύματος & είσοδος τιμής.

} while (value < 1 || value > 20);

 

Υπόψιν. Το sum += value; και το i++ θα πρέπει να εκτελεστούν μόνο σε είσοδο έγκυρου αριθμού, οπότε μένουν έξω από την do-while.

 

--------------------

 

Σημ.1: Καλό θα ήταν να βάλεις και ένα μήνυμα σε περίπτωση εισαγωγής μη-έγκυρου αριθμού.

 

Σημ.2: Εάν θυμάμαι καλά πως λειτουργεί, θα αντιμετωπίσεις ένα πρόβλημα με τον buffer της scanf(). Δε σου λέω τι όμως.

Δημοσ.

Δεν καταλαβαίνω τι ακριβώς θές όποτε θα προσπαθήσω να μαντέψω

 

Scenario A) αν η τιμή είναι εκτός ορίων ξαναρωτάει

 

#include <stdio.h>

 

void main (void)

{

int num, value;

int i=0, sum=0;

printf ("Plithos mathimaton:");

scanf("%d",&num);

while(i<num)

{

printf ("Vathmos mathimatos %d : ",i+1);

scanf ("%f",&value);

if (value>=0& value<=20) {

sum +=value;

i++;

}

else { "mhnuma pou leei xapaprospathhse"

}

}

double m_o = 0;

m_o = (sum/num);

printf ("O M.O einai: %f\n", m_o);

getch();

}

[/b][/b]

Scenario B) αν η τιμή είναι εκτός ορίων την φράσει

 

#include <stdio.h>

 

void main (void)

{

int num, value;

int i=0, sum=0;

printf ("Plithos mathimaton:");

scanf("%d",&num);

while(i<num)

{

printf ("Vathmos mathimatos %d : ",i+1);

scanf ("%f",&value);

if (value<0) {value =0;}

if (value>20) {value =20;}

sum +=value;

i++;

}

double m_o = 0;

m_o = (sum/num);

printf ("O M.O einai: %f\n", m_o);

getch();

}

Δημοσ.
>#include <stdio.h>

void main (void)
{
int num, value;
int i=0, sum=0;
      printf ("Plithos mathimaton:"); 
      scanf("%d",&num);
          while(i<num)
           {
           printf ("Vathmos mathimatos %d : ",i+1);
    do{
              scanf  ("%f",&value);
    }while((value>20)||(value<0));
           sum +=value;
           i++;
                     }     
double m_o = 0;
m_o = (sum/num);
printf ("O M.O einai: %f\n", m_o);
getch();
}

Δημοσ.

Στην ουσία θέλεις κάτι τέτοιο, μέσα στην while που ήδη έχεις.

 

>do
{

// Εμφάνιση μηνύματος & είσοδος τιμής.

} while (value < 1 || value > 20);

 

Υπόψιν. Το sum += value; και το i++ θα πρέπει να εκτελεστούν μόνο σε είσοδο έγκυρου αριθμού, οπότε μένουν έξω από την do-while.

 

--------------------

 

Σημ.1: Καλό θα ήταν να βάλεις και ένα μήνυμα σε περίπτωση εισαγωγής μη-έγκυρου αριθμού.

 

Σημ.2: Εάν θυμάμαι καλά πως λειτουργεί, θα αντιμετωπίσεις ένα πρόβλημα με τον buffer της scanf(). Δε σου λέω τι όμως.

 

Μήπως αυτό σε βοηθήσει να μιλήσεις; :P

 

euro-note-500.jpg

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...