Alexlolz Δημοσ. 1 Δεκεμβρίου 2013 Δημοσ. 1 Δεκεμβρίου 2013 το προγραμμα πρεπει να δεχεται εναν αριθμο και να αναγνωριζει σε πια δεκαδα ανηκει απο 0 εως 50ο κωδικας μου ειναι ο εξης http://pastebin.com/3TVThiEk και για καποιο λογο μου βγαζει σφαλμα απο το πρωτο ELSE οπου εχει οτι νανε συμβολα ειναι προβλημα της κωδικοποιησης απο ελληνικα βασικα ειναι το μηνυμα ο αριθμος ανηκει στην 1-2-3 δεκαδα κλπ,ευχαριστω
bird Δημοσ. 1 Δεκεμβρίου 2013 Δημοσ. 1 Δεκεμβρίου 2013 Πρόσεξε που πρέπει να βάζεις ερωτηματικό και που όχι στα end των if... Δες εδώ αν έχεις απορία...
Bspus Δημοσ. 1 Δεκεμβρίου 2013 Δημοσ. 1 Δεκεμβρίου 2013 Νομιζω οτι δεν εχεις φωλιασει σωστα τα 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. Καλυτερη πρακτικη για πολλα ενδεχομενα οπως στην περιπτωση σου
migf1 Δημοσ. 3 Δεκεμβρίου 2013 Δημοσ. 3 Δεκεμβρίου 2013 Πέρα από τη χρήση ; πριν από else που υπέδειξε ο bird, το 1ο if σου έχει ξεφύγει και το έχεις βάλει κάτω από το begin. Παρεμπιπτόντως, νομίζω πως υποστηρίζει else if statements η standard Pascal (δεν είμαι σίγουρος, έχουν περάσει και 10ετίες ). Πάντως η 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 ) και ο καλύτερος τρόπος για αυτό είναι να βρεις μονάχος σου σε ποια σημεία και γιατί παραπονιέται ο compiler. Σημείωσε επίσης πως συνειδητά δεν έχω βάλει begins και ends στον κώδικα (δεν χρειάζονται για αυτή την άσκηση, όπως την έχεις ποστάρει, αλλά ίσως σας έχει πει να τα χρησιμοποιήσετε για εξοικείωση).
Alexlolz Δημοσ. 3 Δεκεμβρίου 2013 Μέλος Δημοσ. 3 Δεκεμβρίου 2013 Ευχαριστω για την απαντηση mig βασικα την pascal την κανουμε περισοτερο για εκμαθηση και ειναι και παναρχαια τωρα το begin και end το ειχα βαλει γιατι ετσι ειχα κανει μια παρομοια που το χριαζοταν και δν ειμουν σιγουρος
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα