Názory ke článku C++ - 7. lekce
Text tohoto komentáře byl vymazán, jelikož porušoval publikační pravidla našeho e-zinu! Redakce
Omlouvám se, příkaz switch (..case..) je vysvetlen o lekci dale (8)
Prosím vás mohl by mi někdo říci co je na tomto špatně??? a popřípadě tedy co??
void zadavani (int n)
{
char c=159;
char w[]=" ";
char s=231;
do
{
cout <<"\n\n\tZadej "<<n<<". cenu: ";
cin >> alfa[n].cena;
cout <<"\n\tChcete-li ukon"<<c<<"it napi"<<s<<"te q???: ";
cin>>w;
n++;
}
while (w != 'q');
};
Tak tenhle putoval letos po V3 v SPŠ Chomutov:
-Ťuky ťuk!
-Kdo je tam?
-Tady rekurze!
-A co chceš?
-Ťuky ťuk!
tohle to hází :Warning: getimagesize(): open_basedir restriction in effect. File(../lekce/cpp/cpp5.jpg) is not within the allowed path(s): (/mnt/data/accounts/p/programujte/data/www/www:/tmp/accounts/p/programujte) in /mnt/data/accounts/p/programujte/data/www/www/fpdf.php on line 1466
Warning: getimagesize(../lekce/cpp/cpp5.jpg): failed to open stream: Operation not permitted in /mnt/data/accounts/p/programujte/data/www/www/fpdf.php on line 1466
FPDF error: Missing or incorrect image file: ../lekce/cpp/cpp5.jpg
rozoberal som program ktory je uvedeny v bode 7.14(nechce sa mi to kopirovat tak si to potom pozrite) a chcem vediet odkial sa tam zobralo <i>SIZE</i> ktore bolo pouzite v ukaz_array(properties, <u>size</u>); nikde som nevidel aby si ho inicializoval(dufam ze som to napisal dobre) a priradil hodnotu.
inac chapem asi vsetkemu ak nie tak sa este opytam
16. 11. 2006
:ms_0001: :ms_0002: :ms_0005: :ms_0007: :ms_0009: :ms_0010: :ms_0011: :ms_0017: :ms_0018: :ms_0019: :ms_0020: :ms_0021: :ms_0022: :ms_0026: :ms_0027: :ms_0029: :ms_0030: :ms_0031: :ms_0032: :ms_0033: :ms_0034: :ms_0035: :ms_0036: :ms_0037: :ms_0038: :ms_0039: :ms_0040: :ms_0041: :ms_0042: :ms_0043: :ms_0044: :ms_0045: :ms_0046: :ms_0047: :ms_0049: :ms_0050: :ms_0051: :ms_0052: :ms_0055: :ms_0056: :ms_0057: :ms_0058: :ms_0059: :ms_0060: :ms_0062: :ms_0063: :ms_0064: :ms_0065: :ms_0067: :ms_0068: :ms_0070: :ms_0071: :ms_0072: :ms_0073: :ms_0074: :ms_0076: :ms_0077: :ms_0078: :ms_0079: :ms_0080: :ms_0081: :ms_0082: :ms_0083: :ms_0085: :ms_0086: :ms_0087: :ms_0088: :ms_0089: :ms_0090: :ms_0091: :ms_0092: :ms_0093: :ms_0094: :ms_0098: :ms_0099: :ms_0100: :ms_0101: :ms_0102: :ms_0103: :ms_0105: :ms_0107: :ms_0108: :ms_0109: :ms_0110: :ms_0111: :ms_0112: :ms_0114: :ms_0116: :ms_0117: :ms_0120: :ms_0121: :ms_0122: :ms_0124: :ms_0125: :ms_0126: :ms_0127: :ms_0128: :ms_0129: :ms_0130: :ms_0131: :ms_0132: :ms_0133: :ms_0134: :ms_0135: :ms_0136: :ms_0137: :ms_0138: :ms_0139: :ms_0140: :ms_0141: :ms_0142: :ms_0143: :ms_0144: :ms_0145: :ms_0146: :ms_0147: :ms_0148: :ms_0149: :ms_0150: :ms_0151: :ms_0152: :ms_0153: :ms_0154: :ms_0155: :ms_0156: :ms_0157: :ms_0158: :ms_0159: :ms_0160: :ms_0161: :ms_0162: :ms_0163: :ms_0164: :ms_0165: :ms_0168: :ms_0169: :ms_0170: :ms_0171: :ms_0172: :ms_0173: :ms_0174: :ms_0180: :ms_0182: :ms_0183: :ms_0184: :ms_0185: :ms_0186: :ms_0187: :ms_0188: :ms_0189: :ms_0190: :ms_0191: :ms_0192: :ms_0193: :ms_0194: :ms_0195: :ms_0196: :ms_0197: :ms_0198: :ms_0200: :ms_0201: :ms_0206: :ms_0207: :ms_0211: :ms_0212: :ms_0213: :ms_0214: :ms_0215: :ms_0217:
Kurz C++ se mi moc líbí a zatím to nějak zvládám :-) Ale pravopis autorů, zřejmě programátorů, že :-), je otřesný...
25. 10. 2007
V prikladech 7.22 je spatny popisek u prvniho obrazku. Nejsou to polarni souradnice ale pravouhle. Navic se v nem nevyskytuje uhel, jak je v nem uvedeno.
14. 11. 2008
prosím..potřebuju co nejdřív vědět jak říct funkci aby pracovala s více rozměrným polem, díky
9. 5. 2009
Lidi pls pomuze mi nekdo? POtreboval bych vedet jak prevezt viceciferne cislo z typu char, do promeny typu int. kdyz prevadim jednociferny cislo tak jednoduse odectu 48, napr:
char p= 49;
int a=p[0]-48;
a pak vyjde ze se to rovna 1. ale nevim jak prevadet vicefirne cisla, napr: 10, 125, atd. Pls jestli vite jak nato tak mi poradte :).
13. 1. 2010
Reagoval na komentář od uživatele klerik :
do typu char se neukladaji cisla ! Jsou to znaky (character).
27. 8. 2010
Čau lidi,
nevíte někdo jak ze znalostí z dosavadních lekcí udělat to odpočítávání na konci katalogu?(viz. úkol) Poradte mi pls
8. 7. 2011
Chybaju mi mensie vysvetlivky... napr. co ten cin.clear() vlastne robi ? Bez neho by to nefungovalo ?
A mala chybicka v priklade 7.14, …v případě špatného vstupu: ... č.3 nesedi :)
8. 7. 2011
#18 Beginer
... a 7.22: v poznamke je aj to co tam nema byt :) ----> // šablony struktur struct uhel
Prosím nevie niekto prečo nefunguje tento zdroják:
#include <iostream>
using namespace std;
int sum_pole(int pole[], int n);
int main()
{
int prvky;
int prvky3 = 1;
int prvky4;
cout << "Zadajte pocet prvkov pola: ";
cin >> prvky;
int prvky2[prvky];
while (0<prvky)
{
cout << "Zadajte "<<prvky3<<". prvok: ";
prvky3=prvky4;
prvky4=prvky4-1;
cin >>prvky2[prvky4];
prvky--;
}
cout <<sum_pole(prvky2, prvky);
cin.get();
cin.get();
return 0;
}
int sum_pole(int pole[], int n)
{
int celkem = 0;
for (int i = 0; i<n ; i++)
celkem = celkem + pole[i];
return celkem;
}
Ďakujem
Pardon, chyba:
#include <iostream>
using namespace std;
int sum_pole(int pole[], int n);
int main()
{
int prvky;
int prvky3 = 1;
int prvky4;
cout << "Zadajte pocet prvkov pola: ";
cin >> prvky;
int prvky2[prvky];
while (0<prvky)
{
cout << "Zadajte "<<prvky3<<". prvok: ";
prvky3=prvky4;
prvky4=prvky4-1;
cin >>prvky2[prvky4];
prvky--;
prvky3++;
}
cout <<sum_pole(prvky2, prvky);
cin.get();
cin.get();
return 0;
}
int sum_pole(int pole[], int n)
{
int celkem = 0;
for (int i = 0; i<n ; i++)
celkem = celkem + pole[i];
return celkem;
}
Program spustím, zadám počet prvkov a prvý prvok a vybehne mi okno, že mám program zavrieť.
Za odpoveď ďakujem.
24. 12. 2011
#21 lukas.balaz
Chyba je v tom, že nie je možné vytvoriť pole o neznámom počte prvkov. Vyriešiť sa to dá pomocou ukazovateľa na pole vo voľnom úložisku pomocou operátora new.
Ahoj,chcel by som sa opýtať,akým príkazom môžem editovať položky pretože ma tento bod úlohy dosť brzdí.
Ďakujem vopred za odpoveď
18. 11. 2020
Tak tady je moje verze. Vím, že je to poněkud chaotické, ale funkční a momentálně nemám chuť to přepisovat do nějaké srozumitelnější podoby. Chybí pouze odpočet na konci. Kritiku samozřejmě příjmám.
#include <iostream>
#include <string>
using namespace std;
const int SIZE = 100; //velikost pole
const double DPH = 0.19; //19% dph
bool d = false; //s DPH nebo bez DPH
bool dotazy = true; // pro ukončení dotazů
struct Katalog
{
string polozka;
double cena;
double dph;
double celkem;
};
//Prototypy funkcí
string CZtext(string str);
int addPolozka(Katalog kat[], int vel);
void vypisPolozek(int x, Katalog kat[], bool d);
void editacePolozek(Katalog kat[], int x, bool d);
void addDPH(Katalog kat[], int x, bool d);
void celkovaCena(Katalog kat[], int x, bool d);
void souhlas_ANO_NE(Katalog kat[], int x, bool d);
//funkce zpracuje zadaný text a vráti text s dosazenými CZ znaky
string CZtext(string str)
{
for (unsigned 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 addPolozka(Katalog kat[], int vel)
{
//zadáváni položek postupně - po každém zadáni bude dotaz zda se bude pokračovat
int x = 1;
char znak;
int polozekCelkem = 0;
for (int i = 0; i < x; i++)
{
cout << "\n" << CZtext("Položka č. ") << i + 1 << ": \n";
cout << CZtext("Název položky: ");
getline(cin, kat[i].polozka);
cout << CZtext("Cena položky: ");
cin >> kat[i].cena;
bool cyklus = true;
do
{
cout << "\n" << CZtext("Přejete si přidat další položku Y/N:");
cin >> znak;
switch (znak)
{
case 'y':
if (i + 1 < vel)
x++;
else
{
cout << "\n" << CZtext("ERROR - nedostatečná kapacita - nelze vložit další položku!!!") << "\n\n";
polozekCelkem = x;
}
cyklus = false;
cin.get();
break;
case 'n':
polozekCelkem = x;
x = 0;
cyklus = false;
cin.get();
break;
default:
cin.get();
cout << "\n" << CZtext("ERROR - (klavesa 'y' pro pokračovat a klavesa 'n' pro konec) - nic jiného") << "\n";
cin.get();
}
} while (cyklus);
}
return polozekCelkem;
}
void vypisPolozek(int x, Katalog kat[], bool d)
{
//program vypíše všechny údaje o všech položkách v TABULCE s DPH nebo bez
if (d == true)
{
cout << "\n\t" << CZtext("Položka") << "\t\t\t" << CZtext("CENA") << "\t" << CZtext("Cena s DPH") << "\n";
for (int i = 0; i < x; i++)
{
cout << i + 1 << "\t" << kat[i].polozka << "\t\t\t" << kat[i].cena << "\t" << kat[i].dph << "\n";
}
}
else
{
cout << "\n\t" << CZtext("Položka") << "\t\t\t" << CZtext("CENA") << "\t\n";
for (int i = 0; i < x; i++)
{
cout << i + 1 << "\t" << kat[i].polozka << "\t\t\t" << kat[i].cena << "\t\n";
}
// rozhodováni co se bude dělat
bool cyklus = true;
if (dotazy)
{
do
{
cout << "\n" << CZtext("Přejete si editovat některou položku Y/N :");
char znak;
cin >> znak;
switch (znak)
{
case 'y':
editacePolozek(kat, x, d);
cyklus = false;
break;
case 'n':
do
{
cout << "\n" << CZtext("Přejete si zobrazit ceny s 19% DPH ? Y/N :");
cin >> znak;
switch (znak)
{
case 'y':
d = true;
addDPH(kat, x, d);
break;
case 'n':
dotazy = false;
vypisPolozek(x, kat, d);
break;
default:
cin.get();
cout << "\n" << CZtext("ERROR - (klavesa 'y' pro pokračovat a klavesa 'n' pro konec) - nic jiného") << "\n";
cin.get();
}
break;
} while (cyklus);
celkovaCena(kat, x, d);
cyklus = false;
cin.get();
break;
default:
cin.get();
cout << "\n" << CZtext("ERROR - (klavesa 'y' pro pokračovat a klavesa 'n' pro konec) - nic jiného") << "\n";
cin.get();
}
} while (cyklus);
}
}
}
void souhlas_ANO_NE(Katalog kat[], int x, bool d)
{
bool cyklus = true;
do
{
cout << "\n" << CZtext("Souhlasíte s konečnou cenou Y/N :");
char znak;
cin >> znak;
switch (znak)
{
case 'y':
cyklus = false;
cout << "\n" << CZtext("KONEC PROGRAMU");
break;
case 'n':
dotazy = true;
editacePolozek(kat, x, d);
break;
default:
cin.get();
cout << "\n" << CZtext("ERROR - (klavesa 'y' pro pokračovat a klavesa 'n' pro konec) - nic jiného") << "\n";
cin.get();
}
} while (cyklus);
}
void editacePolozek(Katalog kat[], int x, bool d)
{
cout << "\n" << CZtext("Jakou položku si přejete opravit? - zadejte číslo položky: ");
int cislo;
cin >> cislo;
for (int i = 0; i < x; i++)
{
if ((i + 1) == cislo)
{
cout << CZtext("Změnit cenu položky: ");
kat[i].cena = NULL;
cin >> kat[i].cena;
}
}
if (d != true)
vypisPolozek(x, kat, d);
else
addDPH(kat, x, d);
}
void addDPH(Katalog kat[], int x, bool d)
{
for (int i = 0; i < x; i++)
{
kat[i].dph = (kat[i].cena * DPH) + kat[i].cena;
}
vypisPolozek(x, kat, d);
}
void celkovaCena(Katalog kat[], int x, bool d)
{
double pom = 0;
for (int i = 0; i < x; i++)
{
if (d != true)
{
kat[i].celkem = pom + kat[i].cena;
pom = kat[i].celkem;
}
else
{
kat[i].celkem = pom + kat[i].dph;
pom = kat[i].celkem;
}
}
if (d != true)
{
cout << "----------------------------------------" << "\t\n";
cout << CZtext("Celková cena bez DPH ") << "\t\t" << kat[x - 1].celkem << "\t\n";
}
else
{
cout << "----------------------------------------" << "\t\n";
cout << CZtext("Celková cena s DPH ") << "\t\t\t" << kat[x - 1].celkem << "\t\n";
}
}
int main()
{
Katalog katalog[SIZE];
int hodnota = addPolozka(katalog, SIZE);
vypisPolozek(hodnota, katalog, d);
souhlas_ANO_NE(katalog, hodnota, d);
return 0;
}