Πρόβλημα σε Turbo Pascal [Solves]

Συζητήσεις σχετικές με την Delphi και την πρόγονη της Pascal

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
mariosal
Honorary Member
Δημοσιεύσεις: 1473
Εγγραφή: 09 Νοέμ 2007 23:55

Πρόβλημα σε Turbo Pascal [Solves]

Δημοσίευση από mariosal » 05 Μαρ 2008 20:44

Βρε, παιδιά. Έχω φτιάξει ένα πρόγραμμα και είναι απολύτως λογικό. Το είδα με το δάσκαλο μου, που μου κάνει πληροφορική και αυτός λέει το ίδιο! Είναι ένα πρόγραμμα ταξινόμισης και ταξινομεί τον αριθμό των ψηφίων που πληκτρολόγισες.

PROGRAM MITSOS (INPUT, OUTPUT);

USES CRT;
VAR A:CHAR;
VAR FABERCASTELL,MARIOSALDINGER: ARRAY [1..10] OF INTEGER;
VAR MITSARAS:ARRAY [1..10] OF ARRAY [1..100] OF CHAR;

VAR B,C,D,E:INTEGER;

Procedure Wait;
Begin
Write('Πατήστε enter για τέλος');
Readln;
End;


Procedure BubbleSort(al : Array of Integer; f : Integer);
Var i, j, p:integer;
Begin
For i:= f-1 DownTo 1 do
For j:=2 to i do

If (al[j-1] > al[j]) then
Begin;
p := al[j-1];
al[j-1] := al[j];
al[j] := p;
END;
enD;



BEGIN
CLRSCR;
WRITELN ('Παρακαλώ δηλώστε πόσα αλφαριθμητικά(το πολύ μέχρι το 10) θα πληκτρολογίσετε');
READLN (B);
C:=1;
WHILE ((B>10) OR (B<1)) DO BEGIN
WRITELN ('Παρακαλώ δηλώστε έναν αριθμό από το 1 μέχρι το 10');
READLN (B);
END;
WRITELN ('Γράψτε τα αλφαριθμητικά);
WRITELN ('Πατήστε \ για να τελειώσετε ένα αλφαριθμητικό');
WHILE C<=B DO BEGIN
D:=1;
A:=READKEY;
WHILE D<100 DO BEGIN
IF A<>'\' THEN BEGIN
MITSARAS[C][D]:=A;
A:=READKEY;
D:=D+1;
END
ELSE BEGIN

FABERCASTELL[C]:=D-1;

D:=100;

WRITELN ('Προχωρίστε στο επόμενο'); END;
END;
WRITELN (FABERCASTELL[C]);
C:=C+1;
END;
MARIOSALDINGER:=FABERCASTELL;
BubbleSort(FABERCASTELL,B);
WRITELN ('Τα αλφαριθμητικά που πληκτρολογίσατε είναι τα εξής:');
while B>0 do begin
writeln(FABERCASTELL);
B:=B-1;
end;
Wait;
END.

Αυτό εδώ είναι το πρόγραμμα. Δε βρίσκει κανένα λάθος. Το έτρεξα και με Free Pascal Και με Pascal Dev. Δε βρήκε κανένα λάθος, αλλά παρόλα αυτά αντί να ταξινομεί τους αριθμούς τους βγάζει με την αντίστροφη μεριά από αυτήν που τους πληκτρολόγισες.

π.χ. πατάς:

265
52
1000

Σου το βγάζει

1000
52
265
Τελευταία επεξεργασία από το μέλος mariosal την 05 Απρ 2008 14:12, έχει επεξεργασθεί 1 φορά συνολικά.

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Πρόβλημα σε Turbo Pascal [Solves]

Δημοσίευση από dva_dev » 06 Μαρ 2008 01:27

Ο κώδικας που δείχνεις εδώ δεν περνάει από compilation.
Αν διορθώσεις τα συντακτικά λάθη, μένει να διορθώσεις τον αλγόριθμο που έχει προβλήματα, το bubble sort που δεν δουλεύει σωστά, και είσαι σχεδόν έτοιμος.

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

Επίσης εάν δεν απευθύνεσαι σε τυφλούς, καλό θα ήταν ο χρήστης να βλέπει τι πληκτρολογεί.
Χρησιμοποιώντας την READKEY, μήπως πρέπει να αρχίσεις να σκέφτεσαι και την περίπτωση που ο χρήστης έκανε λάθος/άλλαξε γνώμη και θέλει να πληκτρολογήσει άλλο χαρακτήρα; Πρέπει να μπείς στην λογική ότι το μόνο που έχεις στη διάθεση σου έτοιμα είναι χαρακτήρες οι οποίοι πάντα/μόνο εισάγονται. Ολα τα άλλα πρέπει να τα φτιάξεις/μετατρέψεις μόνος σου.

ΥΓ:
Το '\' για να τερματίζει την είσοδο του αριθμού είναι πραγματικά πρωτότυπη σκέψη, δεν το έχω ξανασυναντήσει. :o
Τα περισσότερα από αυτά που πας να κάνεις, τα έχει κάνει άλλος πριν από σένα, για σένα, και τα έχει βάλει στην βιβλιοθήκη crt, την οποία χρησιμοποιείς κιόλας, άρα τα έχεις διαθέσιμα.

mariosal
Honorary Member
Δημοσιεύσεις: 1473
Εγγραφή: 09 Νοέμ 2007 23:55

Πρόβλημα σε Turbo Pascal [Solves]

Δημοσίευση από mariosal » 28 Μαρ 2008 18:07

Τελικά έβαλα τον QuickSort και όλα μια χαρά. Solved.

Απάντηση

Επιστροφή στο “Delphi, Pascal”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες