Matematické Fórum

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

#1 19. 11. 2010 23:54

myrek
Příspěvky: 223
Reputace:   
 

pascal pole

Dobrý den
mám udělat program v pascalu:
Na vstupu dostanete seznam celých čísel ukončený -1, které nepatří do seznamu. Vypište je v opačném pořadí oddělené mezerou. Čísel nebude více než 1000.
díky

Offline

  • (téma jako vyřešené označil(a) myrek)

#2 20. 11. 2010 00:55

septolet
Příspěvky: 334
Reputace:   
 

Re: pascal pole

↑ myrek:

Máš nějaký nápad, jak to řešit?

Offline

 

#3 20. 11. 2010 11:38

myrek
Příspěvky: 223
Reputace:   
 

Re: pascal pole

↑ 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

 

#4 20. 11. 2010 12:14

vojta01
Příspěvky: 63
Reputace:   
 

Re: pascal pole

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:

Code:

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

 

#5 22. 11. 2010 13:06 — Editoval myrek (22. 11. 2010 13:07)

myrek
Příspěvky: 223
Reputace:   
 

Re: pascal pole

↑ 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

 

#6 22. 11. 2010 17:26

Lumikodlak
Místo: Praha
Příspěvky: 212
Pozice: Programator nebo tak neco :-)
Reputace:   19 
 

Re: pascal pole

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

 

#7 22. 11. 2010 21:23

myrek
Příspěvky: 223
Reputace:   
 

Re: pascal pole

↑ 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

 

#8 22. 11. 2010 21:29

VojtechSejkora
Příspěvky: 176
Reputace:   
 

Re: pascal pole

↑ 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

 

#9 22. 11. 2010 21:52

Lumikodlak
Místo: Praha
Příspěvky: 212
Pozice: Programator nebo tak neco :-)
Reputace:   19 
 

Re: pascal pole

↑ 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

 

#10 22. 11. 2010 21:57

VojtechSejkora
Příspěvky: 176
Reputace:   
 

Re: pascal pole

↑ 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

 

#11 22. 11. 2010 22:23

myrek
Příspěvky: 223
Reputace:   
 

Re: pascal pole

↑ 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

 

#12 22. 11. 2010 22:39

Lumikodlak
Místo: Praha
Příspěvky: 212
Pozice: Programator nebo tak neco :-)
Reputace:   19 
 

Re: pascal pole

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

 

#13 22. 11. 2010 22:48

myrek
Příspěvky: 223
Reputace:   
 

Re: pascal pole

↑ VojtechSejkora:↑ Lumikodlak:
no ty kraso
vazne ted uz to mam na 100%
dekujem

Offline

 

#14 23. 11. 2010 04:57

VojtechSejkora
Příspěvky: 176
Reputace:   
 

Re: pascal pole

↑ myrek:
jsem rád že jsem mohl pomoci:) a že to bylo k něčemu:)

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson