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

Pascal program


N1ghtW0lf

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

Δημοσ.

Exw ena problimataki se ena programma pascal pou exw na ftiaksw...

 

Gia ena event prepei na katagrafw mesw tou programmatos kiniseis pou kanoun kapioi, px: na agorazoun antikeimena, na kanoun prosfores na blepoun tis prosfores ktl.

 

Exw kollhsei omws twra sto shmeio pou an kapoios 8elei na dei tin prosfora kapoiou na dhlwsei auksimenh prosfora gia na agorasei to proion...

 

Exw grapsei auta:

 

PROGRAM charity_event;

 

USES wincrt;

 

CONST msg1 = ' Add another(y/n)? ' ;

 

TYPE item=RECORD

code:integer;

descr:string[20];

price:integer;

name:string[30];

END;

 

itemfile=FILE OF item;

 

VAR choice:integer;

itemsale:itemfile;

answ:char;

it:item;

offer:integer;

 

FUNCTION validyn(p:char):boolean;

 

BEGIN

validyn:= p IN ['Y', 'y', 'N', 'n'];

END;

 

 

PROCEDURE additem(VAR p:itemfile);

VAR loc_it:item;

BEGIN

write('Enter your name: ');

readln(loc_it.name);

write('Code?');

readln(loc_it.code);

write('Description? ');

readln(loc_it.descr);

write('Price?');

readln(loc_it.price);

write(p, loc_it);

END;

 

PROCEDURE getvalidyn(VAR a:char; c:string);

 

BEGIN

write©;

readln(a);

WHILE NOT validyn(a) DO

BEGIN

writeln('Invalid Answer!');

write©;

readln(a);

END;

END;

 

PROCEDURE displayitem(p:item);

BEGIN

writeln;

writeln('Name: ', p.name);

writeln('Code: ', p.code);

writeln('Description: ', p.descr);

writeln('Price: ', p.price);

 

END;

 

 

 

 

BEGIN (*Main Program*)

 

assign(itemsale, 'C:\itemsdb.dat');

 

writeln('Type the number of your option...');

writeln('1.Create a new file');

writeln('2.Add a new item');

writeln('3.Display items for sale');

writeln('4.Make an offer for an item');

write('Enter your choice: ');

readln(choice);

 

CASE choice OF

 

1: BEGIN

rewrite(itemsale);

 

REPEAT

additem(itemsale);

getvalidyn(answ, msg1);

 

UNTIL answ IN ['N','n'];

 

close(itemsale);

END;

 

2: BEGIN

reset(itemsale);

seek(itemsale, filesize(itemsale));

 

REPEAT

additem(itemsale);

write('Add another? (Y\N)?');

getvalidyn(answ,msg1);

 

UNTIL

answ IN ['N','n'];

 

close(itemsale);

END;

 

3: BEGIN

reset(itemsale);

WHILE NOT EOF(itemsale) DO

BEGIN

read(itemsale, it);

displayitem(it);

END;

CLOSE (itemsale);

 

END;

 

4: BEGIN

reset(itemsale);

read(itemsale, it);

displayitem(it);

writeln('Place Your Offer for an item:' );

readln(offer);

IF offer > item(it.price)

THEN additem(offer.price)

 

END;

 

END;

 

END.

 

Sto shmeio IF offer>item(it.price) bgazei TYPE mismatch (ti einai auto?)

Ti exw kanei la8os?Pws 8a to kataferw na diabazei tin prosfora pou kanei o xrhsths kai na koitaei an einai megaluterh apo tin prosfora pou exei kanei kapoios proigoumenos kai an einai megaluterh i prosfora tou xrhsth na tin apo8ikeuei sto antistoixo shmeio pou htan. dhladh sto price tou record...

 

 

Ka8e boh8eia euprosdekth...

N1ghtW0lf

Δημοσ.

Διάβασα μόνο το συγκεκριμένο σημείο, δεν κοίταξα γενικά το πρόγραμμα: πρέπει να πεις if offer>it.price then additem(it)

Το offer είναι ακέραιος, το it.price είναι ακέραιος, όμως με το item(it.price) που έγραψες του λες να μετατρέψει έναν ακέραιο σε record, που αυτό δεν γίνεται. Επίσης στην additem δηλώνεις σαν παράμετρο record οπότε δεν μπορείς να του περάσεις το offer που είναι ακέραιος.

Δημοσ.
πρέπει να πεις if offer>it.price then additem(it)

 

 

file alkisg to dokimasa auto pou les alla den leitourgei.

To eixa dokimasei kai balei etsi eksarxhs giati kserw oti to ena einai akeraios kai to allo record.Sunexizei na bgazei to idio problem sto compiling (ERROR 26: TYPE MISMATCH) ...Ti einai auto kserei kanenas?

Ti la8os exw kanei?

Δημοσ.

ERROR 26: TYPE MISMATCH

 

Οι τύποι των παραμέτρων δεν είναι ίδιοι, πχ: συγκρίνεις ένα byte με ένα string ή πιο παραστατικά έναν ελέφαντα με ένα μυρμήγκι. Βασικά το ίδιο σου είπε και ο alkisg . Εάν το item(it.price) και ο,τι προσθέσεις εκεί δεν επιστρέψει Integer (ή είναι Integer) θα σου βγάζει συνέχεια Type Mismatch, γιατί δεν μπορεί να κάνει σύγκριση με ανόμια πράγματα. Δοκίμασε να βάλεις μια τρίτη μεταβλητή για να κάνεις την σύγκριση πχ:

 

var temp: Integer;

 

temp:= it.price;

IF offer > temp then ....

Δημοσ.
ERROR 26: TYPE MISMATCH

 

Οι τύποι των παραμέτρων δεν είναι ίδιοι' date=' πχ: συγκρίνεις ένα byte με ένα string ή πιο παραστατικά έναν ελέφαντα με ένα μυρμήγκι. Βασικά το ίδιο σου είπε και ο alkisg . Εάν το item(it.price) και ο,τι προσθέσεις εκεί δεν επιστρέψει Integer (ή είναι Integer) θα σου βγάζει συνέχεια Type Mismatch, γιατί δεν μπορεί να κάνει σύγκριση με ανόμια πράγματα. Δοκίμασε να βάλεις μια τρίτη μεταβλητή για να κάνεις την σύγκριση πχ:

 

var temp: Integer;

 

temp:= it.price;

IF offer > temp then ....[/quote']

 

 

Eyxaristw polu paidia to problima lu8ike.

Brhka tin lush!

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

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

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