Názory ke článku C++ - 4. lekce – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Názory ke článku C++ - 4. lekce – Programujte.comNázory ke článku C++ - 4. lekce – Programujte.com

 

Názory ke článku C++ - 4. lekce

PPavel   NOVÝ
26. 9. 2005

když používám fci cin.getline() a zadám bvětší počet znaků, než je definováno. Ukončí se průběh programu .... To je normální?

liskohlav   NOVÝ
22. 11. 2005

V úkolu 4. lekce C++ je bod, jenž říká, aby program vypsal jméno pozpátku.
Pokud však napíšu kratší jméno, než je definováno u cin.getline(), vypíše mi program nejdříve několik nesmyslných znaků a teprve po nich následuje jméno pozpátku. Dá se tomu nějak předejít?

CuroBOT   NOVÝ
22. 11. 2005

použijte jen cin :)

liskohlav   NOVÝ
23. 11. 2005

Děkuji, nicméně chyba byla uz v zadání proměnné
char prom[tady byla chybička]; =)

Crash   NOVÝ
10. 12. 2005

... Kdyz zadam do include cstring nebo string.h tak mi kompilator Dev-C++ hazi chybu, ze je funkce cout nedeklarovana (pouzil jsem cout << "Blabla")
Nevite co s tim ? Diky predem.

baryman   NOVÝ
18. 12. 2005

me to dela to same, poradte nekdo ... kod :
--- kod ---
#incule <cstring>
using namespace std;
int main()
{
char jmeno[]="jirka";
cout << "Vase jmeno ma " << strlen(jmeno) << " znaku";
cin.get();
cin.get();
return 0;
}
--- kod ---

baryman   NOVÝ
18. 12. 2005

OPRAVA (porad to nejede a pise to chybu na zadku s cout)
--- kod ---

#include <cstring> //vyskousel jsem i string.h
using namespace std;
int main()
{
char jmeno[]="jirka";
cout << "Vase jmeno ma " << strlen(jmeno) << " znaku";
cin.get();
cin.get();
return 0;
}

--- kod ---

CuroBOT   NOVÝ
18. 12. 2005

Se nedivte,m ze vam to pise chybu, kdyz cout je soucasti ostream.. (iostream)
Staci pridat : #include <iostream>

#include <cstring>
#include <iostream>
using namespace std;
int main()
{
char jmeno[]="jirka";
cout << "Vase jmeno ma " << strlen(jmeno) << " znaku";
cin.get();
cin.get();
return 0;
}

DanP   NOVÝ
30. 1. 2006

Taky jsem na to narazil - dela to cin.get - pamatuje si porad zmacknuty enter takze program dojede na konec programu vetsinou tak rychle ze to ani nezaregistrujes, kdyz si za to hodis cyklus a zacyklis ho tak uvidis. Mam ale stejnej problem nezrusi to ani cin.clear(); Co s tim? Jak ohlidat preteceni pole znaku?

samo   NOVÝ
20. 2. 2006

Curo pozri sa prosím ťa na toto. Úplne na konci keď mi už vypisuje to meno tak tam za to meno odzadu vypíše čudné znaky a neviem ako to dať preč.


#include <iostream>
#include <cstring>
using namespace std;
int main()
{
//špeciálne znaky
char ee=130;
char ss=231;
char je=216;
char ii=161;
char aa=160;
char cc=159;


//meno a vek

char meno[30];
cout << "Va" << ss << "e jm" << ee << "no pros"<< ii << "m : ";
cin >> meno;
int vek;
cout << "V" << aa << ss << " v" << je << "k pros" << ii << "m : ";
cin >> vek;


//zadanie čísiel do poľa

int pole[5];
int i;
cout << endl;
for (i=0; i<5; i++) //1.řádek
{
cout << "Zadej " << i+1 << ". " << cc << ii << "slo pros" << ii << "m : ";
cin >> pole[i];
}


//výpis výsledku

cout << endl;
int vysledok=0;
for (i=0; i<5; i++)
{
cout << pole[i];
if (i != 4) cout << "+";
else cout << "=";
vysledok = vysledok + pole[i];
}
cout << vysledok << endl;


//výpis mena odzadu
int j=0;
char menoodzadu[strlen(meno)];
for (i=strlen(meno); i>0; i--)
{
menoodzadu[j] = meno[i-1];
j++;
}
cout << "\nVa" << ss << "e jm" << ee << "no je : " << meno << endl;
cout << "Pozp" << aa << "tku je to : " << menoodzadu;



cin.get();
cin.get();
return 0;
}

Enuyvatar   NOVÝ
23. 2. 2006

text:
jediný rozdíl mezi cin.getline(); a cin.get(); je, že cin.get(); zanechává znak nového řádku ve vstupní frontě.

cin<b>,</b>get(jmeno, 20);
cin<b>,</b>get(jmeno2, 20); // problém

má byť:
jediný rozdíl mezi cin.getline(); a cin.get(); je, že cin.get(); zanechává znak nového řádku ve vstupní frontě.

cin<b>.</b>get(jmeno, 20);
cin<b>.</b>get(jmeno2, 20); // problém

Paja...   NOVÝ
12. 3. 2006

a co to přesně je ta vstupní fronta?

Palmik   NOVÝ
12. 8. 2006

#include <iostream>
#include <cstring>
using namespace std;
int main()
{

char ee=130;
char ss=231;
char je=216;
char ii=161;
char aa=160;
char cc=159;



//jmeno
char jmeno[30];
cout << "Va" << ss << "e jm" << ee << "no pros"<< ii << "m : ";
cin >> jmeno;
cin.get ();

//vek
int vek;
cout << "V" << aa << ss << " v" << je << "k pls: ";
cin >> vek;
cin.get ();

//otazani na cisla
int cislo[5];
int i;
cout << endl;
for (i=0; i<5; i++)
{
cout << "Zadej " << i+1 << ". " << cc << ii << "slo pros" << ii << "m : ";
cin >> cislo[i];
}


//ukazani souctu
cout << endl;
int vysledek=0;
for (i=0; i<5; i++);
cout << cislo[0] << "+" << cislo[1] << "+" << cislo[2] << "+" << cislo[3] << "+" << cislo[4] << "=" << cislo[0] + cislo[1] + cislo[2] + cislo[3] + cislo[4];
cin.get ();

//jmeno pozadu
int j=0;
char jmenoodzadu[strlen(jmeno)];
for (i=strlen(jmeno); i>0; i--)
{
jmenoodzadu[j] = jmeno[i-1];
j++;
}
cout << "\nVa" << ss << "e jm" << ee << "no : " << jmeno << endl;
cout << "Pozp" << aa << "tku : " << jmenoodzadu;

cin.get();
cin.get();
return 0;
}


na konec (jmeno pozpatku) mi to "vyflusne" nejaky znaky... nejak to nechapu :(
pls help

  NOVÝ
19. 9. 2006

Proč se tam píše #include <cstring> ?

  NOVÝ
23. 9. 2006

Nevím jak mám vypsat jméno pozádu. Co znamená "help-cykly".
Díky

osoba   NOVÝ
11. 10. 2006

Takže ti to vyflusne jméno pozpátku plus nějaký znaky... ?

Problém je v tom, že v řetěci jmenoodzadu ti na konci chybí znak '\0', který říká funkci cout, že je konec proudu. Myslim:)

Curo, autor článku   NOVÝ
3. 11. 2006

baryman napsal: me to dela to same, poradte nekdo ... kod : #
##
#--- kod ---#
##
##incule <cstring>#
##
#using namespace std;#
##
#int main()#
##
#{#
##
# char jmeno[]="jirka";#
##
# cout << "Vase jmeno ma " << strlen(jmeno) << " znaku";#
##
# cin.get();#
##
# cin.get();#
##
# return 0;#
##
#}#
##
#--- kod ---

Curo, autor článku   NOVÝ
3. 11. 2006

Curo napsal:

baryman napsal: me to dela to same, poradte nekdo ... kod : #
##
#--- kod ---#
##
##incule <cstring>#
##
#using namespace std;#
##
#int main()#
##
#{#
##
# char jmeno[]="jirka";#
##
# cout << "Vase jmeno ma " << strlen(jmeno) << " znaku";#
##
# cin.get();#
##
# cin.get();#
##
# return 0;#
##
#}#
##
#--- kod ---


dsfsdfsd

R4STO   NOVÝ
12. 11. 2006

skus si pomoct z minulej lekcie, kedy si mal vypisat prve pismeno mena, a potom prve a druhe.
Tak skus to iste napisat opačne.

Thomisso   NOVÝ
4. 12. 2006

Já to vyřešil takhle:

int i;
for (i=strlen(jmeno); i>=0; i--)
{
cout << jmeno[i];
}

Alina   NOVÝ
17. 12. 2006

Prosím poraďte,
všechno mi jde vpořádku, ale součet čísel neodpovídá pravdě. Např. při zadání 11111 = 245. ?

locksley   NOVÝ
22. 12. 2006

čuz, tohle mi funguje, ale moc jsem to upravovat nemusel .)


char year[5];
cout << "\n\nV kterem roce byl vas dum postaven?\n";
cin >> year;
cin.clear();
cin.get();

cout << "Jaka je jeho adresa?\n";
char address[80];
cin.getline(address, 80);

cout << "Rok vystavby: " << year << "\n";
cout << "Adresa: " << address << "\n";
cout << "Konec!\n";

Locksley   NOVÝ
3. 1. 2007

to vypsání jsem rozlousk vpoho ale ty čísla mě zadrhly, asi jsem něco zapoměl, ale prošel jsem si poznámky a nic jsem nenašel.
udelal jsem asi tři řešení a vždy to píše po zadání pěti jedniček součet 106

cout << "\nSou" << ch << "et t" << eh << "chto " << ch << ic << "sel je:";
int soucet;
int a = cisla[0];
int b = cisla[1];
int c = cisla[2];
int d = cisla[3];

soucet = a+b+c+d;
cout << soucet << "\n";

pecan987   NOVÝ
27. 2. 2007

Mě to zase píše po zadání pěti jedniček součet 245, už si nevím rady co s tím:

cout << "Soucet cisel je: ";

delka=strlen(cisla);
cout << cisla[0] + cisla[1] + cisla[2] + cisla[3] + cisla[4] << "\n\n";

CSSteroid   NOVÝ
18. 4. 2007

hele, řeknu ti jednu věc kde máš podle mě chybu ... :) "delka=strlen(cisla);" ... zkus ty čísla z uživatele dostat pomocí cyklu ... např for... :) zaručeně se ti to povede...;)
//cisla
cout << "\nProsim vloz pet cisel\n";
for (koef = 0; koef < 5; koef++)
{
cin >> cislo[koef];
};

//soucet cisel
cout << cislo[0] + cislo[1] + cislo[2] + cislo[3] + cislo[4] << "\n";

Fredy   NOVÝ
24. 4. 2007

Tip: Znak "1" je v tabulce ASCII pod číslem 49. 5*49=245 ;-)

mr.Crow   NOVÝ
6. 7. 2007

Protože v cdsting jsou definované f-ce strlen() a podobné.

mr.Crow   NOVÝ
6. 7. 2007

ehm, měl jsem na mysli cstring, překlep :-)

mr.Crow   NOVÝ
6. 7. 2007

for (i=strlen(meno); i>0; i--)
{
menoodzadu[j] = meno[i-1];
j++;
}

tento cyklus zkopíruje do menoodzadu znaky toho jména, ale zastaví se na posledním písmenu a nezkopíruje nulový bit - tj konec řetězce (ten potřebuje cout, aby věděl, kdy má skončit - a aby netisk ty paznaky)

takže:
for (i=strlen(meno); i-1>0; i--)
{
menoodzadu[j] = meno[i-1];
j++;
}

by myslím mohlo fungovat, ale jistě to nevím, nemám to kde vyzkoušet, píšu to z hlavy :-)

mr.Crow   NOVÝ
6. 7. 2007

pardon, blbnu :-) má to být

for (i=strlen(meno); i>-1; i--)
{
menoodzadu[j] = meno[i-1];
j++;
}

mr.Crow   NOVÝ
6. 7. 2007

hodnota znaku 1 = 49. Nesmíš ty jedničky sčítat jako char. Takže při deklaraci tu proměnnou nenastavuj jako char cisla[5], ale int cisla[5]

doufám že to pomůže

echo112   NOVÝ
27. 7. 2007

#include <iostream>

/*#include <cstring> ... ide to aj bez zahrnutia knihovni csting ;)*/
using namespace std;
int main()
{

char ee=130;
char ss=231;
char je=216;
char ii=161;
char aa=160;
char cc=159;



//jmeno
char jmeno[30];
cout << "Va" << ss << "e jm" << ee << "no pros"<< ii << "m : ";
cin >> jmeno; /*1. pripomienka, funguje len pri zadani mena bez priezviska!(pri zadani retazca bez prazdnych znakov, medzier)*/

cin.get ();

//vek
int vek;
cout << "V" << aa << ss << " v" << je << "k pls: ";
cin >> vek;
cin.get ();

//otazani na cisla
int cislo[5];
int i;
cout << endl;
for (i=0; i<5; i++)
{
cout << "Zadej " << i+1 << ". " << cc << ii << "slo pros" << ii << "m : ";
cin >> cislo[i]; /*1. chyba, namiesto 'cin>>cislo;' tam treba mat 'cin>>cislo[i];'*/

}


//ukazani souctu
cout << endl;
int vysledek=0; /*2. pripomienka, zbytocna deklaracia, kedze si premennu vysledok nikde inde nepouzil*/
for (i=0; i<5; i++);/*3. pripomienka, tento cyklus tu ma aky zmysel?*/
[i]cout << cislo[0] << "+" << cislo[1] << "+" << cislo[2] << "+" << cislo[3] << "+" << cislo[4] << "=" << cislo[0] + cislo[1] + cislo[2] + cislo[3] + cislo[4];[/i]
/*Vypis cisel a ich scitanie je pridlhy! Radsej to ries pomocou cyklov:

for(int i=0;i<4;i++)

cout<<cislo[i]<<"+";
cout<<cislo[5]<<"=";
for(int i=0;i<5;i++)
vysledok+=cislo[i]; //pouzitie premennej vysledok
cout<<vysledok;


*/

cin.get ();

//jmeno pozadu
int j=0;
char jmenoodzadu[strlen(jmeno)];
cout<<endl;
for (i=strlen(jmeno); i>0; i--)
{
jmenoodzadu[j] = jmeno[i-1];
j++;
}
jmenoodzadu[j]='\0';
cout << "\nVa" << ss << "e jm" << ee << "no : " << jmeno << endl;
cout << "Pozp" << aa << "tku : " << jmenoodzadu;

cin.get();
cin.get();
return 0;
}

echo112   NOVÝ
27. 7. 2007

#include <iostream>

/*#include <cstring> ... ide to aj bez zahrnutia knihovni csting ;)*/
using namespace std;
int main()
{

char ee=130;
char ss=231;
char je=216;
char ii=161;
char aa=160;
char cc=159;



//jmeno
char jmeno[30];
cout << "Va" << ss << "e jm" << ee << "no pros"<< ii << "m : ";
cin >> jmeno; /*1. pripomienka, funguje len pri zadani mena bez priezviska!(pri zadani retazca bez prazdnych znakov, medzier)*/

cin.get ();

//vek
int vek;
cout << "V" << aa << ss << " v" << je << "k pls: ";
cin >> vek;
cin.get ();

//otazani na cisla
int cislo[5];
int i;
cout << endl;
for (i=0; i<5; i++)
{
cout << "Zadej " << i+1 << ". " << cc << ii << "slo pros" << ii << "m : ";
cin >> cislo[ i ]; /*1. chyba, namiesto 'cin>>cislo;' tam treba mat 'cin>>cislo[ i ];'*/

}


//ukazani souctu
cout << endl;
int vysledek=0; /*2. pripomienka, zbytocna deklaracia, kedze si premennu vysledok nikde inde nepouzil*/
for (i=0; i<5; i++);/*3. pripomienka, tento cyklus tu ma aky zmysel?*/
[i]cout << cislo[0] << "+" << cislo[1] << "+" << cislo[2] << "+" << cislo[3] << "+" << cislo[4] << "=" << cislo[0] + cislo[1] + cislo[2] + cislo[3] + cislo[4];[/i]
/*Vypis cisel a ich scitanie je pridlhy! Radsej to ries pomocou cyklov:

for(int i=0;i<4;i++)

cout<<cislo[i]<<"+";
cout<<cislo[5]<<"=";
for(int i=0;i<5;i++)
vysledok+=cislo[i]; //pouzitie premennej vysledok
cout<<vysledok;


*/

cin.get ();

//jmeno pozadu
int j=0;
char jmenoodzadu[strlen(jmeno)];
cout<<endl;
for (i=strlen(jmeno); i>0; i--)
{
jmenoodzadu[j] = jmeno[i-1];
j++;
}
jmenoodzadu[j]='\0';
cout << "\nVa" << ss << "e jm" << ee << "no : " << jmeno << endl;
cout << "Pozp" << aa << "tku : " << jmenoodzadu;

cin.get();
cin.get();
return 0;
}

echo112   NOVÝ
27. 7. 2007

Je tam zopár chýb spôsobených obľúbenosťou premennej 'i' , ktora zmizne pri písaní komentárov s hranatými zátvorkami.
A tiež sa mi to podarilo odoslať 2x. :)

ado21   NOVÝ
19. 9. 2007

znaky odreze cin.clear(); // zmeni chybovy stav na dobry
a za clear este cin.ingore(1000.'\n'); //ingoruje znaky

Jan Tacheci   NOVÝ
2. 10. 2007

Dobry den, jak zjistim aktualni velikost pole , tzn. kolik prvku zrovna obsahuje? Najekou instrukci? V pascalu to myslim bylo velikost:=High(pole);
dekuji

echo112   NOVÝ
3. 10. 2007

cout<<sizeof(pole)/sizeof(int);

Mozes aj tymto sposobom.

dzinek   NOVÝ
8. 10. 2007

hmmm...ja to nechapu kdyz neuvidim priklad a tady sou vsechny priklady spatne

M4D   NOVÝ
21. 10. 2007

Zdravim... je v C++ pripustne neco takoveho?

fscanf(input, "%d", &howmany);
int pole[howmany];

Jakoze si program nejdrive z nejakeho textaku nacte jak velke bude pole a az potom jej definuje.

Dik moc

Anonymní uživatel   NOVÝ
12. 11. 2007

To locksley: Stacilo napsat pred to cin.getline(adress, 80); - cin.get(); :D:D:D

andering   NOVÝ
21. 2. 2008

To echo112: No jestli se nepletu tak tímto způsobem se vypíše kolik prvků příslušné pole je shopno pojmout.

Způsobů jak získat informaci o tom kolik příslušné pole obsahuje prvků je určitě mnoho.
Nenapadá mě způsob jak to zjistit pro pole třeba intů, jinak než jsi někde uchovávat, kolik jich uživatel zadal.
Ale pro řetězec mě napadají dva způsoby:
1. Funkcí std::strlen(pole) , vzhledem ktomu že je tento seriál jak koukám čistě o C++, tak bych jen podotknul že tato funkce pochází ze standardní knihovny pro C.
2. Spočíat si to posvém :



#include <iostream>
using namespace std;

int main (void)
{
int POCET_PISMEN=0; //zde budeme postupně počítat platná písmenka pole
char pole[10] = "ahoj"; //pole které se bude počítat

for(POCET_PISMEN=0;pole[POCET_PISMEN] != '\0';POCET_PISMEN++);


Cyklus postupně prochází pole dokud nenarazí na ukončovací znak, který je na konci každého řetězce. (ukončovací znak je '\0' ). Při procházení pole, je v proměnné POCET_PISMEN, uchován index prvku pole který se bude porovnávat. Když na této pozici je ukončovací znak, cyklus skončí a v proměnné POCET_PISMEN bude uchována pozice tohoto znaku od začátku řetězce, respektive kolik znaků řetězec obsahuje včetně ukončovací nuly.
Pravděpodobně budeme chtít délku řetězce bez ukončovací nuly,tzn že bysme měli jedničku odečíst. Ovšem to by byla chyba, vzhledem ktomu že pole je indexováno od 0, vždy bylo číslo v POCET_PISMEN o jedno menší než skutečná pozice písmene které bylo porovnáváno.



cout << POCET_PISMEN;

return 0;
}

Kolcek   NOVÝ
3. 12. 2008

zkusil jsem udělat úkol z této lekce a po zkompilování a spuštění se mi ukáže error(odesílat/neodesílat). Než jsem přidal příkaz na vypsání jména pozpátku, tak vše fungovalo bez problémů.
Zde přidávám kód a omlouvám se za jeho nepřehlednost a prosím o radu

#include <iostream>

#include <cstring>
#include "csznaky.h"
using namespace std;

int main()
{
int a;
int y;
int z=80;
int vysledek;
int cisla[5];
char jmeno[y];
cout << "V"<<ii<<"tejte v "<<uu<<"kolu pro lekci 4\n";
for(y=z;y>=0,y--;)
cout<<"*";
cout << "\nVa" << ss << "e jm" << ee << "no pros" << ii << "m: ";
cin >> jmeno;
int vek;
for(y=z;y>=0,y--;) cout<<"*";
cout << "\nV" << aa << ss << " v" << _e << "k pros" << ii << "m: ";
cin >> vek;
int i;
for(y=z;y>=0,y--;) cout<<"*";
cout << "Zadejte pros" << ii << "m p" << _e << "t " << cc << ii << "slic: \n";
for(i=0; i<5; i++)
{
cout << i+1 << ". "<<cc<<ii<<"slice: ";
cin >> cisla[i];
}
cout <<"Sou"<<cc<<"et zadan"<<yy<<"ch "<<cc<<ii<<"sel je: ";
cout <<cisla[0]<<"+"<<cisla[1]<<"+"<<cisla[2]<<"+"<<cisla[3]<<"+"<<cisla[4]<<" = ";
vysledek=cisla[0]+cisla[1]+cisla[2]+cisla[3]+cisla[4];
cout<<vysledek;
cout<<endl;
for(y=z;y>=0,y--;) cout<<"*";
cout << "\nVa" <<ss<<"e jm"<<ee<<"no pozp"<<aa<<"tku je: \n";
for(i=strlen(jmeno);i>=0;i--)
{
cout<<jmeno[i];
}
cout<<endl;
cin.get();
cin.get();
return 0;
}

Black3r   NOVÝ
25. 2. 2009

pri kompilacii mi dev-c++ vypise chybu:

variable-sized object 'omeno' may not be initialized

pise to v tejto casti kodu:
int dlzka = strlen(meno);
char omeno[dlzka] = meno;

Kod:

#include <iostream>

#include <cstring>
using namespace std;
int main()
{
//Znaky:
char ss = 231;
char ee = 130;
char ii = 161;

//Meno:
char meno[255];
cout << "Va" << ss << "e jm" << ee << "no pros" << ii << "m: ";
cin.getline(meno, 255);

//Vek:
int vek;
cout << "Va" << ss << " vek:";
cin >> vek;
cin.get();

//Cisla + Sucet
int sucet;
int cisla[5];
int i;
cout << "Zadaj 5 cisel: \n";
for (i=0; i<5; i++)
cin >> cisla[i];
sucet = cisla[0] + cisla[1] + cisla[2] + cisla[3] + cisla[4];
cout << "\nSucet cisiel je: " << sucet;

//Meno odzadu:
int dlzka = strlen(meno);
char omeno[dlzka] = meno;
cout << omeno << sizeof omeno;
cin.get();
cin.get();
return 0;
}



Cerb   NOVÝ
27. 4. 2009

Prosim vas kde najdu odeslane prace od odstatnich uzivatelu nikde to nemuzu najit.

Anonymní uživatel   NOVÝ
3. 5. 2010

Reagoval na komentář od uživatele xRomanx :
no proč tam pišete <> takove znaky proč ne třeba # include <iostream>

Nightshare   NOVÝ
13. 8. 2010

dobrý den mám tu menší problém ať se snažím sebevíc strlen() mi vratí max velikost 4 takže program mi funguje pokud zadávam krátka jména ale pokud zadám něco delšího vypíšou se jen posledni 4 písmena :/....

Doomista   NOVÝ
15. 9. 2010

Ahoj, omlouvám se, že to dávám zrovna sem, ale potřeboval bych vědět so je void a jak se používá. Popř. existuje nějaký typ proměnné, kam bych mohl zapsat třeba tohle: cout << "Ahoj světe" << jmeno << "takhle se jmenuji222"; ?(ty dvojky jsou tam jenom proto, aby tam nebyly jen písmena)
díky za odpověď

stepan-san   NOVÝ
21. 10. 2010

#include <iostream>
#include <cstring>
using namespace std;
int main()
{
const int pocet_cisel=5;
char s = 231;
char e = 130;
char i = 161;
char a = 160;
char je = 216;
char name[20];
int vek;
cout << "Va" << s <<"e jm" << e << "no pros" << i <<"m :";
cin.get(name,20);
cout << "V" << a << s <<" v" << je << "k :";
cin >> vek;
int cisla[pocet_cisel];
int p;
cout << "nyni zadej 5 cisel.\n";
for (p=1;p<=pocet_cisel;p++)
{
cout << "cislo " << p << " :";
cin >> cisla[p];
}
int soucet = 0;
int q;
for (q=1;q<=pocet_cisel;q++)
soucet = soucet + cisla[q];

cout << "soucet cisel jest :" << soucet << "\n";
int str = strlen(name);
int h;

for (h=str;h>=0;h--)
cout << name[h];

cin.get();
cin.get();
return 0;
}

stepan-san   NOVÝ
21. 10. 2010

Reagoval na komentář od uživatele Nightshare :
nemas spatne nastavenou velikost pole kam se ti ulozi jmeno? dej char jmeno[20] a pak cin.getline(jmeno,20) a melo by to byt..

SpeedyD34D   NOVÝ
25. 10. 2010

... Akorát bez tabulkového designu :) Na to nemám čas;)

// cviceni4.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <cstring>
#include <string.h>


using namespace std;

int main()
{

/*inicializování znaků české diakritiky */

const char d_i=214;
const char d_e=130;
const char d_a=160;
const char d_y=236;
const char h_r=253;
const char h_s=231;
const char h_e=216;
const char h_c=159;

/*úvodni hlaska*/
cout <<"V"<<d_i<<"tejte v m"<<d_e<<"m nov"<<d_e<<"m programu!\nStisknut"<<d_i<<"m kl"<<d_a<<"vesy ENTER p"<<h_r<<"ejdete k dal"<<h_s<<d_i<<"mu kroku.";
cin.get();

cout <<"\nZadejte pros"<<d_i<<"m va"<<h_s<<"e jm"<<d_e<<"no:\t";
char cele_jmeno[25];
cin.getline(cele_jmeno, 25);

int b = strlen(cele_jmeno);
cout <<"V"<<d_y<<"pis jm"<<d_e<<"na pozp"<<d_a<<"tku je:";
int i;
for (i = b; i >=0; i--) {
cout << cele_jmeno[i];

}
cin.get();


cout <<"\nNyn"<<d_i<<" zadejte va"<<h_s<<" v"<<h_e<<"k:\t";
int vek;
cin >> vek;



cin.get();
cout <<"Zadejte p"<<h_e<<"t "<<h_c<<d_i<<"sel:";



int cisla[6];
int a;
for (a = 0; a<5; a++)
{
cout <<"\n\tZadejte cislo" << a+1 << ".";
cin >> cisla[a];
}
int vysledek = cisla[0]+cisla[1]+cisla[2]+cisla[3]+cisla[4];

cout <<"\nV"<<d_y<<"sledeke je:\t" << vysledek;

cin.get();
cin.get();
return 0;
}

Hynek   NOVÝ
30. 10. 2010

#include <stdio.h>

#include <iomanip>
#include <iostream>

using namespace std;

int main()
{
cout << "Vaše jméno prosím: ";
char jmeno[20];
cin.getline(jmeno, 20);


cout << "Váš věk prosím: ";
char vek[3];
cin.get(vek, 3);
cin.get();

int cisla[5];

for (int i=0; i<5; i++) {
cout << "Zadej " << i+1 << ". cislo: ";
cin >> cisla[i];
}

cout << jmeno << endl;

cout << vek << endl;

for (int i=0; i<5; i++) {
cout << i+1 << ". cislo je: " << cisla[i] << endl;
}

int vysledek;
vysledek = cisla[0] + cisla[1] + cisla[2] + cisla[3] + cisla[4];

cout << "Soucet cisel je: " << vysledek << endl;

int delka=strlen(jmeno);

for (delka; delka>=0; delka--) {
cout << jmeno[delka];
}

return 0;
}

Johny.154   NOVÝ
29. 11. 2010

cawte ludia chcel by som sa opytat.... celkom som nepochopil toto ze "Zajímavosti s řetězci"

toto s tym ze" #include <cstring> // A TAK DALEJ :D newem ze ako to mam napisat :(

... vedel by mi niekto napisat zdrojovi kod ako sa to robi ???...dakujem za odpovede :D

fleury93   NOVÝ
13. 1. 2011

Tady je můj program pracuje dobře až na to, že když sečtu ty čísla tak mě to vyhodí výsledek o 240 větší než má být tak sem na konec přidal i -240 a už to jde. Pídím se, ale proč mě to tak blbne tak. Vytvořil jsem nový projekt a udělal ty čísla znova, ale pořád to dělalo to samé tak je chyba asi někde jinde než v tom 1. programu. Prosím o pomoc


#include <cstdlib>
#include <iostream>

using namespace std;

char s= 231; //š
char e= 130; //é
char e2=216; //ě
char i= 161; //í
char u= 133; //ů
char a= 160; //á
char c= 159; //č

char jmeno[21];
char cisla[5];

int vysledek;
int vek;
int d; //délka jména pomocí strlen

int main(int argc, char *argv[])
{
cout<<"\t\t\t\t* Va"<<s<<"e jm"<<e<<"no pros"<<i<<"m: *\n\t\t\t\t* (max. znak"<<u<<"..20) * \n\t\t\t\t**********************\n";
cin.getline(jmeno, 20);
d=strlen(jmeno);


cout<<"\t\t\t\t ---------------\n \t\t\t\t V"<<a<<s<<" v"<<e2<<"k pros"<<i<<"m:\n\t\t\t\t ---------------\n";
cin>>vek;

cout<<"\t\t\t\t ===============\n\t\t\t\t 5 "<<c<<i<<"sel pros"<<i<<"m:\n\t\t\t\t ===============\n";

for(int i2=1; i2<6; i2++)

{cin>>cisla[i2];
}

vysledek=cisla[1]+cisla[2]+cisla[3]+cisla[4]+cisla[5]-240;
cout<<"\n\n"<<vysledek<<"\n";

cout<<"Jm"<<e<<"no pozp"<<a<<"tku je:";
for(int i=d; i>0; i--)
{cout<<" "<<jmeno[i-1];
}
cout<<"\n";

system("PAUSE");
return EXIT_SUCCESS;
}


ps: a ještě něco, když zadám větší jak jednociferné číslo tak mě to pusti zas jenom do 5-ti znaků a pak to hned sečte jak např. píšu 22,54,78 a stop teda zadám pouze 3 čísla a výsledek vzejde z čísel z př. tedy 2+2+5+4+7. Taktéž žádam o pomoc díky

Honza   NOVÝ
24. 2. 2011

Reagoval na komentář od uživatele fleury93 :

Dej ty čísla přes int, a né přes char, když to dáš jako char tak se ti to ukládá jako by v množině { '2', '2', '5' atd ;) takže jen změn místo char na int a mělo by to jít

princ   NOVÝ
8. 7. 2011

char menodva[6];
  int lol;
  lol=strlen(meno);

  int lolo=lol;
  int i;

    for (i=0;i<lol;i++)
   {
    lolo=lolo-1;
    menodva[i]=meno[lolo];
      
  }
  menodva[lol]='\0';

Atom   NOVÝ
1. 8. 2011

Můžu se zeptat, jaké mé využití to bool popřípadě mi prosím napište i nějáký lehký zdrojový kod s jedo využitím dík 

lukas.balaz   NOVÝ
9. 8. 2011

Nefunguje mi zdrojak

#include <cstring>
using namespace std;
int main()
{
  char jmeno[20];
  cout << "Zadejte vase jmeno:\n";   //tu mi vyhadzuje chybu
  cin.getline(jmeno, 20);    // čte celý řádek
  cout << "vase jmeno je " << jmeno << ".\n";
  cin.get();
  cin.get();
  return 0;
}

Ak dám namiesto <cstring> <iostream>, funguje to, ale ak napíšem viac znakov ako 19 a stlačím enter, vypne program.

Gambo   NOVÝ
10. 8. 2011

zde pridavamuj doufam plne funkcni zdrojak:D

#include <iostream>
#include <cstring>
#include <string.h>

using namespace std;
int main()
{
  char ch=159;char sh=231;char ii=161;char aaa=160;char ee=216;char eee=130;
  char jmeno[20] = {0};
  int cisel[6];
  int soucet,a,b,c,d,e =0;
  int year;
    cout << "Va"<<sh<<"e jm"<<eee <<"no:";
     cin.getline(jmeno, 20);
    cout << "V"<< aaa << sh <<  " v"<< ee <<"k:";
     cin >> year;
     cin.clear();
     cin.get();
    cout <<"Zadejte p" <<ee <<"t " <<ch <<ii <<"sel:\n";
     cin >> cisel[0]>>cisel[1]>>cisel[2]>>cisel[3]>>cisel[4];
     cin.get();
   a=cisel[0];b=cisel[1];c=cisel[2];d=cisel[3];e=cisel[4];
   soucet = a+b+c+d+e;
     
    cout <<"Va" <<sh <<"e jm" <<eee <<"no po zp"<<aaa<<"tku je\n";
    
for (int i=19; i>=0;i--)
   {if (jmeno[i]!=0)
  
    cout << jmeno[i]; }
    cout << "\n";
    cout <<"V"<<aaa<<sh<<" v"<<ee<<"k je\n";
    cout <<year;
    cout << "\n";
    cout <<"a sou"<<ch<<"et "<<ch<<ii<<"sel je\n";
    cout << soucet;
     cin.get();
     cin.get();
  return 0;
}

Reminger   NOVÝ
10. 1. 2012

Mělo by to být funkční :)

#include <iostream>
#include <cstring>

using namespace std;
int main()
{
cout << "Va" << char(231) << "e jm" << char(130) << "no pros" << char(161) << "m?\n";
char name[20];
cin.getline(name,20);
cout << "V" << char(160) << char(231) << " v" << char(216) << "k pros" << char(161) << "m?\n";
int age;
cin >> age;
cout << "Zadejte pros" << char(161) << "m 5 " << char(159) << char(161) << "sel:\n";
cin.get();
int numbers[5];
int i,tmp=0;
for (i=0;i!=5;i++)
{
  cin >> numbers[i];
  tmp = tmp + (int)numbers[i];
}
cout << endl << tmp;
for (i=strlen(name);i>=0;i--)
  cout << name[i];
cin.get();
cin.get();
return 0;
}

stif   NOVÝ
29. 2. 2012
#include <iostream>
using namespace std;

int main()

{
char meno[10];
cout<<"Vase meno prosim:";
cin>>meno;

int vek;
cout<<"Vas vek prosim:";
cin>>vek;

char cisla[5];
cout<<"Zadajte prosim jednociferne cislo->";
cin>>cisla[0];
cout<<"druhe:";
cin>>cisla[1];
cout<<"tretie:";
cin>>cisla[2];
cout<<"stvrte:";
cin>>cisla[3];
cout<<"piate:";
cin>>cisla[4];

cout<<"Toto je sucet vami zadanych cisel:"<<cisla[0]+cisla[1]+cisla[2]+cisla[3]+cisla[4]-240;

cout <<"\nVase meno naopak je->"<<meno[9]<<meno[8]<<meno[7]<<meno[6]<<meno[5]<<meno[4]<<meno[3]<<meno[2]<<meno[1]<<meno[0];

cout<<"\nA teraz vam navyse poviem Vas vek:";
cout<<"\nVas vek je:"<<vek<<" rokov.\nDakujem.";

cin.get();
cin.get();

return 0;

}

jednoducho a prehľadne jedina chyba je ,že som od suctu odcital 240 lebo vždy ukazovalo o 240 viac :) 

Jkd Kje   NOVÝ
1. 3. 2012

#57 lukas.balaz
daj obidve aj iostream a cstring

pulsik   NOVÝ
1. 5. 2012

#include <iostream>
#include <cstring>
using namespace std;
const int size = 30;
const int stop = 5;
char a=160, c=159, s=231, e=130, ee=216, i=161;
char jmeno[size];
char vek[size];
int cislo, hodnota[stop], prom=0,m;

int main()
{
    cout << "\t\t     ----------------------------------------";
    cout << "\n\t\t     |\t\t\t\t\t    |";
    cout << "\n\t\t     |";
    cout << "\t\tVytvoril: Jan Haring\t    |\n\t\t     |\t\tpro programujte.com\t    |";
    cout << "\n\t\t     |\t\t\t\t\t    |\n";
    cout << "\t\t     ----------------------------------------\n\n";

    cout << "Va"<<s<<"e jm"<<e<<"no pros"<<i<<"m: ";
    cin.get(jmeno,size).get();
    cout << "V"<<a<<s<<" v"<<ee<<"k pros"<<i<<"m: ";
    cin.get(vek,size).get();
    cout << endl;

    for (cislo=1;cislo<=stop;cislo++)
    {
        cout << "Zadejte " << cislo<<" "<<c<<i<<"slo: ";
        cin >> hodnota[prom++];
    }
    int soucet = (hodnota[0]+hodnota[1]+hodnota[2]+hodnota[3]+hodnota[4]);
    cout << "\nSou"<<c<<"et "<<c<<i<<"sel je: "<< soucet << endl;

    cout << "Va"<<s<<"e jm"<<e<<"no pozp"<<a<<"tku je: ";
    for (m=strlen(jmeno);m>=0;m--)
    {
        cout << jmeno[m];
    }
    cout << "\n\nKONEC\n\n\n\n\n";


    return 0;
}

FanatiK   NOVÝ
5. 8. 2012

Výpísanie mena odzadu som vyriešil takto :

int a;
int b=10;
for (a=0; a<10; a++)
{
    cout << meno[b] << "\n";
    b--;
}  

akurát tam vypíše meno od zadu aj nejaké nezmyselné znaky , to bude asi mať niečo spoločné s ASCII ...

FanatiK   NOVÝ
5. 8. 2012

Celý funkčný kód ...síce to nieje veľmi prehľadné ale funguje ...

#include "iostream"
#include "iostream"
using namespace std;
int main()
{
char makcen_t=156;
char makcen_c=159;
char makcen_z=167;
char makcen_s=231;
char makcen_l=150;
char makcen_d=212;
char makcen_n=229;
char strieska_o=147;
char medzera=0;
int vek;

cout << "----------------------------------\n";
cout << "|                                |\n";
cout << "|                                |\n";
cout << "| Coded by: Michal FanatiK Vasko |\n";
cout << "|                                |\n";
cout << "|                                |\n";
cout << "----------------------------------\n";

char meno[20];
cout << "Napi" << makcen_s << "te svoje meno prosim\n";
cin >> meno;

cout << "Napi" << makcen_s << "te svoj vek prosim\n";
cin >> vek;

cout << "Zadajte 5 " << makcen_c << "isel...\n";
int cyklus;
int cisla[5];
int c = 0;
int d=1;
for (cyklus=0; cyklus<5; cyklus++)
{
    cout << "Zadajte " << d << medzera << makcen_c << "islo\n";
    cin >> cisla[c];
    c++;
    d++;
}

cout << "Spo" << makcen_c << "itavam " << makcen_c << "isla ktore ste zadali . Vysledok je: " << cisla[0] + cisla[1] + cisla[2] + cisla[3] + cisla[4] << "\n";

cout << "Va" << makcen_s << "e meno odzadu je: ";

int a;
int b=strlen(meno);
for (a=0; a<strlen(meno) + 1; a++)
{
    cout << meno[b] << "\n";
    b--;
}    


cout << "\nKoniec\n";

cin.get();
cin.get();
return 0;
}
libcosenior   NOVÝ
13. 10. 2012

#63 FanatiK

Malo by to byť nejak takto:

int a;

for (a = strlen(meno) - 1; a > = 0; a--)
{
    cout << meno[a] << " ";
}

cout << endl;

Treba ale includovať knižnicu cstring.

Petr Gatta   NOVÝ
18. 1. 2013

Myslím, že v této lekci šlo hlavně o zpracování vstupu. Nenašel jsem zde opravdu ošetřený vstup. Co když zadám jméno delší než je velikost pole charů? 

Petr Gatta   NOVÝ
18. 1. 2013

cin.clear(); nevyčistí frontu jak tvrdí autor článku, to zajistí metoda ignore().

#include <iostream>
#include <cstring>
using namespace std;

int main()
{
    char name[80], vek[4];
    int cislo[5];
    int soucet =0;
    cout << "Zadejte Va" << char(231) <<"e jm" << char(130) << "no: \n";
    cin.get(name,80);
    cin.ignore(10000,'\n');
    cout << "V" << char(160) << char(231) << " v" << char(216) << "k: \n";
    cin.get(vek,4);
    cin.ignore(10000,'\n');
    for (int i = 0; i<5; i++){
        cout << "Zadejte " << i+1 << ". " << char(159) << char(161) << "slo" "\n";
        cin >> cislo[i];
        soucet += cislo[i];
    }
    cout << soucet << endl;
    for (int a=strlen(name)-1; a>=0 ; a--){
        cout << name[a];
    }
    return 0;
}

cin.ignore(10000,'\n'); - ignoruje 10 tisíc znaků ve frontě, nenarazí-li dříve na nový řádek

Artemis   NOVÝ
1. 7. 2014

Moje riešenie

#include<iostream>
#include<string>
using namespace std;
int main()
{
  char meno[20];
  int cisla[6];
  int vek;
  int s=0;
  cout << "Vase meno prosim:";
  cin.getline(meno,20);
  cout << "Vas vek:";
  cin >> vek;
  cout << "Zadajte 5 cisel\n";
  for(int i=0;i<5;i++){
	  cin >> cisla[i];	  
  }
  for(int i=0;i<5;i++){
	  s += cisla[i];
  }
  cout << s << endl;  
  for(int i=strlen(meno);i >= 0;i--){
	  cout << meno[i];
  }
  cout << endl;
  return 0;
}
Zoli_L   NOVÝ
5. 4. 2016

Funkčný :)

    char a=231; //š
    char b=160; //á
    char c=236; //ý

    cout << "Ahoj kamo"<<a<<"ko ako sa vol"<<b<<a<<"?\n";
    char meno[20];
    cin.getline(meno , 20);

    cout << "V ktorom roku bol postaven"<<c<< " tvoj dom?\n";
    char rok[10];
    cin.getline(rok, 10);
    
    cout <<"Aka je je ho adresa?\n";
    char adresa[30];
    cin.getline(adresa, 30);


    cout << "Vol" << b << a << " sa: " << meno << endl;
    cout << "Dom bol postaven" <<c<<" v roku: " << rok << endl;
    cout << "Jeho adresa je: " << adresa<< endl;

Z_code   NOVÝ
15. 11. 2020

Co programátor to jiný styl psaní kódu :-) Přidávám svou verzi - funkční. Psáno ve VS Comunity 2019

#include <iostream>
#include <array> //size()

using namespace std;

//funkce zpracuje zadaný text a vráti text s dosazenými CZ znaky
string CZtext(string str)
{
	for (int i = 0; i < str.length(); i++)
	{
		switch (str[i])
		{
			case 'á':
				str[i] = char(160); break;
			case 'Á':
				str[i] = char(181); break;
			case 'é':
				str[i] = char(130); break;
			case 'É':
				str[i] = char(144); break;
			case 'í':
				str[i] = char(161); break;
			case 'Í':
				str[i] = char(161); break;
			case 'ý':
				str[i] = char(236); break;
			case 'Ý':
				str[i] = char(237); break;
			case 'ó':
				str[i] = char(162); break;
			case 'Ó':
				str[i] = char(224); break;
			case 'ú':
				str[i] = char(163); break;
			case 'Ú':
				str[i] = char(233); break;
			case 'ů':
				str[i] = char(133); break;
			case 'ď':
				str[i] = char(212); break;
			case 'Ď':
				str[i] = char(210); break;
			case 'ť':
				str[i] = char(156); break;
			case 'Ť':
				str[i] = char(155); break;
			case 'ň':
				str[i] = char(229); break;
			case 'Ň':
				str[i] = char(213); break;
			case 'ž':
				str[i] = char(167); break;
			case 'Ž':
				str[i] = char(166); break;
			case 'č':
				str[i] = char(159); break;
			case 'Č':
				str[i] = char(172); break;
			case 'š':
				str[i] = char(231); break;
			case 'Š':
				str[i] = char(230); break;
			case 'ř':
				str[i] = char(253); break;
			case 'Ř':
				str[i] = char(252); break;
			case 'ě':
				str[i] = char(216); break;
		}
	}
	return str;
}

int main()
{
	const int VELIKOST = 20;
	const int SIZE = 5;

	cout << CZtext("Vaše jméno prosím:");
	//řetězec se uloží do jednoho pole
	char jmeno[VELIKOST];
	cin.get(jmeno, VELIKOST);

	int rok;
	cout << "\n" << CZtext("Jaký je Váš věk: ");
	cin >> rok;

	std::array<int, SIZE> pole;
	int soucet = 0;
	cout << "\n" << CZtext("Zadejte postupně 5 čísel: \n");
	for (int i = 0; i < pole.size(); i++)
	{
		cout << i+1 << ") ";
		cin >> pole[i];
		soucet += pole[i];
	}
	cout << "\n" << CZtext("Zadali jste pole[")<< pole.size() << "] = {";
	for (int i = 0; i < pole.size()-1; i++)
	{
		cout << pole[i] << ", ";
	}
	cout << pole[pole.size()-1] << "}";
	cout <<"\n" << CZtext("Součet čísel v poli je: ") << soucet << endl;

	//Vypíše zadané jméno pozpátku
	cout << CZtext("Vaše jméno pozpátku je: ");
	for (int i = strlen(jmeno); i >= 0; i--)
	{
		cout << jmeno[i];
	}
	cout << endl;
	return 0;
}

Přidej svůj názor

×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:
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo e-mailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Reaguješ na příspěvek:
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové názory e-mailem (pouze pro přihlášené)
Sleduj názory ke článku a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.



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