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

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


mariamx83

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

4 λεπτά πριν, k33theod είπε

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

Γιατί δε θέλουμε; Αφού λέει ότι δίνει από το πληκτρολόγιο αριθμούς, άπειρες φορές.

Η διαδικασία είναι "δίνω από το πληκτρολόγιο αριθμούς", ακόμα και αν ο πρώτος αριθμός τελικά είναι το -99.

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

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

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

39 λεπτά πριν, Lanike71 είπε

Γιατί δε θέλουμε; Αφού λέει ότι δίνει από το πληκτρολόγιο αριθμούς, άπειρες φορές.

Η διαδικασία είναι "δίνω από το πληκτρολόγιο αριθμούς", ακόμα και αν ο πρώτος αριθμός τελικά είναι το -99.

επειδη δεν πρεπει να σπανε και οι υπολοιποι κανονες, οπως και το να γινει σωστη αρχικοποιηση των τιμων.

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

Δημοσ. (επεξεργασμένο)

Οι αριθμοι ειναι απειροι δλδ να μην τους αποθηκεύσεις (σε λιστα, πινακα κλπ). Θα πρεπει να αποθηκεύεις σε μεταβλητές μόνο το τρέχων σύνολο αριθμών,  άθροισμα,  ελάχιστο, μέγιστο κλπ.

Αν εχεις διαβασει π.χ. εως τωρα 10 αριθμους με μεσο ορο = 1000  και μετα διαβασεις το 50 ποσο ειναι ο νεος μεσος ορος των 11 αριθμων;

 

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

Δημοσ. (επεξεργασμένο)

@Lanike71

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

Το σκεπτικό για μένα είναι όταν έχω βρόγχο τον κρατάω όσο πιο 'φτωχό' μπορώ. Νομίζω οι πράξεις που έβαλα είναι οι ελάχιστες δυνατές. Το

if(num == -99)
				procedure = false;
			

ασ πούμε το θεωρώ 'λάθος'. Θα εκτελεστεί 'άπειρες' φορές χωρίς λόγο.

Με το σκεπτικό ότι δεν μπορώ να αφαιρέσω κάποια πράξη από το while αν το εκτελέσω μία φορά θα μου δώσει ένα numbers, ένα sum  ένα max και ένα min που δεν χρειάζονται και θα εκτυπωθούν αν δεν αλλάξω κάτι στα print μετά το βρόγχο.. 

 

 

 

 

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

48 λεπτά πριν, k33theod είπε

@Lanike71

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

Το σκεπτικό για μένα είναι όταν έχω βρόγχο τον κρατάω όσο πιο 'φτωχό' μπορώ. Νομίζω οι πράξεις που έβαλα είναι οι ελάχιστες δυνατές. Το


if(num == -99)
				procedure = false;
			

ασ πούμε το θεωρώ 'λάθος'. Θα εκτελεστεί 'άπειρες' φορές χωρίς λόγο.

Με το σκεπτικό ότι δεν μπορώ να αφαιρέσω κάποια πράξη από το while αν το εκτελέσω μία φορά θα μου δώσει ένα numbers, ένα sum  ένα max και ένα min που δεν χρειάζονται και θα εκτυπωθούν αν δεν αλλάξω κάτι στα print μετά το βρόγχο.. 

 

 

 

 

Από αυτή την άποψη έχεις δίκιο, εκτελείται χωρίς λόγο.

Απλά, έχω ως κύριο μέλημα να έχω τον ελάχιστο κώδικα, με βοηθά να τον διαβάσω-κατανοήσω πιο γρήγορα.

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

Δημοσ. (επεξεργασμένο)
Αναφορά σε κείμενο

 

program Project2;
{$APPTYPE CONSOLE}
uses SysUtils;

var userval:string;
intval:int64;
totalSum:int64;
mesosoros:real;
maxvalue:Int64;
minvalue:Int64;
totalNumbers:Int64;


begin

maxvalue:=0;
minvalue:=high(int64);
totalNumbers:=0;


while true do
begin
write("Give Integer or -99")
readln(userval);
if userval<>'' Then
begin
intval:=StrtoInt64Def(userval,-99);

case intval of
-99:
begin
if totalNumbers=0 Then exit;
writeln('totalNumbers:'+formatfloat('0',totalNumbers));
writeln('minvalue:'+formatfloat('0',minvalue));
writeln('maxvalue:'+formatfloat('0',maxvalue));
writeln('mesosoros:'+formatfloat('0.00000',mesosoros));
readln;
halt;
end;
else
inc(totalNumbers);
if intval<minvalue then minvalue:=intval;
if intval>=maxvalue then maxvalue:=intval;
totalSum:=totalSum+intval;
mesosoros:=totalSum / totalNumbers;
end;
end;
end;


end.

 

Σε pascal αλλα η λογικη ειναι ιδια.

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

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

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

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

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

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

Σύνδεση

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

Συνδεθείτε τώρα

  • Δημιουργία νέου...