Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto
Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto
Amazon porta i colori sul suo Kindle da scrittura più grande: schermo Colorsoft a 11 pollici, processore quad-core, penna premium più reattiva e strumenti IA per le note, sono le note salienti. Il salto di prezzo rispetto al modello in bianco e nero si fa sentire, anche se la percezione è quella di trovarsi di fronte a un prodotto di fascia altissima, per veri appassionati
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
Abbiamo intervistato Sumit Dhawan, CEO di Proofpoint, per capire come stia cambiando il mondo della sicurezza con l'avvento dell'intelligenza artificiale e con il ritmo sempre più serrato a cui vengono trovate vulnerabilità nel software. Un problema significativo, che richiederà del tempo per essere risolto (o quantomeno arginato)
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
La parola d'ordine al Nextcloud Summit 2026, che si è tenuto a Monaco, è stata "sovranità". Non come è spesso usato questo termine in politica ma, al contrario, come capacità positiva di decidere il proprio destino tecnologico, con modalità collaborative e aperte. L'Europa dice già molto nel mondo open source, che viene visto come mezzo per ottenere la tanto agognata autonomia digitale
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 12-09-2004, 15: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, 17: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, 17: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, 17: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, 18: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, 18: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, 19: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, 19: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, 19: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, 19: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, 20: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, 21: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, 21: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, 21: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, 21: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, 21: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 12-09-2004, 23: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, 00: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, 13: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, 13: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


Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto Kindle Scribe Colorsoft: riduce le cornici e div...
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint L'IA cambia tutte le regole della sicurezza tra ...
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026 L'Europa conta nella tecnologia e può ess...
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più Dreame X60 Pro Ultra Complete: i bracci si esten...
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati TCL 65C8L, la recensione del SQD-Mini LED da 440...
Rocket Lab acquisisce Iridium: nasce un ...
Una ventola nascosta e un design fuori d...
Display e fotocamera insieme: a Zurigo n...
Lenovo Idea Tab Plus, il tablet per stud...
Un ingegnere di AMD ha riprodotto in cas...
SanDisk Optimus cresce con nuovi SSD cer...
Loongson contro Intel e AMD: dalla Cina ...
Australia, quasi tutti gli under-16 aggi...
Oltre 1.300 miliardi di dollari per la p...
Un nuovo studio mette in dubbio la natur...
Crisi Volkswagen, torna l'ipotesi cessio...
Il CERN spegne il Large Hadron Collider:...
Stranger Than Heaven avrà una storia mol...
Il futuro prezzo di PS6 preoccupa i gioc...
AMD Ryzen 10000 sempre più vicini...
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: 22:48.


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