Ontola > Elektronika > diskuze
| Nahlásit

Program v Pascalu, pomůžete s opravou?

Háže mi to chybu a moc tomu nerozumím. Je to program na převádění hmotnostních jednotek a nějak to blbne. Byla bych moc ráda za opravu mé práce. Snad to nemám celý blbě. Ukazuje mi to jen 2 chyby, tak nevim. Jo a je to v programu Free Pascal. Předem děkuji všem, kteří se do toho pustí za ochotu a trpělivost. A tady je:




program prevadeni_zakladnich_jednotek_hmotnosti;
uses crt;
var mg,g,dkg,kg,t,q,a,b,c,d,e,f:integer;
co:byte;

begin
clrscr;
writeln('=======================================');
writeln('Program na převádění jednotek hmotnosti');
writeln('=======================================');
writeln('Vysvětlivky: ');
writeln('------------ ');
writeln(' mg = miligram ');
writeln(' g = gram ');
writeln(' dkg = dekagram ');
writeln(' kg = kilogram ');
writeln(' q = metrický cent ');
writeln(' t = tuna ');
writeln('=======================================');

writeln('Vyber číslo počáteční jednotky: ');
writeln('mg....................................1');
writeln('g.....................................2');
writeln('dkg...................................3');
writeln('kg....................................4');
writeln('q.....................................5');
writeln('t.....................................6');

writeln('Zadej číslo od jedničky do šestky podle předchozí tabulky!: ');
read(co);

if co=1 then

writeln('Zadej počáteční hodnotu v mg: ');
read(a);

g:= a DIV 1000;

dkg:= a DIV 10000;

kg:= a DIV 1000000;

q:= a DIV 100000000;

t:= a DIV 1000000000;

writeln(',a,'miligramů je ',g,'gramů, ',dkg,' dekagramů, ',kg,'kilogramů, ',q,'metrických centů a ',t,'tun.');



if co=2 then

writeln('Zadej počáteční hodnotu v g: ');
read(b);

mg:= b*1000;

dkg:= b DIV 10;

kg:= b DIV 1000;

q:= b DIV 100000;

t:= b DIV 1000000;

writeln(',b,'gramů je ',mg,'miligramů, ',dkg,' dekagramů, ',kg,'kilogramů, ',q,'metrických centů a ',t,'tun.');




if co=3 then

writeln('Zadej počáteční hodnotu v dkg: ');
read(c);

mg:= c*10000;

g:= c*10;

kg:= c DIV 100;

q:= c DIV 10000;

t:= c DIV 100000;

writeln(',c,'dekagramů je ',mg,'miligramů, ',g,' gramů, ',kg,'kilogramů, ',q,'metrických centů a ',t,'tun.');




if co=4 then

writeln('Zadej počáteční hodnotu v kg: ');
read(d);

mg:= d*1000000;

g:= d*1000;

dkg:= d*100;

q:= d DIV 100;

t:= d DIV 1000;

writeln(',d,'kilogramů je ',mg,'miligramů, ',g,' gramů, ',dkg,'dekagramů, ',q,'metrických centů a ',t,'tun.');




if co=5 then

writeln('Zadej počáteční hodnotu v q: ');
read(e);

mg:= e*100000000;

g:= e*100000;

dkg:= e*10000;

kg:= e*100;

t:= e DIV 10;

writeln(',e,'metrických centů je ',mg,'miligramů, ',g,' gramů, ',dkg,'dekagramů, ',kg,'kilogramů a ',t,'tun.');




if co=6 then

writeln('Zadej počáteční hodnotu v t: ');
read(f);

mg:= f*1000000000;

g:= f*1000000;

dkg:= f*100000;

kg:= f*1000;

q:= f*10;

writeln(',f,'tun je ',mg,'miligramů, ',g,' gramů, ',dkg,'dekagramů, ',kg,'kilogramů a ',q,'metrických centů.');


repeat until keypressed;
end.
Témata: software

14 reakcí

| Nahlásit
a jaký chyby a kde ti to hlásí?
| Nahlásit
Hlásí mi to tyhle dvě chyby a nevím si s nimi rady =´( :

prevody1.pas(49,14) Fatal: Syntax error, ")" expected but "identifier MILIGRAM found"

prevody1.pas(0) Fatal: Compilation aborted
| Nahlásit
Podle me je blbe tohle:
writeln(',a,'miligramů je ',g,'gramů, ',dkg,' dekagramů, ',kg,'kilogramů, ',q,'metrických centů a ',t,'tun.');

Nema tam nejt ten apostrof a carka na zacatku, melo by to bejt takhle:

writeln(a,'miligramů je ',g,'gramů, ',dkg,' dekagramů, ',kg,'kilogramů, ',q,'metrických centů a ',t,'tun.');
| Nahlásit
Podotykam, ze Pascal neumim, ale vydedukoval jsem to podle toho zbytku
| Nahlásit
Mas to tam vickrat
| Nahlásit
Jj, dík, to by šlo =) Ale ještě bych potřebovala vědět, jak to mám udělat, aby to šlo, když zadám př. číslo 3, tak aby mi to skočilo hned na počítání dkg... teď to jde od začátku: nejdřív musim zadat jedničku, pak se mi tam vypíše, ať zadám hodnotu mg a já jí zadám... vyjede výsledek a řekne mi to, ať zadám hodnotu v dkg a jede to takhle dál a nevím, co dát za funkci, aby to přestalo...program skončí až po převedení tun...takže až na konci...to repeat until keypressed je tam úplně na nic =/ potřebuju ,aby to jelo hned, jak zmáčknu nějaký číslo (zmáčknu 3 - enter - zeptá se mě to na hodnotu dkg - enter - napíšu hodnotu v dkg(proměnnou c) - enter - převede se to/tzn.ukáže výsledky: z dkg na mg,na gramy apod. - enter - konec)...takhle bych to potřebovala, ale, aby to fungovalo pro všechny proměnné a taky se chci zeptat: Jaké jsou pro tyhle proměnné nejvhodnější datové typy (aby mi to počítalo i v desetinných číslech...nebo klidně exponenciální zápis (dala bych tam real, ale nejde mi tam dát a tak tam mám momentálně zatím longint - ten ale neni pro desetinný čísla a když chci např. převést 10000 mg na kg, tak mi to ukáže 0 místo 0,000 001...což chápu, když na to longint neni, ale co teda? real tam nejde, hází mi to milion chyb)... pls. pomozte... vim, že je to dlouhý, ale nevim si fakt rady =/
| Nahlásit
Pokud by to někdo potřeboval objasnit, tak ať si to přepíše do Pascalu a tam je to zřetelně vidět, když se pak dá Run.
| Nahlásit
Jednoduše, potřebuju, aby platilo jen jedno if při jednom spuštění a při dalším zase (ale nemuselo by být stejné jako před tím - ale prostě aby bylo jen jedno). Např. spustim program a rozhodnu se převádět z dkg, tak stisknu šestku. Pak mi to převede, dám enter, ukončí se to a já to můžu znova spustit a rozhodnu se třeba převádět z gramů, tak stisknu dvojku atd. atd.
| Nahlásit
Ještě jednou všem děkuji, za to jak se snažíte pomoci. Je to fajn, že se najdou i ochotní lidé =) =) =)
| Nahlásit
Určitě by mělo bejt Real.
A taky by tam místo DIV mělo bejt normální dělení, DIV je celočíselný dělení, tj. místo
g:= a DIV 1000;
by mělo být
g:= a/1000;
(vždycky, když chceš poradit a píšeš, že ti něco hlásí chyby, tak napiš, JAKOU chybu a případně KDE).
| Nahlásit
Jj díky moc, to fakčí, akorát furt nevim, jak urovnat to spuštění podmínek =/
| Nahlásit
No já úplně nerozumim na co se ptáš, ale možná že odpověď na to je tahle funkce:
http://www.freepascal.org/docs-html/rtl/crt/readkey.html
Ale nevim, zeptej se neějakýho odporníka na Free Pascal, to já nejsem
| Nahlásit
Já blbka! Však mi vypadly závorky u podmínek! No, nějak jsem si toho nevšimla. Už to funguje v poho, až na to, že mi to ukazuje jen část textu. Nechápu, ale snad na to nějak přijde. Jinak ještě malá otázečka: "V Pascalu neplatí žádné pravidlo o délce zazávorkovaného textu (tzn. writeln('Ahoj');
writeln('Jak se vede?');) atd.)

???"

Asi je to zbytečná otázka, já myslím, že neplatí, ale jen už si nevim rady, jak to udělat, aby se mi zobrazoval ten text celý a ne jen pár koncovejch řádků.

Kdyby někdo potřeboval upřesnit, pošlu klidně mailem (pokud to půjde).

Jinak dík moc všem, fajn tady radíte =)
| Nahlásit
pošli celý zápis na adresu skarlettka1@seznam.cz a já se na to večer podívám. Skarlettka
 Anonym
Odpovídat lze i bez registrace. Dodržujte pravidla Ontoly
Vložit: Obrázek