Calcolatrice in C++

pabloski

Utente Èlite
2,427
636
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
Hard Disk
WD Caviar Green 500GB
RAM
G.Skill Ares 2x4GB 1600MHz
Scheda Video
Sapphire 7850 1GB @ 1050MHz
Scheda Audio
Integrata
Monitor
Acer V193w
Alimentatore
XFX ProSeries 550W Core Edition
Case
CM HAF 912 plus
Sistema Operativo
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
Hard Disk
500GB
RAM
6GB
Scheda Video
Nvidia GeForce GT635M 1GB
Scheda Audio
Realtek High Definition Audio
Monitor
Display 15,6"
Case
Lenovo Ideapad Z500
Sistema Operativo
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
Hard Disk
WD Caviar Green 500GB
RAM
G.Skill Ares 2x4GB 1600MHz
Scheda Video
Sapphire 7850 1GB @ 1050MHz
Scheda Audio
Integrata
Monitor
Acer V193w
Alimentatore
XFX ProSeries 550W Core Edition
Case
CM HAF 912 plus
Sistema Operativo
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
Hard Disk
500GB
RAM
6GB
Scheda Video
Nvidia GeForce GT635M 1GB
Scheda Audio
Realtek High Definition Audio
Monitor
Display 15,6"
Case
Lenovo Ideapad Z500
Sistema Operativo
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
Hard Disk
WD Caviar Green 500GB
RAM
G.Skill Ares 2x4GB 1600MHz
Scheda Video
Sapphire 7850 1GB @ 1050MHz
Scheda Audio
Integrata
Monitor
Acer V193w
Alimentatore
XFX ProSeries 550W Core Edition
Case
CM HAF 912 plus
Sistema Operativo
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
Hard Disk
500GB
RAM
6GB
Scheda Video
Nvidia GeForce GT635M 1GB
Scheda Audio
Realtek High Definition Audio
Monitor
Display 15,6"
Case
Lenovo Ideapad Z500
Sistema Operativo
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
Hard Disk
WD Caviar Green 500GB
RAM
G.Skill Ares 2x4GB 1600MHz
Scheda Video
Sapphire 7850 1GB @ 1050MHz
Scheda Audio
Integrata
Monitor
Acer V193w
Alimentatore
XFX ProSeries 550W Core Edition
Case
CM HAF 912 plus
Sistema Operativo
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
Hard Disk
Hitachi Deskstar 7K1000.C 500GB HDS721050CLA362
RAM
4gb ddr2 800Mhz
Scheda Video
Nvidia GT 440 @922 (CoreClock) / @1010 MemoryClock / @1844 shader
Scheda Audio
Integrata
Monitor
Lg flatron w1934s @ 1440x900
Alimentatore
Dell 305W
Case
Base optilex 775
Sistema Operativo
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
Hard Disk
500GB
RAM
6GB
Scheda Video
Nvidia GeForce GT635M 1GB
Scheda Audio
Realtek High Definition Audio
Monitor
Display 15,6"
Case
Lenovo Ideapad Z500
Sistema Operativo
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
Hard Disk
Hitachi Deskstar 7K1000.C 500GB HDS721050CLA362
RAM
4gb ddr2 800Mhz
Scheda Video
Nvidia GT 440 @922 (CoreClock) / @1010 MemoryClock / @1844 shader
Scheda Audio
Integrata
Monitor
Lg flatron w1934s @ 1440x900
Alimentatore
Dell 305W
Case
Base optilex 775
Sistema Operativo
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
Hard Disk
Samsung HM080HC 80GB
RAM
Corsair ValueSelect DDR3 2x2GB @1333 9-9-9-24
Scheda Video
integrata
Scheda Audio
integrata
Monitor
SyncMaster P2470HD
Alimentatore
400w
Case
Kraun
Sistema Operativo
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
Hard Disk
500GB
RAM
6GB
Scheda Video
Nvidia GeForce GT635M 1GB
Scheda Audio
Realtek High Definition Audio
Monitor
Display 15,6"
Case
Lenovo Ideapad Z500
Sistema Operativo
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

Discussioni Simili

Hot del momento