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
↑ septolet:
napada me neco jako tohle
jeste sem to nezkousel
je alespon spravne ten algoritmus?
program pole
var a,i:integer;pole:array[1..1000]of boolean;
begin
for i=1 to 1000 do pole[i]:=false
repeat
read(a);
i:=a
for i=a do (pole[i]):=true;
until keypressed
for i=1000 to 1 do
begin
if pole[i]=true then
write(i);
end;
end.
Offline
Ahoj, nepochopil jsem, co ten tvůj program dělá.
Já bych to načetl do pole a to pole vypsal pospátku, čislo cyklus for i := N downto 1 do write(pole[i],' ');
Jinak se dá jednoduše použít i rekurze (nemusím si to zapisovat do žádného pole:
function vypis; {rekurzivně volaná funkce} var cislo : integer; begin readln(cislo); {načti číslo} if cislo <> -1 then {jestliže nebyla zadaná -1 vypis; {rekurzivně zavolej tuto funkci znovu -> znovu se bude načítat číslo, všechna čísla načtená v této rekurzivně zanořené funkci se vypíšou} {dříve než následující řádek:} write(cislo,' '); {zde se zadané číslo vypíše} end;
Rekurze mi zajistí, že poslední zadané číslo se vypíše jako první, předposlední jako druhé a první zadané až jako poslední.
Offline
↑ vojta01:
function jsme jeste nebrali takze pomoci toho asi ne
jinak jsem udelal tohle ale potreboval bych poradit abych nemel na vypisu ty pocatecni nuly a -1
pro vstup 670 32 421 -9886 -1 mi to vypise 995krat nulu pak -1 -9886 421 32 670
tady je nynejsi verze meho programu
program pole_opacne;
const n=1000;
var a,i:integer;pole:array[1..n]of integer;
begin
i:=1;
while a <> -1 do
begin
read(a);
pole[i]:=a;
inc(i);
end;
for i:=n downto 1 do
write(pole[i],' ');
end.
Offline
Melo by stacit zacit to pole vypisovat tam, kde jsi skoncil nacitani, takze misto:
for i:=n downto 1 do
kdyz das:
for i:=i-1 downto 1 do
Tak to 'i' bude ze zacatku tam, kde skoncilo v tom predchozim while cyklu.
Offline
↑ Lumikodlak:
tak za tohle mi dal codex 70% ve dvou testech mi napsal runtime error pokud vidite v cem by to mohlo byt pomozte
program pole_opacne;
const n=1000;
var a,i:integer; pole:array[1..n]of integer;
begin
for i:=1 to n do {v tomto for-cyklu "vynulovani pole"}
begin
pole[i]:=0;
end;
i:=1;
while a <> -1 do
begin
read(a); {nacti cisla}
pole[i]:=a; {uloz 1. nact.cisl. na 1. misto pole, 2. na 2.,...}
inc(i);
end;
for i:=(i-2) downto 1 do {v tomto for-cyklu vypsani pole opacne bez cisla -1}
begin
write(pole[i],' ');
end;
end.
Offline
↑ myrek:
příjde mi divné že odečítáš pro ten 2.cyklus 2, na to jsi přišel jak?
ale jinak tak chybu nevidím.... je taky pravda že já pascalák nejsem no...
Offline
↑ myrek:
Napada me, jestli ten codex tam neposila divna data, treba ze by to neukoncil tou -1, nebo by tam poslal vic nez 1000 cisel (i kdyz v zadani pises ze jich nebude vic nez 1000). Anebo uplne jednoduse jestli tam neposila treba jine znaky (pismena a podobne), to potom spadne, protoze se to nacita do 'a' coz je integer.
↑ VojtechSejkora:
Odecita 2 proto, aby mu to nevypisovalo tu -1. To jsem si predtim neuvedomil, takze jsem to napsal spatne.
Offline
↑ Lumikodlak:
aha už to vidím... no já zapomněl že při načtení -1 se mi stejně ještě proměnná i zvýší o 1
a tak mě napadá třeba tam opravdu dají 1000 čísel, ale až pak tam bude ta -1... není i toto možné?
Offline
↑ Lumikodlak:↑ VojtechSejkora:
jeste nabizim citaci zaznamu o vyhodnoceni programu
Záznam o vyhodnocení
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
Test 4... <init> <run> RE:Runtime error 201: Range check error
Test 5... <init> <run> <filter> <check> OK:OK (150 points)
Test 6... <init> <run> <filter> <check> OK:OK (150 points)
Offline
Range check error - to bude asi opravdu tech 1000 cisel jak psal ↑ VojtechSejkora:. Tak muzes zkusit dat:
const n=1001;
a pro jistotu mozna jeste:
while (a <> -1) and (i <= n) do
Offline
↑ VojtechSejkora:↑ Lumikodlak:
no ty kraso
vazne ted uz to mam na 100%
dekujem
Offline
↑ myrek:
jsem rád že jsem mohl pomoci:) a že to bylo k něčemu:)
Offline