Scrieţi un program care simulează un calculator electronic pentru numere întregi: se introduc două numere întregi şi o operaţie care poate fi +, -, *, /, reprezentând adunarea, scăderea, înmulţirea şi câtul.
Analiza Programului
– se declara numerele intregi a, b si rez de tip int, reprezentand operatii si rezultatul;
– se declara caracterul op de tip char, reprezentand operatia care se va executa;
– se declara variabila ok de tip short, care va ramana 1 daca operatia se termina cu succes, astfel i se va atribui 0;
– avand in vedere ca va trebui sa comparam valoarea retinuta de variabila op cu mai multe valori, folosind instructiunea de selectie switch. Avem 4 randuri case, una pentru fiecare dintre valorile +, -, *, / si ramura default pentru cazurile in care op are orice alta valoare inafara celor 4 enumerate anterior, moment in care ok ia valoarea 0.
In cazul in care op are una din valorile +, -, * se efectueaza operatia corespunzatoare, iar rezultatul se depune in variabila rez. In cazul in care op are valoarea /, prima data se va testa cu ajutorul unei instructiuni if, valoarea celui al doilea operand, deoarece daca el este 0, impartirea nu se poate realiza, caz in care se va afisa pe ecran un mesaj corespunzator. Daca valoarea lui b este diferita de 0, se procedeaza ca si in cazul operatiilor +, -, *.
La final, in cadrul unei instructiuni ifse testeaza valoarea variabilei ok.
Daca ok a ramas 1, atunci se va afisa operatia efectuata impreuna cu rezultatul, altfel se va tipari un mesaj ca operatorul introdus de la tastatura nu este unul valid.
Rezolvarea problemei in C#
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _5 { class Program { static void Main(string[] args) { int a, b, rez = 0; char op; short ok = 1; Console.Write("Primul numar : "); a = int.Parse(Console.ReadLine()); Console.Write("Al doilea numar : "); b = int.Parse(Console.ReadLine()); Console.Write("Operatia dorita : "); op = char.Parse(Console.ReadLine()); switch (op) { case '+': rez = a + b; break; case '-': rez = a - b; break; case '*': rez = a * b; break; case '/': if (b != 0) rez = a / b; else { Console.WriteLine("Impartirea la 0 este imposibila!!"); Console.ReadKey(); return; } break; default: ok = 0; break; } if (ok == 1) Console.WriteLine("{0} {1} {2} = {3}", a, op, b, rez); else Console.WriteLine("Operatorul este invalid"); Console.ReadLine(); } } }
Rezolvarea problemei in C++
//the header conio, which include library functions for performing "console input and output" #include <conio.h> //the header iostream, which supports the C++ I/O system #include <iostream> //tells the compiler to use the std namespace using namespace std; //begin program execution int main() { //declare variables int firstNumber, secondNumber, result = 0; char operationSign; bool correctInput = true; //display message on the screen cout<<"Introduceti primul numar:"<<endl; //read from keyboard cin>>firstNumber; cout<<"Introduceti al doilea numar:"<<endl; cin>>secondNumber; cout<<"Introduceti semnul operatiei:"<<endl; cin>>operationSign; switch(operationSign) { case '+': result = firstNumber + secondNumber; break; case '-': result = firstNumber - secondNumber; break; case '*': result = firstNumber * secondNumber; break; case '/': if(secondNumber != 0) result = firstNumber / secondNumber; else ////division by zero, program will end return 0; break; default: correctInput = false; } //if the user uses correct operation signs if(correctInput) cout<<"Rezultatul operatiei de "<<operationSign<<" intre numerele "<<firstNumber<<" si "<<secondNumber<<" este:"<<result; else cout<<"Rezultatul nu a fost calculat din cauza unei operatii invalide"; //terminates main and return value to the calling process return 0; }
iulian says:
nu-mi merge decat cand scriu if(!correctInput)in loc de if(correctInput)
Dragosh says:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CalculatorElectronic
{
class Program
{
static void Main(string[] args)
{
int nr1, nr2, rezultat;
double rez;
Console.Write(“Introduceti primul numar = “);
nr1 = int.Parse(Console.ReadLine());
Console.Write(“\nIntroduceti al doilea numar = “);
nr2 = int.Parse(Console.ReadLine());
string op;
Console.WriteLine(@”Scriti:
adunare pentru +
scadere pentru –
produs pentru *
cat pentru /”);
Console.WriteLine();
op = Console.ReadLine();
switch (op)
{
case “adunare”: rezultat = nr1 + nr2;
Console.WriteLine(“\nRezultatul adunarii este ” + rezultat);
break;
case “scadere”: Console.WriteLine(“\nDoriti sa efectuari diferenta nr1 – nr2?, scriti da, daca doriti nr2 – nr1 scriti nu”);
string rs;
rs = Console.ReadLine();
switch (rs)
{
case “da”: rezultat = nr1 – nr2;
Console.WriteLine(“\nRezultatul diferentei nr1 – nr2 = ” + rezultat);
break;
case “nu”: rezultat = nr2 – nr1;
Console.WriteLine(“\nRezultatul diferentei nr2 – nr1 = ” + rezultat);
break;
}
break;
case “produs”: rezultat = nr1 * nr2;
Console.WriteLine(“\nRezultatul produsului este ” + rezultat);
break;
case “cat”: Console.WriteLine(“\nDoriti sa efectuati impartirea nr1 / nr2?, scriti da, daca doriti nr2 / nr1 scriti nu”);
string rs2;
rs2 = Console.ReadLine();
switch (rs2)
{
case “da”: if (nr2 == 0)
{
Console.WriteLine(“\nImpartire la 0 nu exista”);
}
else
{
rez = nr1 / nr2;
Console.WriteLine(“\nRezultatul impartrii nr1 / nr2 este {0:#.##}”, rez);
}
break;
case “nu”: if (nr1 == 0)
{
Console.WriteLine(“\nImpartire la 0 nu exista”);
}
else
{
rez = nr2 / nr1;
Console.WriteLine(“\nRezultatul impartirii nr2 / nr1 este {0:#.##}”, rez);
}
break;
}
break;
default: Console.WriteLine(“\nVa rugam vefificati ce ati introdus”);
break;
} Console.ReadLine();
}
}
}