Informatică, întrebare adresată de ciprian4851, 7 ani în urmă

Salut! Va rog mult sa mă ajutați la această problemă.​

Anexe:

Răspunsuri la întrebare

Răspuns de bobita25
0

Răspuns:

#include <iostream>

#include <cstring>

#include <fstream>

using namespace std;

int main() {

   char expresie[31];

   int rezultat = 0;

   bool adunare = true;

   ifstream f("BAC.TXT");

   f.getline(expresie, 31);

   f.close();

   int lungime = strlen(expresie);

   for (int i = 0; i < lungime; i++) {

       if (expresie[i] == '+') {

           adunare = true;

       } else if (expresie[i] == '-') {

           adunare = false;

       } else if (expresie[i] == '=') {

           break;

       } else {

           int numar = expresie[i] - '0';

           if (adunare) {

               rezultat += numar;

           } else {

               rezultat -= numar;

           }

       }

   }

   cout << expresie << " " << rezultat << endl;

   return 0;

}

Explicație:

Acest program citește o expresie aritmetică din fișierul "BAC.TXT" și evaluează expresia pentru a obține rezultatul. Programul este eficient din punct de vedere al spațiului de memorie folosit deoarece utilizează un singur vector de caractere ”expresie” pentru a stoca expresia citită din fișier. Variabila ”rezultat” stochează rezultatul evaluării expresiei, iar variabila ”adunare” indică dacă următoarea cifră trebuie adunată sau scăzută din rezultat.

Programul parcurge expresia caracter cu caracter și, atunci când întâlnește un operator (+ sau -), setează variabila ”adunare” în consecință. Atunci când întâlnește o cifră, adaugă sau scade cifra din rezultat în funcție de valoarea variabilei ”adunare”. În final, programul afișează expresia și rezultatul pe o singură linie, sub forma: "expresie = rezultat".

Datorită utilizării unei singure variabile pentru stocarea expresiei și faptului că alte variabile sunt utilizate pentru a stoca intermediarele și rezultatul, programul folosește un minim de spațiu de memorie, astfel fiind eficient din punct de vedere al acestuia.

Alte întrebări interesante