sodeli Δημοσ. 6 Αυγούστου 2007 Δημοσ. 6 Αυγούστου 2007 Καλησπέρα σε όλους, Προσπαθώ να τελειώσω μια εργασια στην pascal αλλά μου παρουσιάζεται ένα "κουφό" πρόβλημα. >program arrays; type arr=Array[1..100] of integer; Var a:arr; i,N:integer; Procedure input(var p:arr; var K,j:integer); begin Repeat writeln('Eisagete ton plithos twn arithmwn'); readln(K); until (K>=6) and (K<=49); For j:=1 to K do Begin writeln('eisagete arithmo'); readln(p[j]); end; For j:=1 to K do Begin writeln(p[j]); end; end; Begin input(a,N,i); end. Το παραπάνω πρόγραμμα δεν εμφανίζει κάποιο σφάλμα κατα το compiling, όμως όταν το τρέχω, αφού διαβάσει την πρώτη τιμή για τον πίνακα τερματίζει και με πετάει απ το πρόγραμμα. Το έχω γράψει άπειρες φορές απ την αρχή αλλά δεν μπορώ να δω που γίνεται το λάθος... Οποια βοήθεια ευπρόσδεκτη...:roll:
agmarios Δημοσ. 6 Αυγούστου 2007 Δημοσ. 6 Αυγούστου 2007 το repeat - until δεν θέλει begin - end? υγ: δήλωσε το j σαν τοπική μεταβλητή. Αφού είναι μόνο μετρητές δεν χρειάζεται να είναι παράμετρος. Επίσης αφού ο πίνακας είναι global δεν τον βγάζεις και αυτόν από παράμετρο; ελπίζω να βοήθησα.
Επισκέπτης Δημοσ. 6 Αυγούστου 2007 Δημοσ. 6 Αυγούστου 2007 Καλησπέρα σε όλους,Προσπαθώ να τελειώσω μια εργασια στην pascal αλλά μου παρουσιάζεται ένα "κουφό" πρόβλημα. >program arrays; type arr=Array[1..100] of integer; Var a:arr; i,N:integer; Procedure input(var p:arr; var K,j:integer); begin Repeat writeln('Eisagete ton plithos twn arithmwn'); readln(K); until (K>=6) and (K<=49); For j:=1 to K do Begin writeln('eisagete arithmo'); readln(p[j]); end; For j:=1 to K do Begin writeln(p[j]); end; end; Begin input(a,N,i); end. Το παραπάνω πρόγραμμα δεν εμφανίζει κάποιο σφάλμα κατα το compiling, όμως όταν το τρέχω, αφού διαβάσει την πρώτη τιμή για τον πίνακα τερματίζει και με πετάει απ το πρόγραμμα. Το έχω γράψει άπειρες φορές απ την αρχή αλλά δεν μπορώ να δω που γίνεται το λάθος... Οποια βοήθεια ευπρόσδεκτη...:roll: Ο παρακάτω κώδικας είναι γραμμένος σε Delphi αλλά πιστευω οτι θα σε βοηθήσει: >program Arrays; {$APPTYPE CONSOLE} uses SysUtils; Var Arr:Array [1..100] of integer; Plithos,i:integer; procedure GetNumbers; begin while not ((plithos>=6) and (plithos<=49)) do begin WriteLn('Eisagete to plithos ton arithmon:'); ReadLn(plithos); end; for i:=0 to Plithos-1 do begin WriteLn('Eisagete arithmo'); ReadLn(Arr[i]); end; WriteLn('Oi arithmoi pou eisagate einai oi parakatw:'); WriteLn('==========================================='); for i:=0 to Plithos-1 do begin Writeln(Arr[i]); end; end; begin GetNumbers; end. Αν και δεν βλέπω τον λόγο που χρησιμοποιείς πίνακα 100 θέσεων εφόσον στο κομμάτι κώδικα που έγραψες δεν πρόκειται να γεμίσει ποτε. Πάντως έκανα πιστή αντιγραφή του δικού σου κώδικα. Ελπίζω να σε βοήθησα.
sodeli Δημοσ. 6 Αυγούστου 2007 Μέλος Δημοσ. 6 Αυγούστου 2007 Ευχαριστώ για τις απαντήσεις παίδες Τελικά το πρόβλημα λύθηκε με τον κώδικα του gtrifidis. Αν και δοκίμασα και τις αλλαγές που πρότεινε ο agmarios το πρόγραμμα τερμάτιζε και πάλι με την εισαγωγή του πρώτου αριθμού. Αρχίζω να υποψιάζομαι οτι το compiler που χρησιμοποιώ(Bloodshed Dev-Pascal) δημιουργεί το πρόβλημα αφού τόσο ο αρχικός μου κώδικας όσο και του agmarios είναι συντακτικά σωστοί... Anyway τελος καλό, όλα καλά
Επισκέπτης Δημοσ. 6 Αυγούστου 2007 Δημοσ. 6 Αυγούστου 2007 Θα ήταν προτιμότερο πάντως να χρησιμοποιήσεις τον compiler της Borland. Turbo Pascal.Εδώ μπορείς να κατεβάσεις την έκδοση 5.5 http://dn.codegear.com/article/20803 Συνιστώ όμως την έκδοση 7, αν μπορέσεις να την βρείς και φυσικά μεταγενέστερα να πας σε Delphi.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.