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 18. 10. 2015 18:29

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

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: 5690
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:   
 

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: 5690
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: 4549
Reputace:   241 
 

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:   
 

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: 4549
Reputace:   241 
 

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:   
 

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:   
 

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: 4549
Reputace:   241 
 

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:   
 

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

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson