View Full Version : mi dite perchè non funziona?
/*Program max_fra_tre (esempio d'uso del costrutto if*/
#include<iostream>
using namespace std
#include<stdlib.h>
int main()
{
float a,b,c;
float max;
cout<<"assegna valore ad a,b,c \n";
cin>>a>>b>>c;
max=a;
if(b>max)
{
max=b;
}
if(c>max) max=c;
cout<<"\nil massimo valore e\':"<<max;
system("PAUSE");
return 0;
}
ho copiato pari pari da una guida e mi dice che ci sono una ventina di errori.
uso il dev 4.999, cioè l'ultimissimo.
così ad occhio manca il punto e virgola alla fine della riga:
using namespace std
noooooo è vero. :muro: :muro: :muro:
ma è mai possibile, non mi rendo conto di un punto e virgola e non funziona tutto:muro: :muro: :muro: :muro: :muro:
Fenomeno85
15-11-2004, 09:45
scusate, ma data la mia ignoranza ... che è?
using namespace std
~§~ Sempre E Solo Lei ~§~
Vuol dire che da quella riga in poi, puoi utilizzare tutti i simboli definiti nello scopo di quel namespace senza doverlo esplicitare; :O ad esempio:
std::cout << "hello world\n"; // senza quella riga
cout << "hello world\n"; // con quella riga
Oddio non ricordo esattamente se cout era definito in std... :confused:
/*program equazione di secondo grado*/
#include<iostream>
using namespace std;
#include<stdlib.h>
#include<math.h>
int main()
{
float A,B,C;
float Discr,J;
float R,X,X1,X2;
double I;
/*modulo soluzione 2*/
{
X-C/B;
cout<<"L\'equazione ammette una radice reale X=<<X;
}
/*Modulo soluzione 2*/
{
{cout<<"l\'equazione è indeterminata";
}
/*Modulo tera soluzione 3*/
{
cout<<"L\'equazione è impossibile";
}
/*Modulo soluzione generale*/
{
R=B/(2*A);
Discr=(R*R)-C/A;
J=fabs(Discr);
I=sqrt((double)J);
if{Discr<0)
{
cout<<"L\'equazione ammette due radici complesse coniugate C1=R + jI, C2=R-jI\n";
cout<<"C1=<<"R<<"+j"<<I<<" \n C2=<<R<<"-j"<<I;
}
else
{
if(Discr=0)
{
cout<<"L\'equazione ammette una radice reale X=R \n"<<"X="<<R;
}
else
{
X1=R+I;
X2=R-I;
cout<<"L\'equazione ammette due radici reali X1="<<X1<<"\t X2="<<X2;
}
}
}
quest'altro anche. come mai?
beppegrillo
15-11-2004, 19:11
Secondo te questa cosa che fà?
X-C/B;
ti dò un consiglio. anzichè copiare codice da altre parti cerca di capire come funziona, in questo modo errori banali come questi li eviteresti sicuramente...
una dritta per capire?come si capisce come funziona?
beppegrillo
15-11-2004, 20:09
Originariamente inviato da Bandit
una dritta per capire?come si capisce come funziona?
Intendo dire, cerca di capire cosa stai facendo mentre scrivi codice e non riportarlo solo in maniera passiva, cosi' ti accorgi che l'istruzione precedente non ha alcun significato.
interamente o solo quella che mi hai indicato?
Ciao questo l'ho creato io
#include<iostream>;
using namespace std;
#include<stdlib.h>;
int main()
{
float X;
int Dx;
int X=max;
Dx=0;X=0;
do
{
cout<<"assegna valore ad X\n";
cin>>X;
X=X+Dx;
Dx++;
}while(x<=xmax)
cout<<"\nla somma dei "<<Dx<<" numeri di X="<<S;
system("PAUSE");
return 0;
}
la traccia è:Ho X e voglio incrementare di DX fino ad arrivare ad xmax.
perche non va?
#include<iostream>;
using namespace std;
#include<stdlib.h>;
#include<math.h>;
int main()
{
float x,r;
char ripeti;
do
{
cout<<"assegna valore ad x\n";
cin>>x;
if(x>0)
{
r=sqrt(x);
}
else if(x<0)
{
cout<<"\n"<<r<<"è impossibile";
}
cout<<"\nil risultato della radice è r="<<r<<"\n";
cout<<"\nvuoi continuare? s/n\t";
cin>>ripeti;
}while(ripeti=='s');
cout<<"\nil risultato della radice è r="<<r<<"\n";
system("PAUSE");
return 0;
}
vorrei che quando ci metto una x negativa mi dice è impossibile, senza calcolarmi nulla.come si fa?
Gli include C si mettono così:
#include<iostream>
#include<cstdlib>
using namespace std;
Inoltre non è necessario il ; dopo gli include...
|unknown|
27-11-2004, 16:34
visto che usi il dev fare doppio click o ancora meglio leggere gli errori riportati sotto no eh?
non mi porta errore voglio quella condizione detta prima.
#include<iostream>
#include<cstdlib>
#include<cmath>
using namespace std;
int main()
{
float x,r;
char ripeti;
do
{
cout<<"assegna valore ad x\n";
cin>>x;
if(x>=0)
{
r=sqrt(x);
cout<<"\nil risultato della radice è r="<<r<<"\n";
}
else
{
cout<<"\n"<<r<<"è impossibile";
}
cout<<"\nvuoi continuare? s/n\t";
cin>>ripeti;
}while(ripeti=='s');
if(x>=0) cout<<"\nil risultato della radice è r="<<r<<"\n";
system("PAUSE");
return 0;
}
Non mettere \n come carattere di fine linea, ma endl...
Ciao
#include<iostream>
using namespace std;
#include<stdlib.h>
void input(int&riemp,float vett[]);
void fricmin(int riemp,float vett[],float &minimo,int &quanti,int posto[]);
void output(float minimo,int quanti,int posto[]);
int main()
{
int n,k,pos[100];
float min;
float v[100];
input(n,v);
fricmin(n,v,min,k,pos);
output(min,k,pos);
cout<<"\n\n";
system("PAUSE");
return 0;
}
void input(int&riemp,float vett[])
{int i;
cout<<"assegna valore ad n numero di elementi del vettore\n";
cin>>riemp;
cout<<"assegna a"<<riemp<<" valori float a vett\n";
for(i=0;i<riemp;i++)
{
cin>>vett[i];
}
void output(float minimo,int quanti,int posto[])
{ *
int i;
cout<<"\nil valore minimo e\'"<<minimo;
cout<<"ed e\'stato trovato"<<(quanti+1)<<"volte,nei posti \n";
for(i=0;i<quanti;i++)
cout<<posto[i]<<"\t";
}
void fricmin(int riemp,float vett[],float &minimo,int &quanti,int posto[])
{
int i;
quanti=0;
minimo=vett[0];posto[quanti]=0;
for(i=0,i<riemp,i++)
{
if(vett[i]<minimo)
{ quanti=0;
minimo=vett[i];
posto[quanti]=i;
}
else
{ if(vett[i]==minimo)
{
quant++;
posto[quanti]=i;
}
}
}
}
questo prog dovrebbe :D ricercare il valore minimo in un vettore di numeri reali,e si vuole sapere quanti elementi hanno valore uguale al minimo e in quali posti si trovano nel vetore.
come primo errore strano mi porta :ve lo indico con "*" perchè?
grazie e abbiate pasienza
Originariamente inviato da Bandit
Ciao
#include<iostream>
using namespace std;
#include<stdlib.h>
void input(int&riemp,float vett[]);
void fricmin(int riemp,float vett[],float &minimo,int &quanti,int p
int n,k,pos[100];
float min;
}
}
}
anno valore uguale al minimo e in quali posti si trovano nel vetore.
come primo errore strano mi porta :ve lo indico con "*" perchè?
grazie e abbiate pasienza
ho avito l'illuminazione, grazie cmq.;)
però
#include<iostream>
using....... posto[quanti]=i;
}
}
}
}
eseguendolo al terzo cout di quando sio esegue il prog mi esce un 0 in +: date 10 poi 2 3 4 2 5 6 8 9 2 dovrebbe uscire0 3 7, però mi da 0 0 3 7.
Mi aiutate con questo problema:
/*Si scriva un programma che, assegnato in ingresso un insieme di riemp valori
float ad un vettore vett, calcoli:
- il prodotto degli elementi del vettore;
- quanti elementi del vettore e' necessario sommare, nell'ordine dal primo in poi,
per raggiungere un valore della somma >=S, con S assegnato in ingresso;
si visualizzino quindi i valori calcolati.
Di ogni elemento del vettore, si calcoli inoltre la radice quadrata in due modi
distinti: utilizzando la funzione di libreria sqrt ed utilizzando l'algoritmo per il
calcolo della radice quadrata come limite di una successione, con precisione assegnata.
Si produca quindi, sul supporto di uscita, una tabella che per ogni valore vett[i]
riporti i valori di sqrt(vett[i]) e della radice di vett[i] calcolata nel secondo modo.
Il programma deve essere articolato in funzioni (ad es.: input,output, somma,
prodotto, radquad1, radquad2). Suggerimento: ad es. la funzione prodotto riceve in
ingresso il vettore ed il suo riempimento e restituisce il valore del prodotto
al nome della funzione.
void input(int&n,float v[]);
int num_somma(int n,float v[],float S);
float prodotto(int n,float v[]);
void radquad1(int n,float v[],float RQ1[]);
void radquad2(int n,float v[],float RQ2[],float E);
void output_tabella(int n,float v[],float RQ1[],float RQ2[]);
int main()
{
int riemp;
float vett[100];
float rad1[100]; float rad2[100];
float Err,S;
void input(int&n,float v[]);
input(riemp,vett);
cout<<"\nassegna valore float all'errore";
cin>>Err;
cout<<"\nassegna valore alla soma S";
cin>>S;
cout<<"\nilnumero di elementi da sommare per raggiungere un valore >= a "<<S<<"e\'= a "<<num_somma (riemp,vett,S);
cout<<"\nil prodotto degli elementi del vettore è = "<<prodotto(riemp,vett);
cout<<"\n";
num_somma (riemp,vett,S);
prodotto(riemp,vett);
radquad1(riemp,vett,rad1);
radquad2(riemp,vett,rad2,Err);
output_tabella(riemp,vett,rad1,rad2);
system("PAUSE");
return 0;
}
void input(int&n,float v[])
{int i;
cout<<"\nassegna valore int al numero di elementi n, del vettore\n";
cin>>n;
cout<<"\nAssegna "<<n<<" valori float a vett\n";
for(i=0;i<n;i++);
cin>>v[i];
}
int num_somma(int n,float v[],float S)
{
float som=0; int i=0;
do
{
som=som+v[i];
i++;
}while((i<n)&&(som<S));
return i;
}
float prodotto(int n,float v[])
{
float prod=1; int i;
for(i=0;i<n;i++)
prod=prod*v[i];
return prod;
}
void radquad1(int n,float v[],float RQ1[])
{ int i;
for(i=0;i<n;i++)
RQ1[i]=sqrt(v[i]);
}
void radquad2(int n,float v[],float RQ2[],float E)
{ float Rqprec;int i;
for(i=0;i<n;i++);
RQ2[i]=1;
do{
Rqprec=RQ2[i];
RQ2[i]=(RQ2[i]+v[i]/RQ2[i])/2;
}while(fabs(RQ2[i]-Rqprec)>E);
}
void output_tabella(int n,float v[],float RQ1[],float RQ2[])
{int i;
cout<<"\nv[i]\t\t\tRQ1[i]\t\t\tRQ2[i]\n";
for(i=0;i<n;i++)
cout<< v[i]<<"\t\t"<<RQ1[i]<<"\t\t"<<RQ2[i]<<"\n";
}
Mi escono radici con numeri con la e, e poi non riesco a mettere il valore della somma.
Originariamente inviato da beppegrillo
Secondo te questa cosa che fà?
X-C/B;
ti dò un consiglio. anzichè copiare codice da altre parti cerca di capire come funziona, in questo modo errori banali come questi li eviteresti sicuramente...
X-C/B;
è un'istruzione sintatticamente e semanticamente corretta in qualsiasi programma c/c++, in cui X, C e B siano state dichiarati come variabili numeriche come in questo caso; difatti X-C/B è semplicemente un'espressione, e in c/c++ una simgola espressione puo essere utilizzata come istruzione a sè stante; in esecuzione l'espressione viene valutata e il risultato prodotto è scartato.
beppegrillo
07-01-2005, 16:18
Originariamente inviato da anx721
X-C/B;
è un'istruzione sintatticamente e semanticamente corretta in qualsiasi programma c/c++, in cui X, C e B siano state dichiarati come variabili numeriche come in questo caso; difatti X-C/B è semplicemente un'espressione, e in c/c++ una simgola espressione puo essere utilizzata come istruzione a sè stante; in esecuzione l'espressione viene valutata e il risultato prodotto è scartato.
Ok, ma qual'è lo scopo? Che senso ha?
Salve a tutti....sono anche io un po alle prime armi con il c/c++ (faccio la 3za itis).
Vorrei capire perchè questo programma non funziona:
#include <stdio.h>
int main()
{
const int dim=3;
int numero[dim],i=0;
float totale,media;
for(i=0;i<=dim;i++){
printf("\nInserisci");
scanf("%d",numero[i]);
totale+=numero[i];
}
media=totale/dim;
printf("\n%f",media);
}
In particolare come valore la media assume sempre 50766.66796...ma non capisco il perchè :(
P.S. sto compilando in linux con gcc se puo servire
beppegrillo
07-01-2005, 16:43
Originariamente inviato da -Yara-
Salve a tutti....sono anche io un po alle prime armi con il c/c++ (faccio la 3za itis).
Vorrei capire perchè questo programma non funziona:
#include <stdio.h>
int main()
{
const int dim=3;
int numero[dim],i=0;
float totale,media;
for(i=0;i<=dim;i++){
printf("\nInserisci");
scanf("%d",numero[i]);
totale+=numero[i];
}
media=totale/dim;
printf("\n%f",media);
}
In particolare come valore la media assume sempre 50766.66796...ma non capisco il perchè :(
P.S. sto compilando in linux con gcc se puo servire
C'e' un uguale di troppo nel ciclo for, gli array in C/c++ partono da 0, tu accedi al 4 elemento che non esiste e vai in qualche cella di memoria non inizializzata ;)
E' vero! :muro:
Da 0 a n-1, giusto.
grazie ;)
Pero' ho un problema analogo con questo programma (compito per le vacanze..è in beta ancora :D)
/* Creare un programma che legga i voti di informatica della classe
3 vettori: 1 orale, 1 scritto, 1 pratica;
Fornire la media di tutti i voti, in scritto, orale e pratico. Il programma deve stampare il voto massimo,
minimo. */
#include <stdio.h>
#define dim 5
#define dim2 6
int main()
{
int orale[dim],scritto[dim],pratico[dim];
int min,max,temp[dim2],i;
float totale,totale1,totale2;
float media,media1,media2;
for(i=0;i<dim;i++)
{
printf("\nInserire il voto orale numero %d",i); printf(" ");
scanf("%d",&orale[i]);
if(i==0)
{
min=orale[i];
max=orale[i];
}
if(orale[i]<min)
{orale[i]=temp[0];}
if(orale[i]>max)
{orale[i]=temp[1];}
totale=totale+orale[i];
}
for(i=0;i<dim;i++)
{
if(i==0)
{
min=scritto[i];
max=scritto[i];
}
printf("\nInserire il voto scritto numero %d",i); printf(" ");
scanf("%d",&scritto[i]);
if(orale[i]<min)
{scritto[i]=temp[2];}
if(orale[i]>max)
{scritto[i]=temp[3];}
totale1=totale1+scritto[i];
}
for(i=0;i<dim;i++)
{
printf("\nInserire il voto pratica numero %d",i); printf(" ");
scanf("%d",&pratico[i]);
if(i==0)
{
min=pratico[i];
max=pratico[i];
}
if(orale[i]<min)
{pratico[i]=temp[4];}
if(orale[i]>max)
{pratico[i]=temp[5];}
totale2=totale2+pratico[i];
}
media=totale/dim;
media1=totale1/dim;
media2=totale2/dim;
printf("\nLa media in orale e' %f ",media);
printf("\nLa media in scritto e' %f ",media1);
printf("\nLa media in pratico e' %f ",media2);
printf("\nIl voto minimo in orale e'"); printf("%d",temp[0]);
printf("\nIl voto massimo in orale e'"); printf("%d",temp[1]);
printf("\nIl voto minimo in scritto e'"); printf("%d",temp[2]);
printf("\nIl voto massimo in scritto e'"); printf("%d",temp[3]);
printf("\nIl voto minimo in pratico e'"); printf("%d",temp[4]);
printf("\nIl voto massimo in pratico e'"); printf("%d",temp[5]);
return;
}
Ps. volendo per rappresentare quei totale,toale1,totale2 e media,media1,media2, potrei usare un vettore? Per esempio definisco una costante e gli do valore 3...
e faccio totale[0],totale[1] ecc...?
beppegrillo
07-01-2005, 17:00
Originariamente inviato da -Yara-
for(i=0;i<dim;i++)
{
printf("\nInserire il voto orale numero %d",i); printf(" ");
scanf("%d",&orale[i]);
if(i==0)
{
min=orale[i];
max=orale[i];
}
if(orale[i]<min)
{orale[i]=temp[0];}
if(orale[i]>max)
{orale[i]=temp[1];}
totale=totale+orale[i];
}
[/code]
C'è un errore concettuale, ovvero cosa succede se il minimo stà in prima posizione? Succede che lo salvi in min e non in temp[0], quindi ti fornirà risultati errati.
Originariamente inviato da -Yara-
Ps. volendo per rappresentare quei totale,toale1,totale2 e media,media1,media2, potrei usare un vettore? Per esempio definisco una costante e gli do valore 3...
e faccio totale[0],totale[1] ecc...?
Certo anzichè utilizzare n variabili usi un array di dimensione n :D
Originariamente inviato da beppegrillo
C'è un errore concettuale, ovvero cosa succede se il minimo stà in prima posizione? Succede che lo salvi in min e non in temp[0], quindi ti fornirà risultati errati.
scusa non ho capito..cosa intendi per miniomo? la variabile min oppure un numero minimo?
E cosa significa in prima posizione?
Grazie :D
beppegrillo
07-01-2005, 17:14
Originariamente inviato da -Yara-
scusa non ho capito..cosa intendi per miniomo? la variabile min oppure un numero minimo?
E cosa significa in prima posizione?
Grazie :D
Errore di digitazione, intendevo minimo.
Per prima posizione intendo, che se i voti orali sono 2 3 4, vedi che qualcosa non ti funzionerà :D
ma il mio ultimo problema?sto cercando un aiutino...
Mi aiutate con questo problema:
/*Si scriva un programma che, assegnato in ingresso un insieme di riemp valori
float ad un vettore vett, calcoli:
- il prodotto degli elementi del vettore;
- quanti elementi del vettore e' necessario sommare, nell'ordine dal primo in poi,
per raggiungere un valore della somma >=S, con S assegnato in ingresso;
si visualizzino quindi i valori calcolati.
Di ogni elemento del vettore, si calcoli inoltre la radice quadrata in due modi
distinti: utilizzando la funzione di libreria sqrt ed utilizzando l'algoritmo per il
calcolo della radice quadrata come limite di una successione, con precisione assegnata.
Si produca quindi, sul supporto di uscita, una tabella che per ogni valore vett[i]
riporti i valori di sqrt(vett[i]) e della radice di vett[i] calcolata nel secondo modo.
Il programma deve essere articolato in funzioni (ad es.: input,output, somma,
prodotto, radquad1, radquad2). Suggerimento: ad es. la funzione prodotto riceve in
ingresso il vettore ed il suo riempimento e restituisce il valore del prodotto
al nome della funzione.
#include<iostream>
#include <stdlib.h>
#include<math.h>
using namespace std;
void input(int&n,float v[]);
int num_somma(int n,float v[],float S);
float prodotto(int n,float v[]);
void radquad1(int n,float v[],float RQ1[]);
void radquad2(int n,float v[],float RQ2[],float E);
void output_tabella(int n,float v[],float RQ1[],float RQ2[]);
int main()
{
int riemp;
float vett[100];
float rad1[100]; float rad2[100];
float Err,S;
void input(int&n,float v[]);
input(riemp,vett);
cout<<"\nassegna valore alla soma S";
cin>>S;
cout<<"\nilnumero di elementi da sommare per raggiungere un valore >= a "<<S<<"e\'= a "<<num_somma (riemp,vett,S);
cout<<"\nil prodotto degli elementi del vettore è = "<<prodotto(riemp,vett);
cout<<"\n";
num_somma (riemp,vett,S);
prodotto(riemp,vett);
radquad1(riemp,vett,rad1);
radquad2(riemp,vett,rad2,Err);
output_tabella(riemp,vett,rad1,rad2);
system("PAUSE");
return 0;
}
void input(int&n,float v[])
{int i;
cout<<"\nassegna valore int al numero di elementi n, del vettore\n";
cin>>n;
cout<<"\nAssegna "<<n<<" valori float a vett\n";
for(i=0;i<n;i++);
cin>>v[i];
}
int num_somma(int n,float v[],float S)
{
float som=0; int i=0;
do
{
som=som+v[i];
i++;
}while((i<n)&&(som<S));
return i;
}
float prodotto(int n,float v[])
{
float prod=1; int i;
for(i=0;i<n;i++)
prod=prod*v[i];
return prod;
}
void radquad1(int n,float v[],float RQ1[])
{ int i;
for(i=0;i<n;i++)
RQ1[i]=sqrt(v[i]);
}
void radquad2(int n,float v[],float RQ2[],float E)
{ float Rqprec;int i;float Err;
for(i=0;i<n;i++);
RQ2[i]=1;
cout<<"\nassegna valore float all'errore";
cin>>Err;
do{
Rqprec=RQ2[i];
RQ2[i]=(RQ2[i]+v[i]/RQ2[i])/2;
}while(fabs(RQ2[i]-Rqprec)>E);
}
void output_tabella(int n,float v[],float RQ1[],float RQ2[])
{int i;
cout<<"\nv[i]\t\t\tRQ1[i]\t\t\tRQ2[i]\n";
for(i=0;i<n;i++)
cout<< v[i]<<"\t\t"<<RQ1[i]<<"\t\t"<<RQ2[i]<<"\n";
}
è importante
Vedo che non hai seguito il mio consiglio su endl...
Comunque se non ci dici dov'è il problema secondo me otterrai ben pochi consigli...
Cerca di isolare il problema (se non sai usare il debugger modifica ilc odice ad hoc per testare una singola funzione o un singolo pezzo di codice)
Originariamente inviato da cionci
Cerca di isolare il problema (se non sai usare il debugger modifica ilc odice ad hoc per testare una singola funzione o un singolo pezzo di codice)
che significa?come si fa?
e poi c'è una differenza tra \n ed endl ma fin quando nessuno me la dice io applicherò sempre \n......
\n non si usa nell'output di testo perchè non tutti i sistemi operativi utilizzano il solo \n per andare a capo...
Per testare una sola funzione:
int funzionedatestare(int c, float b, int a)
{
....
}
int main()
{
....
cout << funzionedatestare(10, 2.0, 3);
...
}
Inoltre non si scrive mai l'intero programma senza aver testato precedentemente le funzioni principali...
Originariamente inviato da cionci
\n non si usa nell'output di testo perchè non tutti i sistemi operativi utilizzano il solo \n per andare a capo...
Per testare una sola funzione:
int funzionedatestare(int c, float b, int a)
{
....
}
int main()
{
....
cout << funzionedatestare(10, 2.0, 3);
...
}
Inoltre non si scrive mai l'intero programma senza aver testato
precedentemente le funzioni principali...
int funzionedatestare(int c, float b, int a)
{
....
}
dove la devo digitare?che c'entra col debug?
come si fa a testare le funzioni principali?col debug?scusami, ma non sono molto pratico
La funzione input va corretta in questo modo:
void input(int&n,float v[])
{int i;
cout<<"\nassegna valore int al numero di elementi n, del vettore\n";
cin>>n;
cout<<"\nAssegna "<<n<<" valori float a vett\n";
for(i=0;i<n;i++){
cin>>v[i];
};
}
inoltre l' algoritmo che tu stai usando per calcolare la radice quadrata non è corretto. Controlla questo link:
http://www.geocities.com/cnowlen/Cathy/Emat4680/Squareroot.htm
Originariamente inviato da Bandit
int funzionedatestare(int c, float b, int a)
{
....
}
dove la devo digitare?che c'entra col debug?
come si fa a testare le funzioni principali?col debug?scusami, ma non sono molto pratico
funzionedatestare va sostituita con una qualunque delle funzioni di cui non sei sicuro del funzionamento...richiamandola con dei parametri ad hoc puoi vedere se il risultato è coerente con il problema dato...
Originariamente inviato da cionci
con dei parametri ad hoc puoi vedere se il risultato è coerente con il problema dato...
"ad hoc": quali?
Originariamente inviato da Bandit
"ad hoc": quali?
Dipende dal problema...parametri con cui tu sai già il comportamento che deve tenere la funzione...
Ad esempio puoi passare 4 alla funzione che calcola la radice quadrata e il risultato dovrà essere due... Oppure gli passi il un numero negativo epr vedere come si comporta...oppure un qualsiasi altro numero di cui conosci la radice quadrata...
chetidolanimale
10-01-2005, 19:08
volevo provare a correggere il programma per il calcolo della radice(oramai non gli servirà più,ma è solo per mettermi un po' alla prova con qualcosa di facile :) );io l'avrei fatto così:
#include<iostream>
using namespace std;
#include<stdlib.h>
#include<math.h>
int main()
{
float x;
char ripeti;
do
{
cout<<"assegna valore ad x\n";
cin>>x;
if(x>=0)
{
cout<<"il risultato della radice è r="<<sqrt(x)<<"\n";
}
else {
cout<<"\nla radice è impossibile";
}
cout<<"\nvuoi continuare? s/n\t";
cin>>ripeti;
}while(ripeti=='s');
system("PAUSE");
return 0;
}
che ne dite?:)
mi sapete dire che cosa è la funzione di casting?
Quando hai un oggetto y di una classe Y che è stata ereditata da una classe X il casting ti permette di convertire y in un oggetto x della classe X.
vediamo se ho capito p.e.:
si usa se ho fissato le variabili in un modo(=tipo), ed in uno specifico caso c'è bisogno di calcolarlo in un qaltro tipo.
ho capito bene?
Esatto ecco un esempio:
class Base
{
public:
Base() : _data(999) {}
int Data() const {return _data;}
private:
int _data;
};
class Derived : private Base
{
public:
Derived () : Base() {}
};
Derived* d1 = new Derived;
/*
Tu non puoi accedere al metodo data tramite d1 perchè è un metodo privato di Base. Allora devi eseguire un casting:
*/
Base* b1 = (Base*) d1;
int i = b1->Data();
Originariamente inviato da pinzi
Base* b1 = (Base*) d1;
int i = b1->Data();
Comunque se uno progetta in questo modo fa prima a cambiare lavoro ;)
Il casting è in generale quando si convertire da un tipo ad un'altro...
Originariamente inviato da cionci
Comunque se uno progetta in questo modo fa prima a cambiare lavoro ;)
Il casting è in generale quando si convertire da un tipo ad un'altro...
allora ti faccio anche io la stessa domanda che ho fatto prima.
dicendo:"si usa se ho fissato le variabili in un modo(=tipo), ed in uno specifico caso c'è bisogno di calcolarlo in un qaltro tipo."
ho capito bene?
Sì...ad esempio:
int a = b/c + d/e;
Se tutte le variabili sono intere entrambe le divisioni avvengono in maniera intera...
Se faccio una cosa del genere:
int a = (double)b/c + (double)d/e;
convertirò b e d in double e verrà fatta una divisione double...
In questo caso la somma avverrà fra i due risultati double, poi il risultato double della somma sarà convertito implicitamente (senza specificare (int)) in int per essere immesso dentro a...
Quello con scritto (double) è un casting esplicito...
Quello che avviene sull'operatore = è un casting implicito...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.