Pár nejasností – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Pár nejasností – C / C++ – Fórum – Programujte.comPár nejasností – C / C++ – Fórum – Programujte.com

 

Hnykda
~ Anonymní uživatel
13 příspěvků
20. 12. 2009   #1
-
0
-

Ahoj. Potřeboval bych vysvětlit a pomoct s pár věcmi, které mi nejsou jasné a do budoucna by asi bylo lepší to vědět. Tak kdyby někdo byl tak ochotný, budu vděčný... :)
Zatím jsem teda nepřišel jen na jednu věc ale asi toho bude postupem času víc...

#include <cstdlib>

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
int i;

cout << "Uhadni cislo od 0-10 \n";
do
{
cin >> i;
cout << "skus to jeste\n";
}
while (i !=5);

cout << "Ano! Spravne!\n";

int a;
int b = 23;
cout << "Uhodnete cislo od 0-100: " ;
cin >> a;

if (a == 24 || a == 25 || a == 22 || a == 21 )
cout << "Ses blizko";

else if (a < b)
cout << "\nPrilis nizke, je mi lito";

else if (a > b)
cout << "Moc vysoke";

else
cout << "Ano! " << b << " je spravne!\n";

}
cout << endl << endl << endl;
system("PAUSE");
return EXIT_SUCCESS;
}




Tady mi není jasné to, jak udělat, v druhém kroku kdy hádáme číslo od 0-100, že když jej neuhádneme, může se hádat znova. Zkoušel jsem jen nějaké blbůstky jako to dát do blocku a return ale nepovedlo se. Jeste jsem zkoušel úpravu s "do while" ale to taky nefunguje:

    int a;

int b = 23;
cout << "Uhodnete cislo od 0-100: " ;
cin >> a;
{
do
{
if (a == 24 || a == 25 || a == 22 || a == 21 )
cout << "Ses blizko";

else if (a < b)
cout << "\nPrilis nizke, je mi lito";

else if (a > b)
cout << "Moc vysoke";
} while (a != b);

cout << "Ano! " << b << " je spravne!\n";

}

Nahlásit jako SPAM
IP: 85.70.178.–
KIIV
~ Moderátor
+43
God of flame
20. 12. 2009   #2
-
0
-

} while (a != b);

a pocatecni { dat na zacatek .. kde se ptas aby neco zadal

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
H4wk.cz0
Newbie
20. 12. 2009   #3
-
0
-

To Hnykda : Tvá úprava s do while je skoro správně, jen musíš vždy znova načítat vstup ;-)

Nahlásit jako SPAM
IP: 78.128.196.–
http://ksp.mff.cuni.cz - Nauč se opravdu programovat
Hnykda
~ Anonymní uživatel
13 příspěvků
20. 12. 2009   #4
-
0
-

Anoooo!!!
Děkuju moc, ve výsledku to vypadá takto:

        do

{ cin >> a;
if (a == 24 || a == 25 || a == 22 || a == 21 )
cout << "-----------------\nSes blizko: ";

else if (a < b)
cout << "-----------------\nPrilis nizke: ";

else if (a > b)
cout << "-----------------\nMoc vysoke: ";
}
while (a != b);

cout << "-----------------\nAno! " << b << " je spravne!\n";


Nahlásit jako SPAM
IP: 85.70.178.–
Hnykda
~ Anonymní uživatel
13 příspěvků
20. 12. 2009   #5
-
0
-

A ještě prosím tento řádek,

 while (a != b); 


cout << "-----------------\nAno! " << b << " je spravne!\n";

je to výroková logika, nemůžu si to nějak vysvětlit, můžete mi to prosím přeložit do normální mluvy?
Protože takhle to laicky vypadá jako: "Pokud se a nerovná b , pak b je spravne". A to mi nedává smysl :D

Nahlásit jako SPAM
IP: 85.70.178.–
Hnykda
~ Anonymní uživatel
13 příspěvků
20. 12. 2009   #6
-
0
-

Tak tu mám další oříšek, učím se dle http://programujte.com/?akce=clanek&cl=2005041408-c++-4-lekce. Snažím se zakázat cin.get a to pomocí příkazu cin.clear(). Ale když si pak nechám vyjéct další proměnou zbylé znaky se stejně zobrazí, čímpa to?!

#include <cstdlib>

#include <iostream>
#include <cstring>

using namespace std;

int main(int argc, char *argv[])
{
cout << "Napis 10 znaku, ja je ulozim: " << endl;
const int me = 10;
char znaky[me];
char znak[5];

cin.get(znaky, me);
cin.clear();
cout << endl << znaky << endl << endl;
cin.get(znak,5);

cout << endl << znak;





cout << endl << endl;
system("PAUSE");
return EXIT_SUCCESS;
}

Nahlásit jako SPAM
IP: 85.70.178.–
KIIV
~ Moderátor
+43
God of flame
20. 12. 2009   #7
-
0
-

To Hnykda : cin.clear myslim smaze jen nektery chybovy priznaky.. treba kdyz chces nacist cislo a zadas znaky...
mozna cin.ignore nebo podobne by mohlo zvladnout smazat prichozi frontu ..

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Hnykda
~ Anonymní uživatel
13 příspěvků
20. 12. 2009   #8
-
0
-

Aha, tak to je to v te lekci spatne napsane...Diky

Nahlásit jako SPAM
IP: 85.70.178.–
H4wk.cz0
Newbie
20. 12. 2009   #9
-
0
-

Hnykda napsal:
A ještě prosím tento řádek,

 while (a != b); 

cout << "-----------------
Ano! " << b << " je spravne!
";

je to výroková logika, nemůžu si to nějak vysvětlit, můžete mi to prosím přeložit do normální mluvy?
Protože takhle to laicky vypadá jako: "Pokud se a nerovná b , pak b je spravne". A to mi nedává smysl :D


Dokud se a nerovná b, tak se smyčka opakuje, tedy skončí jen ve chvíli, kdy bude splněn opak ==> a == b.

Nahlásit jako SPAM
IP: 78.128.196.–
http://ksp.mff.cuni.cz - Nauč se opravdu programovat
Hnykda
~ Anonymní uživatel
13 příspěvků
20. 12. 2009   #10
-
0
-

Tak si nevím rady ještě s něčím, chtěl jsem, aby bylo možné určit si proměnnou. Nemůžu ale pak přijít na to, jak udělat podmínku "Jste blízko" viz kod tucne

    int a; // Hadany

int b; // Cislo
int d; // Tolerance


cout << "Zadejte cislo ktere chcete hadat: " ;
cin >> b; // Cislo
cout << "Zadejte toleranci ";
cin >> d; // Tolerance
cout << "\nUhodnete cislo: " ;


do
{ cin >> a; // Hadane
if (a == b+d || b-d) //TADY-Když např. určím hádané číslo 30, a toleranci 3, veta "ses blizko" se ukaze pro cisla 27-33
cout << "-----------------\nSes blizko: ";

else if (a < b)
cout << "-----------------\nPrilis nizke: ";

else if (a > b)
cout << "-----------------\nMoc vysoke: ";
}
while (a != b);

cout << "-----------------\nAno! " << b << " je spravne!\n";


Musí se to udělat přes nějaký cyklus nebo stačí jedna proměnná navíc?

Nahlásit jako SPAM
IP: 85.70.178.–
Bald3rr0
Super člen
20. 12. 2009   #11
-
0
-

To Hnykda : (Číslo <= Hádané číslo + tolerance && Hádané číslo - tolerance >= Číslo) && Hádané číslo != číslo

Číslo, které musí uživatel uhádnout: 10
tolerance: 2
Tudíž čísla, která může zadat {8, 9, 11, 12}
11 <= 10 + 2 && 10 - 2 <= 11 && 10 != 11
9 <= 10 + 2 && 10 - 2 <= 9 && 10 != 9

if( (a <= b+d && a >= b-d) && a != b) cout << "Jseš blízko"

Nahlásit jako SPAM
IP: 82.100.0.–
H4wk.cz0
Newbie
20. 12. 2009   #12
-
0
-

To Hnykda : stačí kontrolovat rozsah:

if (a >= b-d && a <= b+d && a != b)
A co to vsichni mate s tema podminkama. Mel by sis prostudovat jak funguje vyhodnocování kódu. Tady ti sice spousta lidí ráda pomůže, ale když si přečteš jednu dobrou knížku, tak se nebudeš muset ptát vůbec.

Nahlásit jako SPAM
IP: 78.128.196.–
http://ksp.mff.cuni.cz - Nauč se opravdu programovat
Hnykda
~ Anonymní uživatel
13 příspěvků
20. 12. 2009   #13
-
0
-

Děkuju moc oboum.
Jde o to že tohle nikde nevyčteš, spíš si to musíš nějak "odvodit" logicky. Takhle ze začatku kdy se učím teprv pár dní je to moc složité.

Nahlásit jako SPAM
IP: 85.70.178.–
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, 144 hostů

Podobná vlákna

Nejasnosti v Delphi — založil stif

Nejasnosti okolo exec — založil Jeffery

Pár Pařmenů — založil Tokan

Par chybek — založil Zelenáč

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ý