Začala jsem úplně poprvé programovat. Čtu serial o c++ a plním úkoly. 1. i 2. se mi podařilo splnit bez problémů, ale v polovině 3. úkolu jsem se zasekla a nevím jak dál. Je někde řešení?
Děkuji za odpověd
a jaké je zadání úkolu? Jaký kód jsi při řešení vytvořila a co na něm nefunguje?
hu
http://programujte.com/clanek/2005041406-c-3-lekce/
Mluvis o tomhle?
Úkol
Na začátek Vás program 10x uvítá(10x se vypíše ta samá hláška pomocí některého cyklu.
Poté se zeptá na Váše jméno a uloží jej, a poté Vám vypíše první písmeno ve jméně.
Vše musí být přehledné,odřádkované apod.
Dále vytvoříte proměnnou (typ char ktera bude mit místo na 5 čísel ) a řeknete uživateli, ať zadá 1. jednociferné číslo, až ho zadá, uloží se jako 1.znak v proměnné typu char , zeptá se znova a uloží až do té doby, až uživatel zadá všech 5 čísel. (Řešte pomocí cyklu)
Nyní Vypíše program první 2 písmena vašeho jména a za ně s mezerami hodnoty, které jste zadali.
Nakonec poděkuje a seznámí uživatele se stránkami www.programujte.com o čem jsou a jak mohou pomoci. (na 3 řádky, ne obecně, ale vaše názory na ně)
Tak, doufám, že máte co dělat ;))
* * *
Zápis příkazů:
Jak můžete například u for, while apod. zapisovat
for (i=0; i<5; i++) cout << "ahoj.";
tak můžete použít i více příkazů. A to tak, že je dáte do tzv. BLOKU.
for (i=0; i<5; i++) { cout << "ahoj."; cout << "ahoj."; }
Vše, co je v závorkách { } je tělo f-ce, a všechny se provedou je-li podmínka pravdivá.
Více v dodatku, který vyjde. (spíše jen o možnostech tohoto vyžití)
Mozna tam jsou drobne chybky, s temi si snad poradis. Musis prihlednout k tomu, ze je to prvni kod v c++, co sem napsal :) Takze nemam ladici nastroj, ktery by hlasil chybu nebo zobrazil vysledek.
// 10x uvitani
for (i=0; i<10; i++) cout << "ahoj.";
// jmeno, ulozit, prvni pismeno
char name[];
cout << "Vase jmeno: ";
cin >> name;
cin >> name[]; // nebo mozna takto
cout << name[0];
cout << name[1]; // nebo 1
// char na 5 cisel, zadej cisla
char num[5];
for (i=0; i<5; i++) cin >> num[i]; // nebo i=1; i<6
// vypis prvni 2 pismena a cisla
cout << name[0];
cout << name[1];
for (i=0; i<5; i++) cout << num[i]+' '; // nebo i=1; i<6
Statické pole bez velikosti, cin je R-value. Uvítací nápisy bych vypisoval na jednotlivé řádky.
hu
Taky je v c++ dobre pouzivat ++i pro inkrementaci v cyklu. Nemusi tam byt totiz jen cislo, ale i objekt. A post inkrementace pak muze zbytecne vyrabet kopii objektu (aby byla k dispozici puvodni hodnota).
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int i;
char jmeno[256];
char cisla[5];
for (i = 0; i < 10; ++i) {
cout << "pozdrav" << endl;
}
cout << "Jak se jmenujes?" << endl;
cin >> jmeno;
cout << endl << "Prvni pismeno tveho jmena je " << jmeno[0] << endl;
for (i = 0; i < 5; ++i) {
cout << endl << "Zadej jednociferne cislo" << endl;
cin >> cisla[i];
}
jmeno[2] = 0x00; //uriznu jmeno, zustanou prvni dve pismena
cout << endl << "Prvni dve pismena jmena a vypis cisel: " << jmeno;
for (i = 0; i < 5; ++i) {
cout << " " << cisla[i];
}
cout << "Povidani o programujte ....";
return 0;
}
Zkompilováno v C++ Builder XE5 a funkční.
hu
#6 KIIV
pro preinkrementaci může být i jiný důvod - úspora strojového času, viz http://www.atmel.com/images/doc8453.pdf str 12
hu
#11 ondrej39
nechtělo se mi hledat jak z std::string získat první znak nebo dva znaky. Jsem si trochu usnadnil práci, u školní úlohy nevadí. Jinak i v C++ jsou případy, kdy "klasický" řetězec je vhodnější řešení - nároky na paměť, rychlost, ale musí se to posuzovat individuelně. Jinak u woknových aplikací používám UnicodeString, ale to je specialita C++ Builderu a Delphi
hu
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku