problema de incepator ..:(

Intrebari despre limbajul C++, standardul C++, STL, OOP in C++ sau alte subiecte nelegate de VisualC++
Post Reply
alexandru plesa
Junior
Junior
Posts: 2
Joined: 12 Aug 2013, 14:15
Judet: Braşov

problema de incepator ..:(

Post by alexandru plesa » 12 Aug 2013, 14:20

Buna ziua !

vreau sa fac un simplu calculator in c++ (in code::blocks) dar tot imi spune cand dau build & run ""expected unqualified-id before '{' token ""...asta e codul

Code: Select all

#include <iostream>
#include <fstream>
#include<string.h>

using namespace std;

void adunare(){cout << "adunare";}
void scadere(){cout << "scadere";}
void inmultire(){cout << "inmultire";}
void impartire(){cout<<"impartire";}


{
  int input;
  char continuare[10];

  cout<<"1. adunare\n";
  cout<<"2. scadere\n";
  cout<<"3. inmultire\n";
  cout<<"4. impartire\n";
  cout<<"5. iesi\n";
  cout<<"alegere\n: ";
  cin>> input;
  switch ( input ) {
                      case 1:
                               {
                                 float input=1;
                                 float input2=1;
                                 float sum = 0;
                                 while ( input != 0 )
                                                     {
                                                      cout << "introdu un numar :" <<  endl;
                                                      cin >> input;
                                                      cout<<"introdu al doilea numar : "<<endl;
                                                      cin>>input2;
                                                      sum += input+input2;
                                                      cout << "suma este :" << sum << endl;



                                                     while (sum >= 0)
                                                        cout<<"vrei sa calculezi din nou ? (DA,NU) "<<endl;
                                                     cin>>continuare;
                                                     if(strcmp("DA", continuare) == 0 || strcmp("da", continuare) == 0){
                                                                                                                        cout << "introdu un numar :" <<  endl;
                                                                                                                        cin >> input;
                                                                                                                        cout<<"introdu al doilea numar : "<<endl;
                                                                                                                        cin>>input2;
                                                                                                                        sum += input+input2;
                                                                                                                        cout << "suma este :" << sum << endl;}

                                                                                                                                                              else{
                                                                                                                                                                   cout<<"Ai decis sa iesi ! "<<endl;
		                                                                                                                                                           }
                                                     }



                    break;
                      case 2:
                      scadere();
                    break;
                      case 3:
                      inmultire();
                    break;
                      case 4:
                      impartire();
                    break;
                      case 5:
                              cout<<"la revedere\n";
                    break;
                    default:
                              cout<<"eroare,nu exista acest carecter\n";
                    break;
                  }
  cin.get();
                }

  }



MA PUTETI AJUTA ?



User avatar
Marius Bancila
Fondator
Fondator
Posts: 2344
Joined: 11 Jul 2007, 11:45
Judet: Timiş
Location: Timisoara
Contact:

Re: problema de incepator ..:(

Post by Marius Bancila » 12 Aug 2013, 15:32

Pai ce e asta?

Code: Select all

{
  int input;
  char continuare[10];
E un block are nu tine de nimic. Banuiesc ca acolo ar trebuie sa fie functia main.

Code: Select all

int main()
{
  int input;
  char continuare[10];
Marius Bancila
Fondator Codexpert, Microsoft MVP VC++
Site personal | Blog

alexandru plesa
Junior
Junior
Posts: 2
Joined: 12 Aug 2013, 14:15
Judet: Braşov

Re: problema de incepator ..:(

Post by alexandru plesa » 13 Aug 2013, 15:03

daca pun int main() ..
imi zice: invalid conversion from 'char' to 'const char * '

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: problema de incepator ..:(

Post by Ovidiu Cucu » 13 Aug 2013, 18:35

Pana una alta ai oaresce probleme cu parantezele. Ai deschis o acolada dupa primul case, pe care ai uitat s-o inchizi inainte de (sau imediat dupa) break ceea ce-ti genereaza un carnat de erori. Iar problemele nu se opresc aici.
Uite, ti-am pus eu paranteza si am aranjat un pic codul ca sa putem vedea ce-i acolo. Incearca de acum inainte sa faci si tu la fel, adica sa pui spatii in loc de taburi pentru indentari si sa deschizi/inchizi acoladele la linie noua.

Cam asa:

Code: Select all

int main()
{
    int input;
    char continuare[10];

    cout << "1. adunare\n";
    cout << "2. scadere\n";
    cout << "3. inmultire\n";
    cout << "4. impartire\n";
    cout << "5. iesi\n";
    cout << "alegere\n: ";
    cin >> input;
    switch(input) 
    {
    case 1:
        {
            float input = 1;
            float input2 = 1;
            float sum = 0;
            while(input != 0)
            {
                cout << "introdu un numar :" <<  endl;
                cin >> input;
                cout << "introdu al doilea numar : " << endl;
                cin >> input2;
                sum += input + input2;
                cout << "suma este :" << sum << endl;

                while(sum >= 0) // <--- aici ai bucla infinita
                    cout << "vrei sa calculezi din nou ? (DA,NU) "<< endl; 
                cin >> continuare;
                if(strcmp("DA", continuare) == 0 || strcmp("da", continuare) == 0)
                {
                    cout << "introdu un numar :" <<  endl;
                    cin >> input;
                    cout << "introdu al doilea numar : "<<endl;
                    cin >> input2;
                    sum += input + input2;
                    cout << "suma este :" << sum << endl;
                }
                else
                {
                    cout<<"Ai decis sa iesi ! "<<endl;
                }
            }
        } // <--- paranteza asta ai utat-o
        break;
    case 2:
        scadere();
        break;
    case 3:
        inmultire();
        break;
    case 4:
        impartire();
        break;
    case 5:
        cout << "la revedere\n";
        break;
    default:
        cout << "eroare,nu exista acest carecter\n";
        break;
    }
    cin.get();

    return 0;
}
Acuma parca se vede mai bine flow-ul si eventualele greseli, nu-i asa?
Sare in primul rand in ochi bucla infinita de dupa while(sum >= 0). Si aici ai uitat niste paranteze.
Oricum se vede si ca ai while-urile alea puse aiurea, daca asa cum banui, vrei sa iesi din bucla atunci cand utilizatorul intoduce "NU" sau "nu".
Si mai sunt...

Mai incearca, in primul rand sa scrii ordonat, apoi se rezolva.

Post Reply