Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Zdravím,
mám tady "jednoduchou" úložku v pascalu, v které mám zřejmě někde chybu.
Zadání: Je dán textový soubor "cisla.in", ve kterém je na prvním řádku číslo N, na druhém řádku následuje N čísel oddělených mezerami. Všechna čísla jsou v desítkovém zápisu a vlezou se do 32-bit integeru. Spočtěte součet všech N čísel a vypište jej na STDOUT, součet se rovněž vejde do 32-bit integeru.
např. cisla.in 5
2 7 8 10 3
výstup 30
Zdroják:
program soucet;
var i,n,soucet,x:integer; t:text;
begin
assign(t,'cisla.in');
reset(t);
readln(t,n);
i:=1;
soucet:=0;
while i <= n do
begin
read(t,x);
soucet:=soucet + x;
i:=i + 1;
end;
writeln(soucet);
end.nevidí někdo chybu, jeden test ze tří mi neprošel
nabízím ještě hlášení codexu:
Jailing user 'codex' (UID 1003, GID 1003) into directory '/home/codex/workers/eval2/jail'
Initializing... OK
Preparing sandbox... running locally (INSECURE), OK
Finding source... ./inbox/source.pas
Compiling... OK
Test 1... <init> <run> <filter> <check> OK:OK (200 points)
Test 2... <init> <run> <filter> <check> OK:OK (200 points)
Test 3... <init> <run> RE:Runtime error 201: Range check error
děkuji všem za ochotu a hledání chyby
Majki
Offline

V zadani je psano "... vlezou se do 32-bit integeru". Kdyz jsem zkousel do toho programu zadat cisla tak, aby soucet byl vetsi nez 32767, tak jsem dostal tu chybu "Runtime error 201: Range check error".
Misto "var i,n,soucet,x:integer;" jsem zkusil dat "var i,n,soucet,x:longint;", a uz to slo, tak v tom by mohla byt chyba, nic jineho me zatim nenapada.
Offline

To ne, chyba v zadani to neni podle me :-) 32767 to je prave jen 16 bitovy integer (zda se, ze v pascalu 'integer' je 16 bitu a 'longint 32' bitu). Ale to je jedno, hlavne, ze to funguje.
Offline
↑ Lumikodlak:
tak diky za nove informace
az budu nekdy zase neco potrebovat tak to sem dam
Offline
tady jestli by ste mi mohli zkntorlovat proč by to nemuselo fungovat děkuju moc
program soucet;
var s:text;
a,c,d:longint;
p:array[1..100]of longint;
begin
assign(s,'cisla.in);
reset(s);
readln(s,a);
d:=p[1];
for c:=1 to a do
begin
read(s,p[c]);
d:=d+p[c];
end;
write(d);
end.hazí mi taky tu stejnou chybu u toho třetího
Offline

Nejspis to bude tim, ze to ukladas do toho pole "p:array[1..100]of longint;" a je tam vic nez 100 cisel. To 'p' by ti stacilo normalne jako obycejny longint, takze tam muzes mit:
a,c,d,p:longint;
...
d:=0;
...
read(s,p);
d:=d+p;
Offline