PDA

Visualizza la versione completa : [C++] errori programma


marcarrey
20-12-2004, 19:28
Salve mi chiamo Marco.
Mi trovo in difficoltà. Domani ho compito e il programma mi da errori.



#include <iostream.h>
#include<string.h>
class videoteca
{
private:
int codice[5];
char titolo[20], regista[20],
public:
videoteca();
videoteca(int a[]);
videoteca(char b[], char c[]);
~ videoteca();
int leggicodice();
char leggititolo();
char leggiregista();
};
videoteca::videoteca ()
{
codice[]=0;
titolo[]=0;
regista[]=0;
}
videoteca::videoteca(int a[])
{
int strcpy (int codice[], int a[]);
}
videoteca::videoteca (char b[], char c[]);
{
char strcpy (char titolo[], char b[]);
char strcpy (char regista[], char c[]);
}
int videoteca::leggicodice();
{
return codice[];
}
char videoteca::leggititolo();
{
return titolo[];
}
char videoteca::leggiregista();
{
return regista[];
}
int main()
{
videoteca v1;
cout<<"Il titolo è:"<<v1.leggititolo();
cout<<"Il regista è:"<<v1.leggiregista();
cout<<"Il codice è:"<<v1.leggicodice();
return 0;
}

tommisceddu
20-12-2004, 20:04
se utilizzi come titolo 'aiutooo' in pochi leggeranno il tuo messaggio, inoltre è vietato dal regolamento

edriv
20-12-2004, 20:16
...leggi il regolamento... metti un titolo esplicativo...
... metti il codice tra [ code] e [/ code] senza spazi...

I principali errori che hai fatto sono:
stai confondendo dichiarazione, definizione e chiamata di una funzione.

DICHIARAZIONE
Indichi semplicemente il nome ed i parametri della funzione
DEVI mettere il tipo dei parametri (e tipo restituito)
PUOI mettere il nome dei parametri
DEVI mettere il punto-e-virgola alla fine.
Esempio:
int calcola(int a, int b);

DEFINIZIONE
Scrivi tutte le istruzioni della funzione.
DEVI mettere l'elenco dei parametri (e tipo restituito)
NON va messo il ;
Servono invece le parentesi graffe.

CHIAMATA
Fai eseguire la funzione.
NON va messo il tipo restituito e dei parametri
DEVI mettere il ;

Altro errore: rivediti come si indicano gli elementi di un vettore.
NON:


codice = 0;

Giusto:


// "imposta il primo elemento al valore 0 (carattere ASCII)"
codice[0] = '\0';



Altro erroraccio: non confondere interi con caratteri (strcpy va a caratteri).
Io ho usato un codice di caratteri.

Altro errore: hai dichiarato un distruttore, ma non definito! Se non serve non metterlo!

Codice corretto:


#include <iostream>
#include <string>
#include <cstdlib>

using namespace std;

class videoteca
{
private:
char codice[5];
// Qui va il punto e virgola!
// Errato: char titolo[20], regista[20],
char titolo[20], regista[20];
public:
videoteca();
videoteca(char a[]);
videoteca(char b[], char c[]);
char* leggicodice();
char* leggititolo();
char* leggiregista();
};

videoteca::videoteca()
{
// Molto più corretto
codice[0] = '\0';
titolo[0] = '\0';
regista[0] = '\0';
}

videoteca::videoteca(char a[])
{
// int cosa???
//int strcpy (int codice[], int a[]);
// E poi a è di interi... e non va bene...cambiato
strcpy(codice, a);
}

// Un punto e virgola di troppo!
videoteca::videoteca (char b[], char c[])
{
strcpy (titolo, b);
strcpy (regista, c);
}
// Nelle DEFINIZIONI non và il punto e virgola!
// Restituisci un vettore o un singolo numero?
char* videoteca::leggicodice()
{
return codice;
}
char* videoteca::leggititolo()
{
return titolo;
}
char* videoteca::leggiregista()
{
return regista;
}
int main()
{
videoteca v1;
cout<<"Il titolo è:"<<v1.leggititolo();
cout<<"Il regista è:"<<v1.leggiregista();
cout<<"Il codice è:"<<v1.leggicodice();
system("pause");
return 0;
}

anx721
20-12-2004, 20:16
Per invocare una funzione non devi riscriverne il prototipo come fai qui:

videoteca::videoteca(int a[])
{
int strcpy (int codice[], int a[]);
}

videoteca::videoteca (char b[], char c[]);
{
char strcpy (char titolo[], char b[]);
char strcpy (char regista[], char c[]);
}

ma devi scrivere:

videoteca::videoteca(int a[])
{
strcpy (codice, a);
}

videoteca::videoteca (char b[], char c[]);
{
strcpy (titolo, b);
strcpy (regista, c);
}

MMarzia
21-12-2004, 09:37
benvenuto marco
ti invito a leggere il nostro regolamento (http://forum.html.it/forum/showthread.php?threadid=762409)

come già ti è stato detto sarebbe bene utilizzare titoli maggiormente significativi: con un titolo così generico è molto più difficile ottenere un aiuto e darne uno a chi in futuro cercherà sul forum una soluzione per il tuo stesso problema ;)

Loading