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

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

Δημοσ.

το προγραμμα πρεπει να δεχεται εναν αριθμο και να αναγνωριζει σε πια δεκαδα ανηκει απο 0 εως 50ο κωδικας μου ειναι ο εξης http://pastebin.com/3TVThiEk και για καποιο λογο μου βγαζει σφαλμα απο το πρωτο ELSE

οπου εχει οτι νανε συμβολα ειναι προβλημα της κωδικοποιησης απο ελληνικα βασικα ειναι το μηνυμα ο αριθμος ανηκει στην 1-2-3 δεκαδα κλπ,ευχαριστω

Δημοσ.

Πρόσεξε που πρέπει να βάζεις ερωτηματικό και που όχι στα end των if...

Δες εδώ αν έχεις απορία...

Δημοσ.

Νομιζω οτι δεν εχεις φωλιασει σωστα τα else

 

Θα πρεπει να ειναι καπως ετσι

 

if .... then begin

....

end; else begin

 

if ... then begin

...

end; else begin

 

if ... then begin

...

end; else begin

...

end;

end;

end;

 

Μη δινεις τοσο σημασια στο πως στοιχιζω τον κωδικα αλλα στο πως πρεπει να ειναι φωλιασμενα τα statements

 

Μου φαινεται οτι εσυ εχεις τα επομενα else ξεκαρφωτα γι αυτο κολλαει

 

Ομ,ως πρεπει να σου πω οτι pascal τελευταια φορα που εγραψα ηταν 99 οποτε μπορει και να μην θυμαμαι καθολου τη συνταξη

 

Ψαξε επισης πως συντασσεται το case αντι για πολλαπλα if then else. Καλυτερη πρακτικη για πολλα ενδεχομενα οπως στην περιπτωση σου

Δημοσ.

Πέρα από τη χρήση ; πριν από else που υπέδειξε ο bird, το 1ο if σου έχει ξεφύγει και το έχεις βάλει κάτω από το begin.

 

Παρεμπιπτόντως, νομίζω πως υποστηρίζει else if statements η standard Pascal (δεν είμαι σίγουρος, έχουν περάσει και 10ετίες :P). Πάντως η Free Pascal υποστηρίζει, οπότε ο κώδικάς σου μπορεί να γραφτεί και κάπως έτσι (πρόσεξε ότι πριν από else δεν υπάρχουν ερωτηματικά)...

 

Κώδικας:

 

 

program askhsh( input, output );
var
	n: integer;
begin
	write( 'Δώστε αριθμό: ' );
	readln( n );

	(* οι παρενθέσεις στα παρακάτω if είναι προαιρετικές *)
	if ( n <= 0 ) then
		writeln( '0 ή αρνητικός' )

	else if ( n <= 10 ) then
		writeln( '1 - 10' )

	else if ( n <= 20 ) then
		writeln( '11 - 20' )

	else if ( n <= 30 ) then
		writeln( '21 - 30' )

	else if ( n <= 40 ) then
		writeln( '31 - 40' )

	else if ( n <= 50 ) then
		writeln( '41 - 50' )

	else if ( n > 50 ) then
		writeln( '51 ή μεγαλύτερος' );

	readln()
end.

 

ΥΓ1. Πριν από end νομίζω είναι προαιρετική η χρήση ; (δεν το θυμάμαι σίγουρα, στη Free Pascal έτσι είναι πάντως... δουλεύει δλδ και με τα δυο).

 

ΥΓ2. Καταλαβαίνω πως σου δίνω στο πιάτο την άσκηση, αλλά αφενός είναι πάαααρα πολύ τετριμμένη, κι αφετέρου (και πιο σημαντικό) αν δεν κάτσεις να τη γράψεις μόνος σου χωρίς να κοιτάζεις τη λύση, μόνο τον εαυτό σου θα βλάψεις, μελλοντικά ;) Υποθέτω σας την έχουν βάλει ειδικά για να εξοικειωθείτε με την (ψιλό-χοντρό σπαστική σύνταξη της Pascal :P) και ο καλύτερος τρόπος για αυτό είναι να βρεις μονάχος σου σε ποια σημεία και γιατί παραπονιέται ο compiler.

 

Σημείωσε επίσης πως συνειδητά δεν έχω βάλει begins και ends στον κώδικα (δεν χρειάζονται για αυτή την άσκηση, όπως την έχεις ποστάρει, αλλά ίσως σας έχει πει να τα χρησιμοποιήσετε για εξοικείωση).

Δημοσ.

Ευχαριστω για την απαντηση mig βασικα την pascal την κανουμε περισοτερο για εκμαθηση και ειναι και παναρχαια τωρα το begin και end το ειχα βαλει γιατι ετσι ειχα κανει μια παρομοια που το χριαζοταν και δν ειμουν σιγουρος

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

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

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

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

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

Σύνδεση

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

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