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

Pascal problem


sodeli

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

Δημοσ.

Καλησπέρα σε όλους,

Προσπαθώ να τελειώσω μια εργασια στην 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:

Δημοσ.

το repeat - until δεν θέλει begin - end?

 

υγ: δήλωσε το j σαν τοπική μεταβλητή. Αφού είναι μόνο μετρητές δεν χρειάζεται να είναι παράμετρος. Επίσης αφού ο πίνακας είναι global δεν τον βγάζεις και αυτόν από παράμετρο;

 

ελπίζω να βοήθησα.

Δημοσ.
Καλησπέρα σε όλους,

Προσπαθώ να τελειώσω μια εργασια στην 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 θέσεων εφόσον στο κομμάτι κώδικα που έγραψες δεν πρόκειται να γεμίσει ποτε.

Πάντως έκανα πιστή αντιγραφή του δικού σου κώδικα.

Ελπίζω να σε βοήθησα.

Δημοσ.

Ευχαριστώ για τις απαντήσεις παίδες:D

Τελικά το πρόβλημα λύθηκε με τον κώδικα του gtrifidis. Αν και δοκίμασα και τις αλλαγές που πρότεινε ο agmarios το πρόγραμμα τερμάτιζε και πάλι με την εισαγωγή του πρώτου αριθμού. Αρχίζω να υποψιάζομαι οτι το compiler που χρησιμοποιώ(Bloodshed Dev-Pascal) δημιουργεί το πρόβλημα αφού τόσο ο αρχικός μου κώδικας όσο και του agmarios είναι συντακτικά σωστοί...

Anyway τελος καλό, όλα καλά:-)

Δημοσ.

Θα ήταν προτιμότερο πάντως να χρησιμοποιήσεις τον compiler της Borland.

Turbo Pascal.Εδώ μπορείς να κατεβάσεις την έκδοση 5.5

http://dn.codegear.com/article/20803

Συνιστώ όμως την έκδοση 7, αν μπορέσεις να την βρείς και φυσικά μεταγενέστερα να πας σε Delphi.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

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