Risipa de key_press | Programare

Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Risipa de key_press | Programare - Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Calculator

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;
}
Category: Uncategorized
  • iulian says:

    nu-mi merge decat cand scriu if(!correctInput)in loc de if(correctInput)

    February 16, 2012 at 5:07 pm
  • 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();
    }
    }
    }

    July 24, 2013 at 12:11 am

Your email address will not be published. Required fields are marked *

*