N1ghtW0lf Δημοσ. 1 Φεβρουαρίου 2004 Δημοσ. 1 Φεβρουαρίου 2004 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
alkisg Δημοσ. 1 Φεβρουαρίου 2004 Δημοσ. 1 Φεβρουαρίου 2004 Διάβασα μόνο το συγκεκριμένο σημείο, δεν κοίταξα γενικά το πρόγραμμα: πρέπει να πεις if offer>it.price then additem(it) Το offer είναι ακέραιος, το it.price είναι ακέραιος, όμως με το item(it.price) που έγραψες του λες να μετατρέψει έναν ακέραιο σε record, που αυτό δεν γίνεται. Επίσης στην additem δηλώνεις σαν παράμετρο record οπότε δεν μπορείς να του περάσεις το offer που είναι ακέραιος.
N1ghtW0lf Δημοσ. 1 Φεβρουαρίου 2004 Μέλος Δημοσ. 1 Φεβρουαρίου 2004 πρέπει να πεις 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?
damn3 Δημοσ. 1 Φεβρουαρίου 2004 Δημοσ. 1 Φεβρουαρίου 2004 ERROR 26: TYPE MISMATCH Οι τύποι των παραμέτρων δεν είναι ίδιοι, πχ: συγκρίνεις ένα byte με ένα string ή πιο παραστατικά έναν ελέφαντα με ένα μυρμήγκι. Βασικά το ίδιο σου είπε και ο alkisg . Εάν το item(it.price) και ο,τι προσθέσεις εκεί δεν επιστρέψει Integer (ή είναι Integer) θα σου βγάζει συνέχεια Type Mismatch, γιατί δεν μπορεί να κάνει σύγκριση με ανόμια πράγματα. Δοκίμασε να βάλεις μια τρίτη μεταβλητή για να κάνεις την σύγκριση πχ: var temp: Integer; temp:= it.price; IF offer > temp then ....
N1ghtW0lf Δημοσ. 5 Φεβρουαρίου 2004 Μέλος Δημοσ. 5 Φεβρουαρίου 2004 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!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.