Matematické Fórum

Archiv diskusního fóra o matematice, 2006–2026

Toto je archiv Matematického Fóra. Fórum je dostupné jen ke čtení. Můžete se ale zaregistrovat na náš Discord server.

#1 18. 10. 2015 18:29

Ondrik_B
Příspěvky: 91
Škola: BIGY ZR
Pozice: student
Reputace:   1 
 

Pascal, IF

Ahoj, zacinam s programovanim a mam tento problem:

Chci dat do IF dve podminky:

readln(n);
if (n>1) and (n<1000) then
      writeln(n)


Programu se to takhle nelibi a pise, ze ocekaval LongInt a dostal boolean. V podstate uplne stejnej problem mam i s repeat.

Nejak nemuzu pochopit proc se mu te nelibi, vzdyt preci if pracuje s vyrokem ne? A melo by byt jedno jestli tam dam jeden vyrok nebo nejakou slozeninu.

Mate nekdo nejake vysvetleni?

Dik y.

Offline

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

#2 18. 10. 2015 18:43

Stýv
Vrchní cenzor
Příspěvky: 5711
Reputace:   215 
Web
 

Re: Pascal, IF

pošli celej kód, jestli to neni moc dlouhý. a použij

Code:

 prostředí CODE

Offline

 

#3 18. 10. 2015 19:11

Ondrik_B
Příspěvky: 91
Škola: BIGY ZR
Pozice: student
Reputace:   1 
 

Re: Pascal, IF

↑ Stýv:

Celej kod poslu, jenom ted ho nemam u sebe. Nevim co je to prostredi CODE a jak ho mam pouzit. My ve skole pouzivame Lazarus.

Offline

 

#4 19. 10. 2015 00:00

Stýv
Vrchní cenzor
Příspěvky: 5711
Reputace:   215 
Web
 

Re: Pascal, IF

tady na fóru máš pod polem, do kterého píšeš text, mimo jiné tlačítko CODE, tak ho použij, ať se ten zdroják líp čte

Offline

 

#5 19. 10. 2015 05:57

Honzc
Příspěvky: 4647
Reputace:   248 
 

Re: Pascal, IF

↑ Ondrik_B:
A jak máš nadeklarované n?

Offline

 

#6 20. 10. 2015 13:29

Ondrik_B
Příspěvky: 91
Škola: BIGY ZR
Pozice: student
Reputace:   1 
 

Re: Pascal, IF

Code:

program proc_nefunguje;
var tabulka:array[1..10000] of boolean;
    n,i,a: integer;

begin
     repeat
        writeln('Zadej pritozene cislo vetsi jedne a mensi 10000');
        readln(n);
        if (n>1) and (n<10000)
           then
               writeln('zadali jste cislo ',n);

     until (n<1) and (n<10000) ;



  readln()
end.

Problem ktery, jsem popisoval v uvodu vymizel. Ale ted resim jiny problem. Ze zdrojoveho kodu je patrne, ze pozaduji aby bylo zapsane prirozene cislo mensi 10 000.

Kdyz jsem program skousel, treba na -5, tak prikaz IF to vyhodnotil jako true a normalne vypsal:" zadali jste cislo -5." Coz by delat nemel ne?

Offline

 

#7 20. 10. 2015 19:13

runcorne
Příspěvky: 183
Škola: MFF UK
Pozice: Student
Reputace:   17 
 

Re: Pascal, IF

↑ Ondrik_B:

Ahoj, nemá tam být spíše podmínka n>1 ?

Offline

 

#8 21. 10. 2015 07:23 — Editoval Honzc (21. 10. 2015 07:26)

Honzc
Příspěvky: 4647
Reputace:   248 
 

Re: Pascal, IF

↑ Ondrik_B:
Aby ti to bralo přirozená čísla menší než 10000, pak to musí vypadat takto:
(z programu je možné vyskočit až zadáš číslo mimo interval.

Code:

repeat
   writeln('Zadej pritozene cislo vetsi jedne a mensi 10000');
   readln(n);
   if (n>=1) and (n<10000) then
     writeln('zadali jste cislo ',n);
until (n<1) or (n>=10000);

Offline

 

#9 21. 10. 2015 08:19

Ondrik_B
Příspěvky: 91
Škola: BIGY ZR
Pozice: student
Reputace:   1 
 

Re: Pascal, IF

↑ Honzc:

To myslim neresi moji situaci. Dovysvetlim, co po programu chcu. Zkratka, chci aby pokazde, kdyz vstup nebude z intervali [2,9999] (prirozene), napsal 'Zadej pritozene cislo vetsi jedne a mensi 10000'. A pak aby byla nova moznost pro zadani cisla.

A za tim bude pokracovat dalsi algoritmus. (Erasthetonovo sito)


Je z toho patrny o co mi jde?

Offline

 

#10 21. 10. 2015 12:22

Formol
Místo: Praha
Příspěvky: 782
Pozice: krotitel mikroskopů (UHIEM 1. LF UK)
Reputace:   42 
 

Re: Pascal, IF

↑ Ondrik_B:
Ahoj,
v Pascalu jsem už dlouho nic nepsal, takže se možná mýlím, ale nemáš náhodou chybu v syntaxi podmínky? Pokud se nepletu, Pascal vyžaduje mít celou podmínku v závorce, tj.:

Code:

 if ((n>1) and (n<10000)) then .....

Доктор сказал «в морг» — значит в морг!

Offline

 

#11 21. 10. 2015 17:23

Ondrik_B
Příspěvky: 91
Škola: BIGY ZR
Pozice: student
Reputace:   1 
 

Re: Pascal, IF

Zavorky pomohly. Ale stejne se jeste program nechova tak jak bych potreboval a ocekaval. Ale to uz doresim na cvikach. Kazdopadne Dik y.

Offline

 

#12 22. 10. 2015 09:37 — Editoval O.o (22. 10. 2015 09:37)

O.o
Veterán
Příspěvky: 1402
Reputace:   16 
 

Re: Pascal, IF

↑ Ondrik_B:
Cetl jsi radu, kterou ti psal ↑ runcorne:?

Ty chces aby se ti opakoval dotaz na vstup cisla, dokud toto nebude z pozadovaneho intervalu.
Tvuj program ma napsany cyklus jako:

Code:

repeat
...
until ((n < 1) and (n < 10000))

Kdyz si to prelozis do cestiny z programovaciho jazyka (a z anglictiny), tak to znamena: "Opakuj dokud promenna n nebude mensi nez 1 nebo mensi nez 10000", takze kdyz zadam zaporne cislo, tak se tvuj cyklus zastavi, protoze n < 1 (priklad: vlozim -10, cyklus dojde nakonec a podiva se na podminku je -10 mensi nez 1? -> Ano je -> Zastav cyklus. A skoncil jsi s n = -10).
Upravil bych podminku, jak ti radi runcorne na until ((n > 1) and (n < 10000)), toto znamena, ze se porgram bude opakovat dokud cislo n nebude z intervalu (1, 10000).

Pozn.:  Tvuj kod opakuje cyklus dokud nedostane n z intervalu (-nekonecno, 10000) - to minus nekonecno je tu jen ilustrativne, ve skutecnosti jde o nejmensi cislo, co tvuj program jeste zvladne.

Offline

 

#13 22. 10. 2015 15:02

Honzc
Příspěvky: 4647
Reputace:   248 
 

Re: Pascal, IF

↑ Ondrik_B:
V zadání je pořeba napsat co chceš
Tedy po upřesnění tvého požadavku:

Code:

begin
  write('Zadej pritozene cislo vetsi jedne a mensi 10000');
  readln(n);
  while  (n<=1) and (n>=10000) do
  begin
    writeln;
    writeln('Zadej pritozene cislo vetsi jedne a mensi 10000');
    readln(n);
  end;
  writeln;
  writeln('zadali jste cislo ',n);
  readln;
end;

Offline

 

#14 22. 10. 2015 16:49

Ondrik_B
Příspěvky: 91
Škola: BIGY ZR
Pozice: student
Reputace:   1 
 

Re: Pascal, IF

↑ O.o:

Ano problem vyresi presne to co psal runcorne. Hloupa chyba pro psani kodu a jeste hloupesi pri cteni prispevku. Omlouvam se vsem zucastnenym. Ted uz mi je zrejme, proc se mi program choval, jak se choval. Diky

Offline

 

#15 23. 10. 2015 11:51

O.o
Veterán
Příspěvky: 1402
Reputace:   16 
 

Re: Pascal, IF

↑ Ondrik_B:

Omlouvat se neni za co, na foru se lide ptaji, tak uz to byva ;-).

Mej se pekne a zase priste ahoj.

Offline

 

Archiv Matematického Fóra · stav k 30. 8. 2026 · 633 258 příspěvků v 108 818 tématech