Kód: Vybrať všetko
#include <iostream>
using namespace std;
/// ziadne globalne premenne, zbytocne!
/// tato funkcia urobi vsetko potrebne pre vyber 'sucet dvoch cisel' v kalkulacke
void sucet2()
{
int a,b;
cout << "Zadaj dva cisla\n";
cin >> a >> b;
cout << a << " + " << b << " = " << a+b << "\n";
}
/// tato funkcia urobi vsetko potrebne pre vyber 'sucin dvoch cisel' v kalkulacke
void sucin2()
{
int a,b;
cout << "Zadaj dva cisla\n";
cin >> a >> b;
cout << a << " * " << b << " = " << a*b << "\n";
}
/// tato funkcia urobi vsetko potrebne pre vyber "kalkulacka"
void kalkulacka()
{
/// Chovam sa tu, akoby sa nic pred tym nestalo.
/// Kazda funkcia ma "svoj vlastny piesocek" (anglicky sa to nazyva 'scope').
/// To vyuzivam a s kludom si pisem podprogram rovnako, ako by to bolo v main.
/// Ved aj main je len funkia.
int vyber; /// tato premenna nema nic spolocne s premennou vyber vo funkcii main(),
/// ani inou premennou. Kazda funkcia ma vlastny 'scope'.
cout << "1. Sucet dvoch cisel\n";
cout << "2. Sucin dvoch cisel\n";
cin >> vyber;
switch( vyber )
{
case 1: sucet2(); break; /// znovu zavolam podprogram
case 2: sucin2(); break; /// znovu zavolam podprogram
default: cout << "Nezadal si spravnu volbu. Program konci.\n";
}
}
/// tato funkcia urobi vsetko potrebne pre vyber "obsah stvorca"
void obsahStvorca()
{
int a;
cout << "Zadaj stranu stvorca\n";
cin >> a;
cout << "Obsah stvorca je " << a*a << "\n";
}
/// tato funkcia urobi vsetko potrebne pre vyber "obsah obdlznika"
void obsahObdlznika()
{
int a, b;
cout << "Zadaj strany obdlznika\n";
cin >> a >> b;
cout << "Obsah obdlznika je " << a*b << "\n";
}
/// tato funkcia urobi vsetko potrebne pre vyber "obsah kocky"
void obsahKocky()
{
int a;
cout << "Zadaj stranu kocky\n";
cin >> a;
cout << "Obsah kocky je " << a*a*a << "\n";
}
int main()
{
/// tu zacina funkcia main, ktora sa vola ako prva.
int vyber;
cout << "1. Kalkulacka\n";
cout << "2. Obsah stvorca\n";
cout << "3. Obsah obdlznika\n";
cout << "4. Obsah kocky\n";
cin >> vyber;
switch(vyber) /// podla vyberu si zavolam odpovedajuci podprogram
{
case 1 : kalkulacka(); break;
case 2 : obsahStvorca(); break;
case 3 : obsahObdlznika(); break;
case 4 : obsahKocky(); break;
default: cout << "Nezadal si spravnu volbu. Program konci.\n";
}
return 0;
}
Takto by to malo vyzerať, aby to bolo pekne napísané.
Ide o to, že main by typicky mal byť čo najkratší a všetko podstatné by sa malo diať v podprogramoch (funkciách). Pri krátkych a jednoduchých programoch to nevadí, ale pri dlhších už sa to pýta.
Pretože miesto toho, aby som písal všetko za sebou, tak pomocou takéhoto písania si môžem rozdeliť program na viacero menších podprogramov a tak mám o pár starostí menej. Zrazu nepíšem jeden veľký program, ale 6 menších. A to je jednoduchšie.
A teda s tými premennými, takto by to mohlo vyzerať bez podprogramov (funkcií)
Kód: Vybrať všetko
#include <iostream>
using namespace std;
int main()
{
int vyber;
int a,b; /// stacia mi dve pomocne premenne
cout << "1. Kalkulacka\n";
cout << "2. Obsah stvorca\n";
cout << "3. Obsah obdlznika\n";
cout << "4. Obsah kocky\n";
cin >> vyber;
if( vyber == 1 )
{
cout << "1. Sucet dvoch cisel\n";
cout << "2. Sucin dvoch cisel\n";
cin >> vyber; /// Premenna vyber uz je mi na nic, uz viem, ze bola zadana volba 'kalkulacka'.
/// Mozem si ju kludne prepisat.
/// switch pouzijem len na jednoduchsie veci.
/// case by typicky nemal mat viac ako 5 riadkov, potom uz to vyzera divne.
/// Pri dlhsich kodoch pouzijem radsej if.
switch( vyber ) /// vyber na zaklade novej volby
{
case 1: cout << "Zadaj dva cisla\n";
cin >> a >> b;
cout << a << " + " << b << " = " << a+b << "\n";
break;
case 2: cout << "Zadaj dva cisla\n";
cin >> a >> b;
cout << a << " * " << b << " = " << a*b << "\n";
break;
default: cout << "Nezadal si spravnu volbu. Program konci.\n";
}
}
else /// vdaka 'else if' sa mi vzdy chyti len jediny vyber.
/// nemusim sa preto bat prepisat premennu 'vyber'.
if( vyber == 2 )
{
cout << "Zadaj stranu stvorca\n";
cin >> a;
cout << "Obsah stvorca je " << a*a << "\n";
}
else
if( vyber == 3 )
{
cout << "Zadaj strany obdlznika\n";
cin >> a >> b;
cout << "Obsah obdlznika je " << a*b << "\n";
}
else
if( vyber == 4 )
{
cout << "Zadaj stranu kocky\n";
cin >> a;
cout << "Obsah kocky je " << a*a*a << "\n";
}
else
cout << "Nezadal si spravnu vlbu. Program konci";
return 0;
}
Keďže vždy sa vykoná len jedna vetva
if( vyber == ...), tak môžem premenné a,b kľudne recyklovať a používať všade.