Calcolatrice in C++

pabloski

Utente Èlite
2,868
916
In effetti è un brutto mix di C e C++. Ma esattamente l'errore qual'è? Senza sapere che errore ti dà, è difficile dire cosa può essere.
 

signore del tempo

Utente Èlite
3,228
491
CPU
Intel Core i5 4670K
Scheda Madre
Asus Z87-Plus
HDD
WD Caviar Green 500GB
RAM
G.Skill Ares 2x4GB 1600MHz
GPU
Sapphire 7850 1GB @ 1050MHz
Audio
Integrata
Monitor
Acer V193w
PSU
XFX ProSeries 550W Core Edition
Case
CM HAF 912 plus
OS
ArchLinux + KDE - Windows 10
Utilizzi cout/cin/endl senza <iostream>.
Oltretutto l'algoritmo va rifatto, ci sono troppe ripetizioni.
Un'idea di come dovrebbe essere:
Codice:
#include <stdio.h>


main()
{
   printf("Inserisci il primo numero, il segno, ed il secondo numero:\n");
   int numero1, numero2;
   char segno;
   scanf("%i %c", &numero1, &segno);
   while(getchar() != '\n');
   scanf("%i", &numero2);
   printf("Risultato: ");


   switch(segno)
   {
       case '+': printf("%i", numero1 + numero2); break;
       case '-': printf("%i", numero1 - numero2); break;
       
       case '*': 
       case 'x': printf("%i", numero1 * numero2); break;
       case '/': printf("%i", numero2 != 0 ? numero1 / numero2 : 0); break;
       default: puts("Segno non riconosciuto!");
   
   
   }
   
   puts("");
   return 0;
}[/spoiler]
 
Ultima modifica:

Alessandro27

Nuovo Utente
66
7
CPU
Intel Core I7 3632QM
HDD
500GB
RAM
6GB
GPU
Nvidia GeForce GT635M 1GB
Audio
Realtek High Definition Audio
Monitor
Display 15,6"
Case
Lenovo Ideapad Z500
OS
Windows 8 64-bit
Questo è quello che feci a scuola qualche mese fa. Semplice (per me :asd:) e funzionale :asd:

#include<iostream>
main() {
using namespace std;
long double altro, oper, ris, ris1, ris2, a, b , pow ;
cout <<"Created by Cerrito Alessandro"<<endl;
cout << "Che operazione si vuole eseguire?" << endl;
cout << "1 = Addizione" << endl;
cout << "2 = Sottrazione" << endl;
cout << "3 = Moltiplicazione" << endl;
cout << "4 = Divisione" << endl;
cout << "5 = exit" << endl;
cin >> oper;
if (oper == 1) {
cout << "Inserisci il primo numero:" << endl;
cin >> a;
cout << "Inserisci il secondo numero:" << endl;
cin >> b;
ris = a + b;
cout << "Il risultato e' " << ris << endl << endl;
}
if (oper == 2) {
cout << "Inserisci il primo numero:" << endl;
cin >> a;
cout << "Inserisci il secondo numero:" << endl;
cin >> b;
ris = a - b;
cout << "Il risultato e' " << ris << endl << endl;
}
if (oper == 3) {
cout << "Inserisci il primo numero:" << endl;
cin >> a;
cout << "Inserisci il secondo numero:" << endl;
cin >> b;
ris = a * b;
cout << "Il risultato e' " << ris << endl << endl;
}
if (oper == 4) {
cout << "Inserisci il primo numero:" << endl;
cin >> a;
cout << "Inserisci il secondo numero:" << endl;
cin >> b;
ris = a / b;
cout << "Il risultato e' " << ris << endl << endl;
}
if (oper >= 12) {
exit(0);
}
cout << "Vuoi eseguire altri calcoli con la calcolatrice?" << endl;
cout << "1 = SI" << endl;
cout << "2 = NO" << endl;
cin >> altro;
if (altro == 1) {
system("cls");
main();
}
return 0;
}

Dio quanto amo programmare in C++ :blush::blush:
 
Ultima modifica:

signore del tempo

Utente Èlite
3,228
491
CPU
Intel Core i5 4670K
Scheda Madre
Asus Z87-Plus
HDD
WD Caviar Green 500GB
RAM
G.Skill Ares 2x4GB 1600MHz
GPU
Sapphire 7850 1GB @ 1050MHz
Audio
Integrata
Monitor
Acer V193w
PSU
XFX ProSeries 550W Core Edition
Case
CM HAF 912 plus
OS
ArchLinux + KDE - Windows 10
Questo è quello che feci a scuola qualche mese fa. Semplice (per me :asd:) e funzionale :asd:
Codice:
#include<iostream>
main() {
     ......
    if (altro == 1) {
        system("cls");
      [SIZE=4][B]main();[/B][/SIZE]
    }
    return 0;
}
Dio quanto amo programmare in C++ :blush::blush:
Dovresti prima imparare ad usarlo. :rolleyes:
 

Alessandro27

Nuovo Utente
66
7
CPU
Intel Core I7 3632QM
HDD
500GB
RAM
6GB
GPU
Nvidia GeForce GT635M 1GB
Audio
Realtek High Definition Audio
Monitor
Display 15,6"
Case
Lenovo Ideapad Z500
OS
Windows 8 64-bit
Dovresti prima imparare ad usarlo. :rolleyes:

Non so perchè ma senza il main () alla fine mi dava errore :skept:
Invece così funge alla perfezione :D
(La cosa importante è che funzioni :asd:)


Però forse, adesso che ci penso... Qualche errore me lo dava, ma non ricordo dove... Però risolsi subito... E comunque Djcrash deve prenderlo come spunto non deve fare copia-incolla ;)
 
Ultima modifica:

signore del tempo

Utente Èlite
3,228
491
CPU
Intel Core i5 4670K
Scheda Madre
Asus Z87-Plus
HDD
WD Caviar Green 500GB
RAM
G.Skill Ares 2x4GB 1600MHz
GPU
Sapphire 7850 1GB @ 1050MHz
Audio
Integrata
Monitor
Acer V193w
PSU
XFX ProSeries 550W Core Edition
Case
CM HAF 912 plus
OS
ArchLinux + KDE - Windows 10
Non so perchè ma senza il main () alla fine mi dava errore :skept:
Invece così funge alla perfezione :D
(La cosa importante è che funzioni :asd:)
Chiamare main è un gravissimo errore, oltre che violazione dello standard.
Usi la exit() senza includere cstdlib.
 

Alessandro27

Nuovo Utente
66
7
CPU
Intel Core I7 3632QM
HDD
500GB
RAM
6GB
GPU
Nvidia GeForce GT635M 1GB
Audio
Realtek High Definition Audio
Monitor
Display 15,6"
Case
Lenovo Ideapad Z500
OS
Windows 8 64-bit
In quanto al main posso sorvolare, ma adesso mi hai rinfrescato la memoria.. Era proprio exit che non andava, proprio perchè ci mancava "cstdlib"... :thanks: :luxhello:
 

signore del tempo

Utente Èlite
3,228
491
CPU
Intel Core i5 4670K
Scheda Madre
Asus Z87-Plus
HDD
WD Caviar Green 500GB
RAM
G.Skill Ares 2x4GB 1600MHz
GPU
Sapphire 7850 1GB @ 1050MHz
Audio
Integrata
Monitor
Acer V193w
PSU
XFX ProSeries 550W Core Edition
Case
CM HAF 912 plus
OS
ArchLinux + KDE - Windows 10
La soluzione corretta è usare un ciclo tipo
Codice:
do
 //operazioni
...
cout << "Continuare? s/n" << endl;
char r;
cin >> r;
while (r == 's');
Leggi questo
 

Ivan Sala

Nuovo Utente
70
4
CPU
Core 2 duo E4400 @ 2.25ghz
Scheda Madre
OEM Dell 0GM819
HDD
Hitachi Deskstar 7K1000.C 500GB HDS721050CLA362
RAM
4gb ddr2 800Mhz
GPU
Nvidia GT 440 @922 (CoreClock) / @1010 MemoryClock / @1844 shader
Audio
Integrata
Monitor
Lg flatron w1934s @ 1440x900
PSU
Dell 305W
Case
Base optilex 775
OS
Arch linux+openbox/ Windows 7
(La cosa importante è che funzioni :asd:)

Scusa, ma se io da un grattacielo di 20 piani devo arrivare a terra, prendo l'ascensore seguendo tutte le prassi o uso il metodo veloce e mi butto dal tetto? La seconda opzione è certamente la più veloce, ma non per forza corretta e funzionale... (oltre che riporta danni collaterali quali, al esempio la morte :D )

Comunque volevo solo sottolineare il fatto che non bisognerebbe limitarsi a dire "funziona" ma bisognerebbe trovare il miglior metodo seguendo tutte le convenzioni e gli standard dettati, se no anche se funziona non vale un ciuffolo :D
 

Alessandro27

Nuovo Utente
66
7
CPU
Intel Core I7 3632QM
HDD
500GB
RAM
6GB
GPU
Nvidia GeForce GT635M 1GB
Audio
Realtek High Definition Audio
Monitor
Display 15,6"
Case
Lenovo Ideapad Z500
OS
Windows 8 64-bit
Scusa, ma se io da un grattacielo di 20 piani devo arrivare a terra, prendo l'ascensore seguendo tutte le prassi o uso il metodo veloce e mi butto dal tetto? La seconda opzione è certamente la più veloce, ma non per forza corretta e funzionale... (oltre che riporta danni collaterali quali, al esempio la morte :D )

Comunque volevo solo sottolineare il fatto che non bisognerebbe limitarsi a dire "funziona" ma bisognerebbe trovare il miglior metodo seguendo tutte le convenzioni e gli standard dettati, se no anche se funziona non vale un ciuffolo :D


Dai ragazzi, mi state massacrando per 2 errori :asd:
Degli errori ci possono stare, ma se non comportano nessuna anomalia passano in secondo piano ;)
 

Ivan Sala

Nuovo Utente
70
4
CPU
Core 2 duo E4400 @ 2.25ghz
Scheda Madre
OEM Dell 0GM819
HDD
Hitachi Deskstar 7K1000.C 500GB HDS721050CLA362
RAM
4gb ddr2 800Mhz
GPU
Nvidia GT 440 @922 (CoreClock) / @1010 MemoryClock / @1844 shader
Audio
Integrata
Monitor
Lg flatron w1934s @ 1440x900
PSU
Dell 305W
Case
Base optilex 775
OS
Arch linux+openbox/ Windows 7
Tranquillo, gli errori ci stanno. L'importante però, per me, non è metterli in secondo piano, bensì capirli e risolverli e migliorarsi :D
 

incolto

Utente Èlite
4,310
2,305
CPU
AMD Athlon II x2 240e
Scheda Madre
AS Rock 880GM-LE
HDD
Samsung HM080HC 80GB
RAM
Corsair ValueSelect DDR3 2x2GB @1333 9-9-9-24
GPU
integrata
Audio
integrata
Monitor
SyncMaster P2470HD
PSU
400w
Case
Kraun
OS
Windows 7
Dai ragazzi, mi state massacrando per 2 errori :asd:
Degli errori ci possono stare, ma se non comportano nessuna anomalia passano in secondo piano ;)

Ma anche no!
Ecco spiegato perchè ogni tanto le cose funzionano alla coda di mosca.
Ad ogni modo... le anomalie non devono passare in secondo piano :sisi:
 

Alessandro27

Nuovo Utente
66
7
CPU
Intel Core I7 3632QM
HDD
500GB
RAM
6GB
GPU
Nvidia GeForce GT635M 1GB
Audio
Realtek High Definition Audio
Monitor
Display 15,6"
Case
Lenovo Ideapad Z500
OS
Windows 8 64-bit
Ma anche no!
Ecco spiegato perchè ogni tanto le cose funzionano alla coda di mosca.
Ad ogni modo... le anomalie non devono passare in secondo piano :sisi:

Ma tu preferisci una calcolatrice che funziona bene seppur con 1-2 errori, oppure una calcolatrice che non funziona proprio? :asd:
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili