Hadani – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Hadani – Pascal – Fórum – Programujte.comHadani – Pascal – Fórum – Programujte.com

 

Malirka
~ Anonymní uživatel
34 příspěvků
18. 4. 2009   #1
-
0
-

Ahojky.Tady mám program na hadání čísel.Můžete se na to někdo mrknout jestli to mám podle tohoto zadání dobře.Díky.
Sestavte program, který vygeneruje náhodné celé číslo ze zvoleného rozsahu (1 .. N) a umožní uživateli hádat toto číslo. Po každém tipu uživatele, program napoví, zda hledané číslo je menší nebo větší než zvolená hodnota. Po uhodnutí čísla se kromě gratulace k úspěchu zobrazí i počet pokusů. Pokud uživatel zadá hodnotu nula, znamená to, že se vzdává. Po skončení hádání program nabídne další hru nebo ukončení.
VSTUP: N - horní hranice rozsahu čísel
tipy uživatele
VÝSTUP: nápovědy k hádání (je menší/větší)
gratulace a počet pokusů


Uses crt;

var cislo, hadane, n:Integer;

label znovu;

begin
TextColor(LightBlue);
Writeln('---- Program na hadani cisla ----');
TextColor(White);
znovu:
Writeln;
Writeln('Myslim si cislo od 1 do 100, uhodni ho:');
Writeln;
Randomize;
Cislo:=Random(100);
n:=1;
Write(n,'. pokus: ');
Read(hadane);
While hadane <> cislo do
begin
if hadane > cislo then writeln('Je mensi!')
else writeln('Je vetsi!');
n:=n+1;
Writeln;
Write(n,'. pokus: ');
Read(hadane);
if hadane = 0 then Halt(0);
end;
Writeln;
Write('Gratuluji, myslel jsem si cislo ',cislo,' a uhodnul si ho na ',n,'. pokus');
Writeln;
Writeln;
Write('Chcete hrat znovu? (A/N)');
if UpCase(ReadKey) = 'A' then goto znovu;
end.

Nahlásit jako SPAM
IP: 213.168.179.–
Krychlik
~ Anonymní uživatel
195 příspěvků
18. 4. 2009   #2
-
0
-

To Malirka :
Jsou tam 2 chyby- horni hranice se ma nacist ze zadani, tak na zacatek jeste nacist hranici a pak jeste vsude kde mas ted 100 to prepsat na promenou.
A ta druha je, ze random je od 0 do (parametr-1), tj random(5) vypise jedno z cisel 0,1,2,3,4 a protoze nulu nechces, musis to jeste o 1 zvednout tj cislo:=random(hranice)+1;


A mala drobnost: label a goto je fuj, fuj, fuj, za kazde pouziti ztrati 1 andel kridla.

Nahlásit jako SPAM
IP: 212.111.4.–
mALIRKA
~ Anonymní uživatel
34 příspěvků
18. 4. 2009   #3
-
0
-

To Krychlik : Tady jsem to upravila:
Uses crt;

var N,HADANE,CISLO,POKUSU: Integer;
C: Char;

begin
clrscr;
repeat
POKUSU:= 0;
N:= 0;
HADANE:= 0;
CISLO:= 0;
clrscr;
TextColor(LightBlue);
Writeln('---- Program na hadani cisla ----');
TextColor(White);
Writeln;
Writeln('Zadejte jaka bude horni hranice:');
Readln(N);
Randomize;
CISLO:= random(N);
While CISLO = 0 do CISLO:= Random(N);
Writeln;
Writeln('Hadejte cislo od 1 do ',N);
Readln(HADANE);
if (HADANE <> 0) and (HADANE <> CISLO) then begin
Repeat
POKUSU:= POKUSU + 1;
Writeln;
if HADANE > CISLO then writeln('Cislo je mensi!')
else writeln('Cislo je vetsi!');
Writeln;
readln(HADANE);
until (HADANE = CISLO) or (HADANE = 0);
Writeln;
if HADANE = 0 then writeln('Vzdal jste se')
else Writeln('Gratuluji uhadl/la jste cislo na ', POKUSU+1 ,'. pokus!!!!!!');
end
else begin
if HADANE = 0 then writeln('Vzdal jste se')
else if HADANE = CISLO then writeln('Gratuluji uhadl/la jste cislo na prvni pokus!');
end;
Writeln;
Writeln('Chcete pokracovat? A/N');
Read(C);
Until C<>'A';
Readln;
end.

Nahlásit jako SPAM
IP: 213.168.179.–
raddino0
Návštěvník
18. 4. 2009   #4
-
0
-

mi neveris ze sem to udelal presne podle zadani? doufal sem aspon trochu duveru kdyz uz sem ti to udelal..... :smile1:
(pro nechapave tu druhou verzi sem delal ja) :smile1:

Nahlásit jako SPAM
IP: 85.207.184.–
Krychlik
~ Anonymní uživatel
195 příspěvků
18. 4. 2009   #5
-
0
-

Ja tu snad pisu pro srandu kralikum CISLO:= random(N) generuju nahodne cislo DO N ale bez N, je to nutne jeste o 1 zvetsit takze CISLO:= random(N+1); nebo CISLO:= random(N)+1; to druhe je o neco lepsi protoze tam uz nebude 0.
A proc je na zacatku POKUSU:= 0; a potom se pokoutne ve vysledku pricita 1? nebylo by lepsi zacinat od 1?

Nahlásit jako SPAM
IP: 212.111.4.–
raddino0
Návštěvník
19. 4. 2009   #6
-
0
-

s tim random mas pravdu, nevedel sem jak to udelat a tak sem to tam resil tim cyklem. (jeste sem zkousel interval ale to nefungovalo :smile1: )
a s tim pokusu to je pravda kdyz sem to zacinal psat tak sem chtel pocitat s tim ze da hned prvni cislo 0 a aby to nepocitalo jako pokus ale pak sem to udelal jinak a zapomnel sem to upravit a ten konec je prasarna (Writeln('Gratuluji uhadl/la jste cislo na ', POKUSU+1 ,'. pokus!!!!!!'); ) pac uz sem to chtel dodelat tak aby to fungovalo.

Nahlásit jako SPAM
IP: 85.207.184.–
Malirka
~ Anonymní uživatel
34 příspěvků
22. 4. 2009   #7
-
0
-

Tady mám konečnou verzi programu,ale pan učitel mi napsal abych to upravila,ale nevím jak to udělat....
Tady co mi napsal učitel:
Program je funkční, ale oznamuje o jeden pokus více než ja skutečnost.
Také by šel vylepšit, aby se výpis Gratulace či informace o Vzdání se použil
v programu pouze jednou. Pokud by se nedařilo vyřešit, přijmu i tuto
variantu, protože jsi první.

A tady mám ten program:
Uses crt;

var N,HADANE,CISLO,POKUSU: Integer;
C: Char;

begin
clrscr;
repeat
POKUSU:= 1;
N:= 0;
HADANE:= 0;
CISLO:= 0;
clrscr;
TextColor(LightBlue);
Writeln('---- Program na hadani cisla ----');
TextColor(White);
Writeln;
Writeln('Zadejte jaka bude horni hranice:');
Readln(N);
Randomize;
CISLO:= random(N+1);
Writeln;
Writeln('Hadejte cislo od 1 do ',N);
Readln(HADANE);
if (HADANE <> 0) and (HADANE <> CISLO) then begin
Repeat
POKUSU:= POKUSU + 1;
Writeln;
if HADANE > CISLO then writeln('Cislo je mensi!')
else writeln('Cislo je vetsi!');
Writeln;
readln(HADANE);
until (HADANE = CISLO) or (HADANE = 0);
Writeln;
if HADANE = 0 then writeln('Vzdal jste se')
else Writeln('Gratuluji uhadl/la jste cislo na ', POKUSU+1 ,'. pokus!!!!!!');
end
else begin
if HADANE = 0 then writeln('Vzdal jste se')
else if HADANE = CISLO then writeln('Gratuluji uhadl/la jste cislo na prvni pokus!');
end;
Writeln;
Writeln('Chcete pokracovat? A/N');
Read(C);
Until C<>'A';
Readln;
end.

Nahlásit jako SPAM
IP: 213.168.181.–
Jana
~ Anonymní uživatel
29 příspěvků
13. 6. 2012   #8
-
0
-

a nevíš jak to predelat aby to fungovalo obrácene??aby počítač hadal a tys psala jestli vic nebo mín?? moc by mi to pomohlo

Nahlásit jako SPAM
IP: 212.96.185.–
Mircosoft+1
Věrný člen
14. 6. 2012   #9
-
0
-

Nejjednodušší možnost: když napíšeš "víc", program k číslu přičte 1. Když "míň", odečte 1. Je to na dlouho, ale funguje to spolehlivě :-).

Pro praktické použití bych doporučil metodu půlení intervalu: tipneš číslo uprostřed možného rozsahu, při "víc" zahodíš celou levou půlku (tj. levou mez posuneš na to prostřední číslo), při "míň" zahodíš pravou (pravou mez posuneš na prostředek). Tím se ti možný rozsah zužuje tak dlouho, až se levá a pravá mez sejdou na jednom čísle a to je ten výsledek (případně se do něj náhodou trefíš dřív).

Nahlásit jako SPAM
IP: 212.118.224.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 2 hosté

Podobná vlákna

Program na "hádání" — založil jumbo

Hra na hadani cisla C++ — založil ondrej

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý