PDA

Prikaži potpunu verziju : Помоћ око кода


Seven7
28.7.2011, 11:37
#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
float a;
float b;
int odabir, kraj=1, odabrano=1;

while (kraj)
{

cout<<"Digitron"<<endl;
cout<<endl;
cout<<"Unesite prvi broj"<<endl;
cin>>a;
cout<<endl;
cout<<"Unesite drugi broj"<<endl;
cin>>b;
cout<<endl;


while (odabrano)
{

cout<<"Odaberite operaciju"<<endl;
cout<<"1.sabiranje"<<endl;
cout<<"2.oduzimanje"<<endl;
cout<<"3.mnozenje"<<endl;
cout<<"4.deljenje"<<endl;
cin>>odabir;
cout<<endl;
odabrano=1;
switch (odabir)
{
case 1:
cout<<a<<"+"<<b<<"="<<a + b<<endl; odabrano=0;
break;
case 2:
cout<<a<<"-"<<b<<"="<<a - b<<endl;odabrano=0;
break;
case 3:
cout<<a<<"x"<<b<<"="<<a * b<<endl;odabrano=0;
break;
case 4:
cout<<a<<":"<<b<<"="<<a / b<<endl;odabrano=0;
break;
default:
cout<<"Morate uneti 1,2,3 ili 4!"<<endl;
}
}
cout<<endl;
cout<<"Unesite 0 za kraj ili bilo koji drugi brojza ponovno racunanje!";
cin>>kraj;
}
system ("PAUSE");
return 0;

}


Када покренем програм и завршим рачунање,све је уреду.А када хоћу поново да рачунам могу само да унесем два броја и ту је крај.Где је проблем?

EclipsE
28.7.2011, 11:51
Zato što postaviš odabrano na 0 kada se izvrši neka operacija, i onda ne prolazi kroz taj while. Bolje uradi do-while, ovako:

do
{
cout << "Odaberite operaciju" << endl;
cout << "1. sabiranje" << endl;
cout << "2. oduzimanje" << endl;
cout << "3. mnozenje" << endl;
cout << "4. deljenje" << endl;
cin >> odabir;
cout << endl;

switch (odabir)
{
case 1:
cout << a << "+" << b << "=" << (a + b) << endl;
odabrano=0;
break;
case 2:
cout << a << "-" << b << "=" << (a - b) << endl;
odabrano=0;
break;
case 3:
cout << a << "x" << b << "=" << (a * b) << endl;
odabrano=0;
break;
case 4:
cout << a << ":" << b << "=" << (a / b) << endl;
odabrano=0;
break;
default:
cout<<"Morate uneti 1,2,3 ili 4!"<<endl;
odabrano = 1;
}
} while (odabrano);

Seven7
28.7.2011, 12:54
Чини ми се да не ради! :(

irreal
28.7.2011, 13:30
EclipsE-ovo resenje bi moralo da radi, al ako bas hoces, mozes da zadrzis identican kod koji si i postavio.

samo ispod prvog while, dakle ispod while (kraj)
{

dodaj

odabrano = 1;

Belphegor
28.7.2011, 13:40
Ili ovako:

#include <iostream>

int main()
{
float operandi[2];
int operacija;
while(1)
{
std::cout << "Unesite prvi broj: ";
std::cin >> operandi[0];
std::cout << "Unesite drugi broj: ";
std::cin >> operandi[1];
std::cout << "Unesite operaciju:" << std::endl;
std::cout << "prekinuti\t(0)" << std::endl;
std::cout << "sabiranje\t(1)" << std::endl;
std::cout << "oduzimanje\t(2)" << std::endl;
std::cout << "mnozenje\t(3)" << std::endl;
std::cout << "deljenje\t(4)" << std::endl;

std::cin >> operacija;
if(0 == operacija)
break;

switch(operacija)
{
case 1:
{
std::cout << operandi[0] << " + " << operandi[1] << " = " << operandi[0] + operandi[1] << std::endl;
}break;
case 2:
{
std::cout << operandi[0] << " - " << operandi[1] << " = " << operandi[0] - operandi[1] << std::endl;
}break;
case 3:
{
std::cout << operandi[0] << " * " << operandi[1] << " = " << operandi[0] * operandi[1] << std::endl;
}break;
case 4:
{
std::cout << operandi[0] << " / " << operandi[1] << " = " << operandi[0] / operandi[1] << std::endl;
}break;
};
}

return 0;
}

irreal
28.7.2011, 14:27
tvoje resenje drasticno menja formu koju je OP trazio.

kod njega iz programa moze da se izadje samo kod unosa broja, ne kod unosa operacije i kod njega ako ne uneses jednu od ponudjenih operacija opet pita samo za operaciju da uneses dok ne napravis validan unos.

daleko od toga da je njegov kod napisan elegantno i optimalno, niti nesto fali tvom.

ali njegov pocetnicki stil nece nestati gledanjem jednog stogod streamline-ovanog programa tako da smatram da je bolje ukazati mu gde je greska u njegovom kodu nego predstaviti potpuno drugi kod.

ima vremena, naucice da optimizuje i uskladi svoj kod, sad je bitno da razume zasto ne radi, odnosno da detaljno savlada samu logiku.

Seven7
28.7.2011, 14:46
tvoje resenje drasticno menja formu koju je op trazio.

Kod njega iz programa moze da se izadje samo kod unosa broja, ne kod unosa operacije i kod njega ako ne uneses jednu od ponudjenih operacija opet pita samo za operaciju da uneses dok ne napravis validan unos.

Daleko od toga da je njegov kod napisan elegantno i optimalno, niti nesto fali tvom.

Ali njegov pocetnicki stil nece nestati gledanjem jednog stogod streamline-ovanog programa tako da smatram da je bolje ukazati mu gde je greska u njegovom kodu nego predstaviti potpuno drugi kod.

Ima vremena, naucice da optimizuje i uskladi svoj kod, sad je bitno da razume zasto ne radi, odnosno da detaljno savlada samu logiku.

У потпуности управу! :)

EclipsE
28.7.2011, 15:04
Чини ми се да не ради! :(

Naravno da radi:

http://i54.tinypic.com/c3q8n.jpg