Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - mi da questi errori il compilatore  invalid conversion from `char*' to `int'    e   In function `char contr()'
Forum - C/C++ - mi da questi errori il compilatore invalid conversion from `char*' to `int' e In function `char contr()'

Avatar
bip (Normal User)
Rookie


Messaggi: 36
Iscritto: 22/04/2008

Segnala al moderatore
Postato alle 13:10
Venerdì, 31/10/2008
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-|

PM Quote
Avatar
WARRIOR (Ex-Member)
Guru


Messaggi: 627
Iscritto: 30/03/2007

Segnala al moderatore
Postato alle 14:51
Venerdì, 31/10/2008
Codice sorgente - presumibilmente C/C++

  1. int contr(){if(dif()<20){ return classe[20].nome;}};



Probabilmente perché la funzione è dichiarata come int e tu restituisci un char*.

PM Quote
Avatar
bip (Normal User)
Rookie


Messaggi: 36
Iscritto: 22/04/2008

Segnala al moderatore
Postato alle 11:57
Sabato, 01/11/2008
#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?

PM Quote
Avatar
WARRIOR (Ex-Member)
Guru


Messaggi: 627
Iscritto: 30/03/2007

Segnala al moderatore
Postato alle 12:27
Sabato, 01/11/2008
Devi fare in modo di restituire un puntatore a stringa, inquesto modo:

char *funzione() {}


Luca

PM Quote
Avatar
bip (Normal User)
Rookie


Messaggi: 36
Iscritto: 22/04/2008

Segnala al moderatore
Postato alle 14:16
Sabato, 01/11/2008
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 il 01/11/2008 alle 14:32
PM Quote
Avatar
WARRIOR (Ex-Member)
Guru


Messaggi: 627
Iscritto: 30/03/2007

Segnala al moderatore
Postato alle 12:13
Domenica, 02/11/2008
Naturalmente, qui passi soltanto il ventesimo indice:

Codice sorgente - presumibilmente C/C++

  1. char *contr(){
  2.  
  3. int risano = classe[20].diploma.anno-classe[20].nato.anno;
  4. if(risano<=20){ return classe[20].nome;}
  5.  
  6. }



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.
}

PM Quote
Avatar
bip (Normal User)
Rookie


Messaggi: 36
Iscritto: 22/04/2008

Segnala al moderatore
Postato alle 13:34
Domenica, 02/11/2008
Worrior mi potresti fare un esempio pratico,perchè il senso l'ho capito ma preticamente non funziona :-|8-|:( :ot:
Hlp grz

PM Quote
Avatar
WARRIOR (Ex-Member)
Guru


Messaggi: 627
Iscritto: 30/03/2007

Segnala al moderatore
Postato alle 18:23
Lunedì, 03/11/2008
WARRIOR.

Cmq, visto che devi solo stampare dei nomi, perché non li stampi direttamente nella funzione? Potresti modificare la funzione in questo modo:
Codice sorgente - presumibilmente C/C++

  1. void function() {
  2.     for(i=0;i<20;i++) {
  3.        if(vettore[i].età<=20)
  4.        vettore[i].qualcosa.
  5.     }
  6. }



:k:

Ultima modifica effettuata da WARRIOR il 03/11/2008 alle 18:25
PM Quote