Oppure

Loading
31/10/08 12:10
bip
mi da questi errori il compilatore
-invalid conversion from `char*' to `int'
-In function `char contr()'

#include <iostream>
using namespace std;

struct data{
int gior;
int mese;
int anno;
};


struct studenti{
char nome[20];
char cognome[20];
data nato;
data diploma;
}classe[20];


int dif(){return classe[20].diploma.anno-classe[20].nato.anno;};
int contr(){if(dif()<20){ return classe[20].nome;}};
main(){



cout<<contr();
}
che vogliono dire come posso fare help pls :-|8-|
aaa
31/10/08 13:51
WARRIOR
int contr(){if(dif()<20){ return classe[20].nome;}}; 


Probabilmente perché la funzione è dichiarata come int e tu restituisci un char*.
aaa
01/11/08 10:57
bip
#include <iostream>
using namespace std;

struct data{
int gior;
int mese;
int anno;
};


struct studenti{
char nome[20];
char cognome[20];
data nato;
data diploma;
}classe[20];


int dif(){return classe[20].diploma.anno-classe[20].nato.anno;};
char contr(){if(dif()<20){ return classe[20].nome;}};
main(){



cout<<contr();
}

ma anche se la dichiaro cme char mi dice invalid char to char quale sarebbe la soluzione?
aaa
01/11/08 11:27
WARRIOR
Devi fare in modo di restituire un puntatore a stringa, inquesto modo:

char *funzione() {}


Luca
aaa
01/11/08 13:16
bip
scusa mi puoi dare l'ultimo aiuto?

il programma è questo:

#include <iostream>
#include <string>

using namespace std;

struct data{
int gior;
int mese;
int anno;
};


struct studenti{
char nome[20];
char cognome[20];
data nato;
data diploma;
}classe[20];


void menu(){
cout<<"scegli"<<endl;
cout<<"con 0 inserisci il il nome ";
cout<<"anno di nascita ";
cout<<"e l'anno di diploma"<<endl;
cout<<"con 1 ottieni risultato"<<endl;
cout<<"con 4 termina l'inserimento ";
}


char *contr(){

int risano = classe[20].diploma.anno-classe[20].nato.anno;
if(risano<=20){ return classe[20].nome;}

}


main(){

int s, r=0;

menu();

cin>>r;


while(r!=4){

cin>>s;

switch(s){

case 0:cout<<"inserisci il nome ";
cin>> classe[20].nome;
cout<<"inserisci anno di nscita ";
cin>>classe[20].nato.anno;
cout<<"inserisci anno del diploma ";
cin>>classe[20].diploma.anno;
break;
case 1:cout<<contr();
break;
default: "good by";

};

}

system("pause";);

}


io dovrei inserire i nomi le date di nascita e le date di quando si sono diplomati i vari alunni
e il programma mi deve restituire chi ha conseguito il diploma con un'età = o inferiore hai 20 anni questo programma mi restituisce solo l'ultimo di quei inseriti....
mmmh di essermi espresso...
Ultima modifica effettuata da bip 01/11/08 13:32
aaa
02/11/08 11:13
WARRIOR
Naturalmente, qui passi soltanto il ventesimo indice:

char *contr(){

int risano = classe[20].diploma.anno-classe[20].nato.anno;
if(risano<=20){ return classe[20].nome;}

} 


potresti fare un ciclo che richiama la funzione con l'indice, riuscendo a scorrere tutta la lista degli alunni.


funzione(int i) {
restituisco l'i-esimo studente
}


main() {
//Ciclo
i=0;
per tutti gli studenti
stringa = funzione(i);
stampa stringa.
}
aaa
02/11/08 12:34
bip
Worrior mi potresti fare un esempio pratico,perchè il senso l'ho capito ma preticamente non funziona :-|8-|:( :ot:
Hlp grz
aaa
03/11/08 17:23
WARRIOR
WARRIOR.

Cmq, visto che devi solo stampare dei nomi, perché non li stampi direttamente nella funzione? Potresti modificare la funzione in questo modo:
void function() {
    for(i=0;i<20;i++) {
       if(vettore[i].età<=20)
       vettore[i].qualcosa.
    }
}


:k:
Ultima modifica effettuata da WARRIOR 03/11/08 17:25
aaa