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

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

Δημοσ.
Μόλις τώρα, kaliakman είπε

Θες να εκτυπώσεις τον αριθμό ή το άθροισμα; 

μόνο τον αριθμό

τα πράγματα αλλάζουν αν ο χρήστης δώσει το -99

  • Απαντ. 36
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Δημοσ.

Με ψευδοκωδικα 

Set sum = 0

Set counter = 0

Set min,max...

Do while(input != -99)

   Set counter += 1

   Set sum += input

   .....

End while

Βασικα οπως ειπαν και τα παιδια απο πανω πρεπει να βαλεις τις μεταβλητες μεσα στο σωμα της do while. Αν μπορεις να καταλαβεις τι εγραψα σχεδον τελειωσες με την ασκηση

Δημοσ.
7 λεπτά πριν, najinblue3 είπε

Με ψευδοκωδικα 

Set sum = 0

Set counter = 0

Set min,max...

Do while(input != -99)

   Set counter += 1

   Set sum += input

   .....

End while

Βασικα οπως ειπαν και τα παιδια απο πανω πρεπει να βαλεις τις μεταβλητες μεσα στο σωμα της do while. Αν μπορεις να καταλαβεις τι εγραψα σχεδον τελειωσες με την ασκηση

τα έχω βάλει μέσα στο σώμα και πάλι δεν βγαίνει...τα παρατάω ..πραγματικά έχω φτάσει στο όριο..ατέλειωτες ώρες και δεν μπορώ να την γράψω...ευχαριστώ πολύ για το χρόνο σου και φυσικά και τα υπόλοιπα παιδια

Δημοσ. (επεξεργασμένο)
3 λεπτά πριν, mariamx83 είπε

τα έχω βάλει μέσα στο σώμα και πάλι δεν βγαίνει...τα παρατάω ..πραγματικά έχω φτάσει στο όριο..ατέλειωτες ώρες και δεν μπορώ να την γράψω...ευχαριστώ πολύ για το χρόνο σου και φυσικά και τα υπόλοιπα παιδια

για ποσταρε τι εκανες

Επεξ/σία από najinblue3
Δημοσ.
Μόλις τώρα, najinblue3 είπε

για ποσταρε τι εκανες

το έσβησα..τα νεύρα μου...κουράστηκα πάρα πολύ πραγματικά γι αυτή την άσκηση

 

1 λεπτό πριν, mariamx83 είπε

το έσβησα..τα νεύρα μου...κουράστηκα πάρα πολύ πραγματικά γι αυτή την άσκηση

 

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main ()

{
    int x,sum,min,max;
    float mo;
    system("CHCP 1253");
    system("CLS");
    
    x=0;
    sum=0;
    min=0;
    max=0;
    
    do
{
    printf("Δώσε ένα ακέραιο αριθμό ή -99\n");
    scanf("%d",&x);
        
}while (x!=-99);

 

 

 

μέχρι εδώ είναι οκ,το έχω δοκιμάσει και δουλεύει ..το μετά δεν μπορώ με τίποτα

Δημοσ.

Μεσα στην do-while πρεπει να αυξανεις τον counter καθε φορα κατα 1, οσο ο αριθμος δεν ειναι -99.

Για το αθροισμα καθε φορα προσθετεις τον αριθμο που δινει ο χρηστης, και στο τελος το διαιρεις με τον counter για να βρεις τον μεσο ορο.

Για το min-max καθε φορα πρεπει να τσεκαρεις αν το input ειναι μικροτερο η μεγαλυτερο αντιστοιχα απο το current min-max, και κρατας αυτο που σε ενδιαφερει.

Δημοσ.

jekinas etsi

 

float x=0;
printf('dose arithmo');
scanf('%f',&x);
if(x==-99)
return 0;

meta dineis times stis alles metablites
sum=0, numbers=0, max=x, min=x;
meta grafeis to while
while(x!=-99)
{
sum+=x;
numbers+=1;
if (x>max)
max=x;
if (x<min)
min=x;
printf('dose arithmo');
scanf('%f',&x);
}
meta tiponeis
printf('arithmoi = %f', numbers);
printf('mesos oros = %f', sum/numbers);
printf('max=%f',max);
printf('min=%f',min);

 

Δημοσ. (επεξεργασμένο)
25 λεπτά πριν, k33theod είπε

jekinas etsi

 



float x=0;
printf('dose arithmo');
scanf('%f',&x);
if(x==-99)
return 0;

meta dineis times stis alles metablites
sum=0, numbers=0, max=x, min=x;
meta grafeis to while
while(x!=-99)
{
sum+=x;
numbers+=1;
if (x>max)
max=x;
if (x<min)
min=x;
printf('dose arithmo');
scanf('%f',&x);
}
meta tiponeis
printf('arithmoi = %f', numbers);
printf('mesos oros = %f', sum/numbers);
printf('max=%f',max);
printf('min=%f',min);

 

δεν δέχεται τις τιμές των μεταβλητων...βγάζει error was not declared in this scope

7 λεπτά πριν, mariamx83 είπε

δεν δέχεται τις τιμές των μεταβλητων...βγάζει error was not declared in this scope

δούλεψε αλλά δεν μου βγάζει σωστά το μέσο όρο

 

Επεξ/σία από mariamx83
Δημοσ. (επεξεργασμένο)
5 ώρες πριν, mariamx83 είπε

δούλεψε αλλά δεν μου βγάζει σωστά το μέσο όρο

 


 

mesos_oros=(float)sum/numbers;        (Πρέπει να μετατρέψεις σε float, όπως γίνεται εδώ, αν τα sum και numbers τα έχεις δηλώσει ως integers.)

printf("O mesos oros einai %.2f", mesos_oros);      (Για να σου τυπωθεί με δύο δεκαδικά.)

Επεξ/σία από Vista32
Δημοσ. (επεξεργασμένο)

@k33theod

Επειδή αναφέρθηκε ότι δε μπορεί να γίνει με do while, προσωπικά βρίσκω πιο κομψή τη λύση με χρήση μίας boolean μεταβλητής που θα ελέγχει κάθε φορά αν έφτασε η ώρα για έξοδο από τη λούπα.

Προσωπικά, μου χτυπάει άσχημα στο μάτι που πρέπει σε 2 σημεία στον κώδικα να γίνει είσοδος από πληκτρολόγιο. Σε java θα έκανα το παρακάτω:

boolean procedure = true;
int num;
int sum = 0;
		
	do {
			Scanner console = new Scanner(System.in);
			System.out.println("Enter number :");
			num = console.nextInt();
			
			if(num == -99)
				procedure = false;
			else
			{
				sum = sum + num;
			}
			
		}
       while(procedure);
		
System.out.println(sum);

 

Επεξ/σία από Lanike71
Δημοσ. (επεξεργασμένο)
1 ώρα πριν, Lanike71 είπε

@k33theod

Επειδή αναφέρθηκε ότι δε μπορεί να γίνει με do while, προσωπικά βρίσκω πιο κομψή τη λύση με χρήση μίας boolean μεταβλητής που θα ελέγχει κάθε φορά αν έφτασε η ώρα για έξοδο από τη λούπα.

Προσωπικά, μου χτυπάει άσχημα στο μάτι που πρέπει σε 2 σημεία στον κώδικα να γίνει είσοδος από πληκτρολόγιο. Σε java θα έκανα το παρακάτω:



do {
			Scanner console = new Scanner(System.in);
			System.out.println("Enter number :");
			num = console.nextInt();
			
			if(num == -99)
				procedure = false;
			else
			{
				sum = sum + num;
			}
			
		}
       while(procedure);

 

Σίγουρα γίνεται και με do while ή με απειρο for και if και με διάφορους άλλους τρόπους. Όλα γίνονται. Απλά λέω το πιο ενδεδειγμένο (κατά τη γνώμη μου) χωρίς να σημαίνει ότι κάτι άλλο λάθος. Στο δικό σου  παράδειγμα το system.print θα εκτελεστεί σε κάθε περίπτωση, ενώ στην εκφώνηση λέει αν δώσει κατευθείαν -99 να μην τυπώσει τίποτα. Αυτό προφανώς θέλει if epanalipseis = 0 kai x = -99 return

 

 

 

 

Επεξ/σία από k33theod
Δημοσ.
18 ώρες πριν, mariamx83 είπε
Προσοχή: ΑΝ ο πελάτης δώσει αμέσως το -99, το πρόγραμμα δεν πρέπει να του λέει ΤΙΠΟΤΑ από τα 1, 2, 3 και 4.

υπαρχουν 2 while εκφρασεις για να υλοποιησεις μια επαναληψη. Δες τις διαφορες τους και χρησιμοποιησε οποια θεωρεις καταλληλοτερη καθε φορα.

Δημοσ.

Αν θυμάμαι καλά από τη θεωρία, όταν πρέπει αναγκαστικά να εκτελεστεί έστω και μία φορά η λούπα, χωρίς να ξέρεις το πόσες, πρέπει να πας με do...while.

Αν δεν κάνω λάθος.

Δημοσ.
1 ώρα πριν, Lanike71 είπε

Αν θυμάμαι καλά από τη θεωρία, όταν πρέπει αναγκαστικά να εκτελεστεί έστω και μία φορά η λούπα, χωρίς να ξέρεις το πόσες, πρέπει να πας με do...while.

Αν δεν κάνω λάθος.

Έτσι είναι. Και εδώ είναι μια περίτπωση που δεν θέλουμε το περιέχομενο του while να εκτελεστεί τουλάχιστον μία φορά.

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

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

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

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

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

Σύνδεση

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

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