Allora rileggi ancora :) il problema dice che l'iva e' al 20%, non al 22%Hai ragionissima. Avevo letto male.
...
Allora rileggi ancora :) il problema dice che l'iva e' al 20%, non al 22%Hai ragionissima. Avevo letto male.
...
Allora rileggi ancora :) il problema dice che l'iva e' al 20%, non al 22%
Hai ragionissima. Avevo letto male.
Io farei così: (testato e funzionante) mi sono permesso di rinominare qualche variabile
C++:#include <iostream> //Passo le referenze delle due variabili che voglio settare e imposto i loro valori dentro alla funzione void setCalcoloNetto(double totale, double& netto, double& iva) { iva = (100 * totale) / 122; //l'iva è al 22! netto = totale - iva; } int main() { double iva; double totale; double netto; totale = 2000; //setto un totale iniziale es. 2000 euro. setCalcoloNetto(totale, iva, netto); std::cout << "netto=" << netto << ", iva=" << iva << std::endl; }
#include <iostream>
using namespace std;
void IvaCompresa(const double t, double &i,double &n)
{
n=(100 * t) / 120;
i=t-n;
}
int main()
{
double totale;
double netto;
double iva;
cin>>totale;
IvaCompresa(totale,iva,netto);
cout<<netto<<endl<<iva;
}
MI pare come ho scritto io in pratica......
Ma cosa cambia dal mio code?? Insomma come caspita va bene questo esercizio??? Andretti60 non hai detto nulla a Tomasov ma nel mio dici che non è giusto....
C++:#include <iostream> using namespace std; void IvaCompresa(const double t, double &i,double &n) { n=(100 * t) / 120; i=t-n; } int main() { double totale; double netto; double iva; cin>>totale; IvaCompresa(totale,iva,netto); cout<<netto<<endl<<iva; }
No.
1) Leggi bene it testo del problema: la funzione deve calcolare e tornare DUE valori.
2) un metodo definitovoid
significa che non ritorna un bel nulla.
L’ipotesi richiede di ritornare due valori da una funzione. Anche se non sei un programmatore sai che in matematica una funzione associa ad ogni elemento uno ed un solo elemento, perciò è necessario o ritornare un array o un oggetto con due double membri per risolvere il problema, oppure come in questo caso con reference (o puntatori).Scusate se mi intrometto. Aggiungo anche che non sono un programmatore e che non so programmare. Ma c'è tanta confusione in questo thread! Mi è venuto il mal di testa durante la lettura.
A vista, il primo codice postato aveva cose buone, ma anche dei difetti: la funzione IvaCompresa non ha il return, e non serve che si passino come argomenti tutte e tre le variabili, basta il solo prezzo di vendita. Inoltre, secondo la traccia, deve ritornare due valori, il prezzo ante iva e l'iva. Quindi, suppongo, i due valori ottenuti andranno assegnati a delle variabili che poi verranno stampate a video.
........., anche perché l’IDE e il Tab fanno tutto da soli...
Cosa usi per scrivere il codice ?IDE e Tab?? cosa intendi?
Te lo hanno gia' detto gli altri, all'inizio hai dichiarato una funzione "double" ma non ritorni nessun valore, poi hai corretto dichiarandola "void".TI richiedo : visto anche quello che ha scritto Tommasov che è uguale al mio in pratica mi dici dove sbagliamo a questo punto e la correzione ? Grazie.
TI richiedo : visto anche quello che ha scritto Tommasov che è uguale al mio in pratica mi dici dove sbagliamo a questo punto e la correzione ? Grazie.
return netto,iva;
float IvaCompresa(const double t, double &i,double &n)
Permettimi una piccola precisazione. C’è differenza tra il valore di ritorno di una funzione e i possibili valori di ritorno di una funzione, in quanto se passi i parametri per riferimento anziché per valore (cosa che si può fare in quasi tutti i linguaggi, anzi in certi è il metodo di default) tali parametri possono essere cambiati dalla funzione. Infatti è quello che si fa in genere, solitamente una funzione viene dichiarata o booleana o intera, e il valore di ritorno è un "codice" che rappresenta il risultato della operazione, equivalente a un codice di errore. Eventuali "valori di ritorno" sono parametri che vengono passati come riferimento. Questo è tipico per esempio delle API scritte per linguaggi che non hanno un meccanismo try/catch per catturare gli errori a runtime.... . Cioè, visto che non ritorni niente tramite il normale meccanismo di ritorno delle funzioni, definisci una funzione void ...
Permettimi una piccola precisazione. C’è differenza tra il valore di ritorno di una funzione e i possibili valori di ritorno di una funzione, in quanto se passi i parametri per riferimento anziché per valore (cosa che si può fare in quasi tutti i linguaggi, anzi in certi è il metodo di default) tali parametri possono essere cambiati dalla funzione. Infatti è quello che si fa in genere, solitamente una funzione viene dichiarata o booleana o intera, e il valore di ritorno è un "codice" che rappresenta il risultato della operazione, equivalente a un codice di errore. Eventuali "valori di ritorno" sono parametri che vengono passati come riferimento. Questo è tipico per esempio delle API scritte per linguaggi che non hanno un meccanismo try/catch per catturare gli errori a runtime.
Hai assolutamente ragione! (grande punto esclamativo)... Se ci si pensa, questa è una grave inconsistenza semantica del modello di programmazione del C/C++.
CalcolaIVA c = new CalcolaIVA();
c.IvaPercent = 20; // inizializza la percentuale della tassa
c.SetLordo(42); // calcola gli altri parametri usando 42 come prezzo lordo
cout << "Netto: " << c.PrezzoNetto;
cout << "Iva: " << c.IVA;
Ma ricorda, il C venne creato non come linguaggio generico, ma pensato per scrivere kernel e applicazioni di un sistema operativo (Unix)
Con l'introduzione del OOP, le funzioni in pratica non esistono piu', sostituite con i "metodi" delle classi, che operano sui membri interni delle classi