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

Βοήθεια σε άσκηση C


mariamx83

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

  • Απαντ. 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 να εκτελεστεί τουλάχιστον μία φορά.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

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

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

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

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

Σύνδεση

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

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