Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [C++] errori programma

  1. #1

    [C++] aiutoooooooooooooooooo

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

  2. #2
    se utilizzi come titolo 'aiutooo' in pochi leggeranno il tuo messaggio, inoltre è vietato dal regolamento
    www.matteosteri.it

  3. #3
    Utente di HTML.it L'avatar di edriv
    Registrato dal
    Oct 2004
    Messaggi
    367
    ...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:
    codice = 0;
    Giusto:
    codice:
    // "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:
    codice:
    #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;
    }
    I've got a bike. You can ride it if you like.

  4. #4
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    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);
    }

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  5. #5
    Utente di HTML.it L'avatar di MMarzia
    Registrato dal
    Mar 2001
    Messaggi
    1,781
    benvenuto marco
    ti invito a leggere il nostro regolamento

    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
    io sono festosamente cicciottello :: e. cartman

    t'amo senza sapere come, nè quando nè da dove,
    t'amo direttamente senza problemi nè orgoglio:
    così ti amo perchè non so amare altrimenti

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.