PASCAL-problemy
prepac citim sa trapne ale ja som fakt VELIKANSKY LAIK...kebyze nerobim rocnikovu pracu tak to kaslem...
hadam pisem spravne:
program prijmacky;
hadam pisem spravne:
program prijmacky;
Kód: Vybrať všetko
uses crt;
type osoba=record
m,p,sk:string;
bod,c,bpr:integer;
prz6,prz7,prz8,prz9,cpr:real;
end;
juh=record
ul,me,hod:string;
cc,cd,pr1,pr2,pr3,bod:integer;
end;
pole=array[1..30] of osoba;
lol=array[1..30] of juh;
var a:pole;
b:lol;
pp:string;
pom,max,L,k,r,i,n,j,o:integer;
V,Q:char;-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
hmm..ja mam algoritmus:
no a ide oto ze to mi utriedy len pole A...v poli A mam napriklad meno priezvisko a jeho body za priklady
v poli B mam zase jeho kontaktne udaje..takze ako to mam utriedit aby to pasovalo??aby tie kontakten udaje patrili k tomu danemu ziakovi po utriedeni??
Kód: Vybrať všetko
var pom:osoba;
begin
writeln('Utriedenie ziakov od najlepsieho ziaka(triedenie podla celkoveho poctu bodov)');
L:=n;
repeat
max:=1;
for i:=2 to n do if a[i].bod>a[max].bod then max:=i;
pom:=a[L];
a[L]:=a[max];
a[max]:=pom;
dec(L);
until L=1;v poli B mam zase jeho kontaktne udaje..takze ako to mam utriedit aby to pasovalo??aby tie kontakten udaje patrili k tomu danemu ziakovi po utriedeni??
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
sprav to isté aj s druhým poľom: dal som tam pom2, lebo ak zrejme to máš inú štruktúru, a keby tam dáš pom tak zase vidíš tvoj oblúbený type mismatch
Tak si pom2 deklaruj tak ako máš pole b. Neviem ale prečo si to nedal do jedného záznamu, ale rozbíjaš to na dve polia/súbory
Kód: Vybrať všetko
var pom:osoba;
begin
writeln('Utriedenie ziakov od najlepsieho ziaka(triedenie podla celkoveho poctu bodov)');
L:=n;
repeat
max:=1;
for i:=2 to n do if a[i].bod>a[max].bod then max:=i;
pom:=a[L];
a[L]:=a[max];
a[max]:=pom;
pom2:=b[L];
b[L]:=b[max];
b[max]:=pom2;
dec(L);
until L=1;-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
ale veď som ti to napísalA7X napísal:btw:pom2 uz bude premenna zaznamu JUH(-zaznam B pola)?
Re: PASCAL-problemy
Zdravím mám taký problém alebo lepšie povedané že niečomu nechápem.
Zadanie príkladu je prevod čísla z 10-sústavy do 2.
Pri čísle napr. 110003 mi vyhodí záporné číslo.......?
Vopred ďakujem
Zadanie príkladu je prevod čísla z 10-sústavy do 2.
Pri čísle napr. 110003 mi vyhodí záporné číslo.......?
Kód: Vybrať všetko
Program hmmm;
uses crt;
var v:integer;
p,c,e,x:real;
begin
clrscr;
e:=1;
x:=0;
writeln('Zadaj cislo v 10 sustave');
readln(v);
repeat
p:=v mod 2;
c:=e*p;
x:=x+c;
e:=e*10;
v:=v div 2;
until v=0;
writeln('........',x:16:0);
readln;
end.
Re: PASCAL-problemy
Zadane cislo nacitavas do integru, ktorý ma rozsah iba <-32766;32767>, takze ti pretecie premenna a bude v nej ulozena zla hodnota.
Re: PASCAL-problemy
Jo funguje dal som tam longint ale aj tak som obmedzený vstupom - max 10 ciferné číslo. A do realu to asi nedám keď tam mám mod.picuge napísal:Zadane cislo nacitavas do integru, ktorý ma rozsah iba <-32766;32767>, takze ti pretecie premenna a bude v nej ulozena zla hodnota.
Ale funguje to lepšie než predtým takže dík.
-
94jakub
Guru wannabe
- Príspevky: 2037
- Registrovaný: 15 dec 2006, 13:18
- Bydlisko: Martin/BA
- Kontaktovať používateľa:
Re: PASCAL-problemy
Skús ešte vyskúšať int64. Ten má 8 byte-ov (19 cif. číslo), to by malo stačiť.
Mám Free Pascal 2.4.0 a tam ide. Viem, že staršie verzie ho neberú.
To by to mohol ozrejmiť niekto skúsenejší.
Poprípade ešte vyskúšaj longword. Ten má len kladné čísla ale dvakrát väčší ako integer.
Mám Free Pascal 2.4.0 a tam ide. Viem, že staršie verzie ho neberú.
To by to mohol ozrejmiť niekto skúsenejší.
Poprípade ešte vyskúšaj longword. Ten má len kladné čísla ale dvakrát väčší ako integer.
Re: PASCAL-problemy
DOS Pascal v7.0 ma i typ "Longint" - -2147483648..2147483647. Delkaruj premennu ako tento typ a mal by byt problem vyrieseny.
-
94jakub
Guru wannabe
- Príspevky: 2037
- Registrovaný: 15 dec 2006, 13:18
- Bydlisko: Martin/BA
- Kontaktovať používateľa:
Re: PASCAL-problemy
Keby si čítal pozornejšie, no offence
tak by si sa dočítal, že longint už má a nestačí mu takže problém vyriešený nieje.
BTW int64 je -9223372036854775808 .. 9223372036854775807
BTW int64 je -9223372036854775808 .. 9223372036854775807
Re: PASCAL-problemy
Ale ved pri Longint mu to pri zadani 110003 nemoze vyhodit zaporne cislo (pretecenie). Tam je problem kdesi v jeho programe.94jakub napísal:Keby si čítal pozornejšie, no offencetak by si sa dočítal, že longint už má a nestačí mu takže problém vyriešený nieje.
BTW int64 je -9223372036854775808 .. 9223372036854775807
co tak takto:
Kód: Vybrať všetko
Program DEC_to_BIN;
uses Crt;
var
dec: Longint;
bin: string;
BEGIN
ClrScr;
Write('DEC to BIN numero: ');
ReadLn(dec);
bin := '';
repeat
if (dec mod 2) = 0 then
bin := '0' + bin
else
bin := '1' + bin;
dec := dec div 2;
until dec = 0;
WriteLn(bin);
ReadLn;
END.Re: PASCAL-problemy
Fajn stiahol som novú verziu. Použil som int64 ale aj tak to pri väčších číslach hádže divné výsledky.
Celkovo je ten môj program komplikovaný. Ten tvoj vyzerá lepšie, hneď zajtra to vyskúšam.
Vďaka všetkým za pomoc
Btw Fakt keby si lepšie čítal, dočítal by si sa že pri spomínanom čísle 110003 mi to s longint už záporné číslo nahádzalo. Problém bol ak som do vstupu hodil 11 a viac cif. číslo.Ale ved pri Longint mu to pri zadani 110003 nemoze vyhodit zaporne cislo (pretecenie). Tam je problem kdesi v jeho programe.
co tak takto:
Celkovo je ten môj program komplikovaný. Ten tvoj vyzerá lepšie, hneď zajtra to vyskúšam.
Vďaka všetkým za pomoc