Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Le soluzioni FSP per il 2026: potenza e IA al centro
Le soluzioni FSP per il 2026: potenza e IA al centro
In occasione del Tech Tour 2025 della European Hardware Association abbiamo incontrato a Taiwan FSP, azienda impegnata nella produzione di alimentatori, chassis e soluzioni di raffreddamento tanto per clienti OEM come a proprio marchio. Potenze sempre più elevate negli alimentatori per far fronte alle necessità delle elaborazioni di intelligenza artificiale.
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS è il principale operatore di servizi cloud al mondo e da tempo parla delle misure che mette in atto per garantire una maggiore sovranità alle organizzazioni europee. L'azienda ha ora lanciato AWS European Sovereign Cloud, una soluzione specificamente progettata per essere separata e distinta dal cloud "normale" e offrire maggiori tutele e garanzie di sovranità
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Xiaomi ha portato sul mercato internazionale la nuova serie Redmi Note, che rappresenta spesso una delle migliori scelte per chi non vuole spendere molto. Il modello 15 Pro+ punta tutto su una batteria capiente e su un ampio display luminoso, sacrificando qualcosa in termini di potenza bruta e velocità di ricarica
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 12-09-2004, 16:27   #1
StErMiNeiToR
Bannato
 
L'Avatar di StErMiNeiToR
 
Iscritto dal: Jul 2002
Città: Lucca
Messaggi: 966
[C++] Calcolatrice

Come posso migliorarla? Come posso alleggerire il codice?

qualche trucchetto?

cosa aggiungo?

Codice:
#include "math.h"
#include "iostream.h"

//funzione menu ;)
void menu ()
{
	cout<<"**********************************************************"<<endl;
	cout<<"*                                                        *"<<endl;
	cout<<"* TDO banner's calculator v1.0                           *"<<endl;
	cout<<"* 12 September 2004                                      *"<<endl;
	cout<<"* By: tdo staff ([email protected])             *"<<endl;
	cout<<"* http://tdo.altervista.org                              *"<<endl;
	cout<<"* Copyright © 2004 by TDO Portal                         *"<<endl;
	cout<<"*                                                        *"<<endl;
	cout<<"**********************************************************"<<endl;
}
//funzione menu scelta ^^
void menu_scelta ()
{
	cout<<"**********************************************************"<<endl;
	cout<<"*                                                        *"<<endl;
	cout<<"* 1. Addizione                                           *"<<endl;
	cout<<"* 2. Sottrazione                                         *"<<endl;
	cout<<"* 3. Moltiplicazione                                     *"<<endl;
	cout<<"* 4. Divisione                                           *"<<endl;
	cout<<"* 5. Elevamento a potenza                                *"<<endl;
	cout<<"*                                                        *"<<endl;
	cout<<"* 0. Exit                                                *"<<endl;
	cout<<"*                                                        *"<<endl;
	cout<<"**********************************************************"<<endl;
}



//funzione per l'elevamento a potenza
double potenza (double x, double y)
{
	return pow(x,y);
}
//funzione per l'addiozione
double addizione (double x, double y)
{
	return x+y;
}
//funzione per la sottrazione
double sottrazione (double x, double y)
{
	return x-y;
}
//funzione per la moltiplicazione
double moltiplicazione (double x, double y)
{
	return x*y;
}

//funzione per la divisione
double divisione (double x, double y)
{
	return x/y;
}
void sw_ca ()
{
	double a,b;
	int scelta=-1;
	
	
	
	do
	{
		
		cout<<endl<<"Inserisci il primo numero  ";
		cin>>a;
		cout<<endl<<"Inserisci il secondo numero  ";
		cin>>b;
		cout<<endl<<endl;
		menu_scelta();
		cout<<endl<<endl<<"Quale operazione vuoi eseguire?   ";
		cin>>scelta;
		cout<<endl;
		switch(scelta)
		{
		case 1:
			cout<<"Il risultato dell'addizione relativa ai numeri "<<a<<" e "<<b<<" e': "<<addizione(a,b)<<endl;
			scelta=-1;
			break;
		case 2:
			cout<<"Il risultato della sottrazione relativa ai numeri "<<a<<" e "<<b<<" e': "<<sottrazione(a,b)<<endl;
			scelta=-1;
			break;
		case 3:
			cout<<"Il risultato della moltiplicazione relativa ai numeri "<<a<<" e "<<b<<" e': "<<moltiplicazione(a,b)<<endl;
			scelta=-1;
			break;
		case 4:
			if((a!=b)&&(b==0)){ cout<<"Impossibile eseguire l'operazione"; scelta=-1; break; }
			cout<<"Il risultato della divisione relativa ai numeri "<<a<<" e "<<b<<" e': "<<divisione(a,b);
			scelta=-1;
			break;
		case 5:
			cout<<"Il risultato dell'elevamento a potenza relativa ai numeri "<<a<<" e "<<b<<" e': "<<potenza(a,b)<<endl;
			scelta=-1;
			break;
		case 0:
			scelta=0;
			break;
		default: { cout<<"Inserisci un numero compreso fra 0 e 5"<<endl; scelta=-1; }
		}
	}
	while(scelta==-1);
}





void main ()
{
	menu();
	cout<<endl;
	sw_ca();
	
}
StErMiNeiToR è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2004, 18:12   #2
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Re: [C++] Calcolatrice

Quote:
Originariamente inviato da StErMiNeiToR
Come posso migliorarla? Come posso alleggerire il codice?

qualche trucchetto?

cosa aggiungo?
[...]
Che ne dici di agiungere logaritmi, esponenziali, potenze, radici, frazioni, ... la matematica è una delle materie piu vaste non hai che l'imbarazzo della scelta.

Invece che chiedere all'utente ogni singola operazione potresti implementare un piccolo parser e permettere cose come: 9 + 9 - 4. E poi mettere in output subito il risultato senza "il risultato...." qualcosa tipo:
2 + 2 <invio>
4

ciao
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2004, 18:22   #3
anx721
Senior Member
 
L'Avatar di anx721
 
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
E poi puoi implentare il tutto usando la OOP (il C++ non abdrebbe usato per programmare come si programma in C...): una classe per il parser, una classe per rappresentare un'operazione: la calcolatrice avrà quindi un parser a cui passare la strunga immessa dall'untente che che restituisce un oggetto Operazione in basse alla stringa elaboarta, la calcolatrice esegue l'operaione, senza sapere neanche di che operazione si tratta, e visualizza il risultato. Cosi diventa molto modulare e si possono agiungere nuove funzionalità facilmente.

Inoltre sostituisci:

#include "iostream.h"

che è obsoleto con

Codice:
#include <iostream>

using namespace std;
e

void main ()

con

Codice:
int main (){
...
...
...
return 0;
}

Ciao.
__________________
Sun Certified Java Programmer
EUCIP Core Level Certified

European Certification of Informatics Professionals
anx721 è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2004, 18:53   #4
StErMiNeiToR
Bannato
 
L'Avatar di StErMiNeiToR
 
Iscritto dal: Jul 2002
Città: Lucca
Messaggi: 966
scusate ragazzi ma ho solo 16 anni e studio da poco....


cosa è un parser? cosa sono le classi? scusate ma non conosco il sistema ad oggetti (OOP)

potreste spiegarmi un po il OOP e darmi qualche esempio da applicare al mio programma?


grazie ve ne sono molto grato
StErMiNeiToR è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2004, 19:10   #5
anx721
Senior Member
 
L'Avatar di anx721
 
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
Se stai strudiando da poco il C++ ok...arrivaerai a studiare le classi e la programmazione ad oggetti...non è un aromento che si puo spiegare in un post sul forum preche molto vasto, è il cuore di totta la programmazione C++. Magari quando la inizia a studiare prova a riformulare il problema usando le calssi e gli oggetti.

Un parser è un componente del programma che si dovrebbe occupare di 'interpretare' una stringa inserita dall'utente, individuandone gli elementi costitutivi; ovviamente devi prima stabilire quale deve essere 'il linguggio' che la tua calcolatrice accetta. Ad esempio potresti accettare espressioni del tipo:

1 + 3 * 5 - 4

un parser deve occuparsi di individuare nella stringa inserita i numeri e le operazioni, memorizzando queste informazioni in un'apposita struttura dati. Quindi, in base alle informazioni estratte dal parser puoi eseguire l'operazione.

Un modo elementare di eseguire ciò è di memoriazzare i numeri e le operazioni in un unico array; quindi ti scorri l'array dal fondo, estrai il primo operando, estrai l'operazione, estrai il secondo operando, calcoli il risultato e lo insrisci in fondo all'array, e ripeti l'operazione finche l'array nn contiene un solo elemento che è il risultato.

Questo è il modo piu semplice, che non tiene conto delle precedenze tra gli operatori, e inizia a calcolare a partire dal fondo del'esporessione. Per migliroerare la cosa andrebbero usate strutture dati piu consone come ad esempio alberi.

Ciao.
__________________
Sun Certified Java Programmer
EUCIP Core Level Certified

European Certification of Informatics Professionals
anx721 è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2004, 19:44   #6
StErMiNeiToR
Bannato
 
L'Avatar di StErMiNeiToR
 
Iscritto dal: Jul 2002
Città: Lucca
Messaggi: 966
ho studiato c++ per tutto l anno scolastico con la scuola ma ovviamente il 95% di quello che ho appreso è stato per merito di internet libri ecc... insomma autodidatta rulez

cmq adesso ho capito cosa è un parser...

se tu magari potessi linkarmi un sito dove studiare l' OOP o un tutorial te ne sarei grato anche perche ho visto che è molto importante anche per il JAVA


cmq ritornando al tuo esempio ho capito come fare ma inserendo una stringa (ovvero tutto d'un colpo senza piu di un cin o di un get) dopo come faccio a fargli capire che * e / ha piu importanza di + e - ?
StErMiNeiToR è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2004, 20:08   #7
anx721
Senior Member
 
L'Avatar di anx721
 
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
Un buon testo sul c++ è Thinking in C++, che puoi scaricare sul sito dell'autore:

http://mindview.net/Books

disponibile anche in italiano, anche se la traduzione a volte non è proprio impeccabile, io ti consilio di seguire la versione in inglese, e consultare l'italiana se proprio non capisci un concetto.

Sulla stessa pagina puoi anche scaircare Thinking in Java.

Quando al calcolo del valore di un'espressione, se usi la tecnica dell'array ti basta fare una prima passata in cui risolvi le operazioni con priorita maggiore, e poi una seconda passata per le operazioni con priorita minore.
__________________
Sun Certified Java Programmer
EUCIP Core Level Certified

European Certification of Informatics Professionals
anx721 è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2004, 20:44   #8
StErMiNeiToR
Bannato
 
L'Avatar di StErMiNeiToR
 
Iscritto dal: Jul 2002
Città: Lucca
Messaggi: 966
un ultima cosa...

ma quando inserisco tutta l espressione la inserisco passo a passo oppure con una stringa?
StErMiNeiToR è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2004, 20:45   #9
Frank1962
Senior Member
 
L'Avatar di Frank1962
 
Iscritto dal: Sep 2001
Città: de_legato
Messaggi: 792
buttati su java che è il linguaggio del futuro ........è il linguaggio ad oggetti per eccellenza ed è molto più semplice sopratutto per chi vuole fare qualche programmino un pò + serio di un semplice hello world o di una calcolatrice testuale.

il C++ è troppo vincolato alla macchina e alla capacità del compilatore.....
__________________
----------------------------------------------
File reality.sys corrupted, Reboot Universe? Y/N
----------------------------------------------
Frank1962 è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2004, 20:53   #10
anx721
Senior Member
 
L'Avatar di anx721
 
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
Quote:
Originariamente inviato da StErMiNeiToR
un ultima cosa...

ma quando inserisco tutta l espressione la inserisco passo a passo oppure con una stringa?
Dovresti leggere un'intera riga dalla console memorizzandola in una stringa da passare al parser.
__________________
Sun Certified Java Programmer
EUCIP Core Level Certified

European Certification of Informatics Professionals
anx721 è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2004, 21:10   #11
StErMiNeiToR
Bannato
 
L'Avatar di StErMiNeiToR
 
Iscritto dal: Jul 2002
Città: Lucca
Messaggi: 966
Quote:
Originariamente inviato da Frank1962
buttati su java che è il linguaggio del futuro ........è il linguaggio ad oggetti per eccellenza ed è molto più semplice sopratutto per chi vuole fare qualche programmino un pò + serio di un semplice hello world o di una calcolatrice testuale.

il C++ è troppo vincolato alla macchina e alla capacità del compilatore.....
il java si basa sul c++ quindi prima lasciami imparare questo e poi passo al java
StErMiNeiToR è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2004, 22:15   #12
Frank1962
Senior Member
 
L'Avatar di Frank1962
 
Iscritto dal: Sep 2001
Città: de_legato
Messaggi: 792
Quote:
Originariamente inviato da StErMiNeiToR
il java si basa sul c++ quindi prima lasciami imparare questo e poi passo al java
che discorso è? .....allora il C++ si basa su assembler, e l'assembler si basa su binario.....

cioè di solito quando uno vuole imparare inizia con le cose più semplici, magari con un linguaggio accessibile che ti permetta di avere qualche piccola soddisfazione e ti permetta in futuro, appunto, il passaggio a un linguaggio più complesso come può essere il C++
__________________
----------------------------------------------
File reality.sys corrupted, Reboot Universe? Y/N
----------------------------------------------
Frank1962 è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2004, 22:19   #13
StErMiNeiToR
Bannato
 
L'Avatar di StErMiNeiToR
 
Iscritto dal: Jul 2002
Città: Lucca
Messaggi: 966
posso assicurarti che non mi pento di aver studiato c++
StErMiNeiToR è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2004, 22:38   #14
Frank1962
Senior Member
 
L'Avatar di Frank1962
 
Iscritto dal: Sep 2001
Città: de_legato
Messaggi: 792
Quote:
Originariamente inviato da StErMiNeiToR
posso assicurarti che non mi pento di aver studiato c++
mica di ti devi pentire ......il problema era soltanto che di solito è più difficile passare da C a Java che non il contrario

poi ognuno è libero di fare quello che vuole
__________________
----------------------------------------------
File reality.sys corrupted, Reboot Universe? Y/N
----------------------------------------------
Frank1962 è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2004, 22:50   #15
Jonny32
Senior Member
 
L'Avatar di Jonny32
 
Iscritto dal: Jan 2003
Città: Lucca
Messaggi: 2165
Ciao stermi...
Com'è?

Ti stai dando alla programmazione? Ormai hai lasciato il mondo CS?


Oh mettici almeno anche le radici... o sennò mettici "Elevamento a potenza o radice"...
(questo l'ho scritto altrimenti questo post è totalmente OT)




Ci vediamo domattina...

Ciao
__________________
Intel G1820T | Asus H87-Pro | 8Gb DDR3 1333Mhz | Crucial M4 64Gb | WD Green 2Tb | Xonar Essence ST
My pictures on 500px
Jonny32 è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2004, 22:59   #16
anx721
Senior Member
 
L'Avatar di anx721
 
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
Quote:
Originariamente inviato da Frank1962
mica di ti devi pentire ......il problema era soltanto che di solito è più difficile passare da C a Java che non il contrario
Da java a C forse...ma da java a C++ è parecchio faticoso...te lo dice uno che ha sviluppato in java per anni e che ora studiando il c++ sto facendo un bello sforzo...prechè? Bhè proprio perche, come hai detto tu, java è piu semplice, ma dire 'semplice' non è tanto corretto, io direi che java, intendendo con ciò solo il linguaggio in se, è molto piu lineare, omogeneo, senza tante caratteristiche ostiche del c++.

Detto questo...la parte che StErMiNeiToR ha studiato, ovvero tutto cio che non riguarda le classi, è la parte semplice del c++.
__________________
Sun Certified Java Programmer
EUCIP Core Level Certified

European Certification of Informatics Professionals
anx721 è offline   Rispondi citando il messaggio o parte di esso
Old 13-09-2004, 00:34   #17
StErMiNeiToR
Bannato
 
L'Avatar di StErMiNeiToR
 
Iscritto dal: Jul 2002
Città: Lucca
Messaggi: 966
perfetto quindi io mi sono fatto solo le stronzate

adesso allora comincia il bello mettiamoci a fare le classi e giu di manuali

cmq x jonny32


io è piu di un anno ke mi sono dato alla programmazione non solo del c++

cmq ci becchiamo domani mattina ciao bello
StErMiNeiToR è offline   Rispondi citando il messaggio o parte di esso
Old 13-09-2004, 01:06   #18
Frank1962
Senior Member
 
L'Avatar di Frank1962
 
Iscritto dal: Sep 2001
Città: de_legato
Messaggi: 792
Quote:
Originariamente inviato da anx721
Da java a C forse...ma da java a C++ è parecchio faticoso...te lo dice uno che ha sviluppato in java per anni e che ora studiando il c++ sto facendo un bello sforzo...prechè? Bhè proprio perche, come hai detto tu, java è piu semplice, ma dire 'semplice' non è tanto corretto, io direi che java, intendendo con ciò solo il linguaggio in se, è molto piu lineare, omogeneo, senza tante caratteristiche ostiche del c++.

Detto questo...la parte che StErMiNeiToR ha studiato, ovvero tutto cio che non riguarda le classi, è la parte semplice del c++.
infatti anche io mi sono trovato nella tua stessa situazione .........nessuno dice che sia semplice, però molte cose suonano già familiari e si può notare qualche tipo di somiglianza tra java e c, cosa che non può avvenire per qualcuno che incomincia da zero!
__________________
----------------------------------------------
File reality.sys corrupted, Reboot Universe? Y/N
----------------------------------------------
Frank1962 è offline   Rispondi citando il messaggio o parte di esso
Old 13-09-2004, 14:35   #19
/\/\@®¢Ø
Bannato
 
L'Avatar di /\/\@®¢Ø
 
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
Re: [C++] Calcolatrice

Quote:
Originariamente inviato da StErMiNeiToR
Come posso migliorarla? Come posso alleggerire il codice?

qualche trucchetto?

cosa aggiungo?
Una prima cosa che potresti fare sarebbe quello di estendere la calcolatrice in modo che possa valutare piu' operazioni assieme ( ad esempio 3+5*2)
La cosa piu' semplice e' quella di usare la cosiddetta notazione polacca inversa (RPN), conosciuta molto bene da chi usa una calcolatrice scientifica HP.
Ad esempio invece di scrivere 3+5*2
scriveresti 3 5 + 2 *
Questo rende piu' difficile a te la scrittura delle espressioni, ma molto piu' semplice il lavoro della calcolatrice
In questo modo infatti il calcolo diverrebbe relativamente semplice. Questo e' un passo relativamente facile da implementare una volta che capisci come funziona.
/\/\@®¢Ø è offline   Rispondi citando il messaggio o parte di esso
Old 13-09-2004, 14:59   #20
anx721
Senior Member
 
L'Avatar di anx721
 
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
Re: Re: [C++] Calcolatrice

Quote:
Originariamente inviato da /\/\@®¢Ø
La cosa piu' semplice e' quella di usare la cosiddetta notazione polacca inversa (RPN), conosciuta molto bene da chi usa una calcolatrice scientifica HP.
Ad esempio invece di scrivere 3+5*2
scriveresti 3 5 + 2 *
Questo rende piu' difficile a te la scrittura delle espressioni, ma molto piu' semplice il lavoro della calcolatrice
Si..magari l'utente puo pure scrivere direttamente il risultato e la calcolatrice si limita a ristamparlo... Lo so che diventa piu facile..ma per l'utente diventa anche molto piu difficile scsrivere l'espressione in modo corretto e fino a prova contraria il programma deve facilitare il calcolo dell'utente.
__________________
Sun Certified Java Programmer
EUCIP Core Level Certified

European Certification of Informatics Professionals
anx721 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
Il remake di Assassin's Creed IV: Black ...
Tutti i robot aspirapolvere in offerta s...
Amazon Haul spinge la promo di San Valen...
Offerte hardware Amazon per l'upgrade de...
iPhone 17e dovrà fare i conti con...
Offerte Amazon sugli iPhone di ultima ge...
DJI Mini 5 Pro Combo Fly More scende a 8...
Ubisoft potrebbe licenziare ancora ma se...
Samsung Galaxy S26: un leak anticipa col...
Aetherflux e Lockheed Martin insieme per...
SpaceX sta proseguendo i test della terz...
Axiom Space ha mostrato un nuovo video d...
Realme: la trasformazione in sub-brand d...
PlayStation 6 si farà attendere: ...
BWT Alpine chiude la prima tornata di pr...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 15:46.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v