Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [c++]errore.tipo nn definito

    ciao. sono un newbie di c++, per questo ho scritto un programma stupidissimo, giusto per fare esercizio. Il codice è questo

    codice:
    #include <iostream>
    #include <stdlib.h>
    #include <stdio.h>
    
    using namespace std;
    int* p_x = NULL;	
    typedef struct { char x; char y; char w; char z; } nome_tipo;
    
    main()
    {
    	int a = 5;
    	int b = 6;
    	int risultato;
    	p_x = &a;
    
    cout << a << endl;
    cout << b << endl;
    cout << risultato << endl;
    cout << p_x << endl;
    	
    struct { char papa; char mamma; char ivan; char giada; } Familiari;
    Familiari me;
    me = { "Aldo", "Rosa", "fratello", "sorella"};
    cout << me.papa << me.mamma << me.ivan << me.giada << endl;
    if(char me.papa == Aldo && char me.mamma == Rosa && 
    char me.ivan == fratello && me.giada == sorella)
    { 
        cout << "TUTTO SECONDO I CALCOLI" << endl; 
        }
    else 
    { 
        cout << "QUALCOSA NON QUADRA" << endl; 
        }
    
    
    return(0);
    }
    le mie domande sono 2:

    1)Perkè mi da errore nella riga "Familiari me;" dicendo ke familiari non è stato definito come tipo(eppure l'ho definito nella struttura).

    2)Come far si ke il programma qando lo si esegue non si chiuda in un istante, ma resti aperto.


    gfrazie a tutti..sciaoooo

  2. #2

    Re: [c++]errore.tipo nn definito

    Post successivo
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  3. #3

    Re: Re: [c++]errore.tipo nn definito

    Originariamente inviato da unomichisiada
    Sono un po arrugginito con il C++ ma la speigazione deovrebbe essere questa
    1)Questo:
    codice:
    struct { char papa; char mamma; char ivan; char giada; } Familiari;
    Definisce solo una variabile di nome Familiari di tipo
    struct {bla...bla}, non definisce un nuovo tipo.Per fare quello che vuoi tu devi scrivere:
    codice:
    typedef struct familiari{ char papa; char mamma; char ivan; char giada; } Familiari;
    Oppure puoi dare un nome alla struttura così
    codice:
    struct Familiari{ char papa; char mamma; char ivan; char giada; };
    e istanziare una variabile così:
    codice:
    struct Familiari variabile;
    In pratica typedef ti consente di non ripetere "struct" quando definisci una variabile di quel tipo,questo
    perchè gli stai dicendo "voglio introdurre un nuovo tipo di nome Familiari che è un alias della struttura chiamata familiari".Claro?
    2)metti alla fine della main (prima del return) system("PAUSE"); (funziona solo in win)
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  4. #4
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    In pratica stavi definendo una struct anonima, che è una struct di cui puoi dichiarare solo un certo numero di istanze.

    codice:
    //Struct normale
    struct Prova 
    {
    int a;
    int b;
    int c;
    };
    
    //Struct normale typedef
    typedef struct busta
    {
    int a,b,c;
    } Prova;
    
    //Struct anonima
    struct
    {
    int a,b,c;
    } Prova;
    Nella terza definisci una struct e ne crei una istanza che si chiama Prova.
    Non è possibile istanziare altre struct di uesto tipo, a meno che non aggiungi il suo nome vicino a prova

    codice:
    struct
    {
    int a,b,c;
    } Prova,Prova2,Prova3;
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  5. #5
    Originariamente inviato da XWolverineX
    In pratica stavi definendo una struct anonima, che è una struct di cui puoi dichiarare solo un certo numero di istanze.

    codice:
    //Struct normale
    struct Prova 
    {
    int a;
    int b;
    int c;
    };
    
    //Struct normale typedef
    typedef struct busta
    {
    int a,b,c;
    } Prova;
    
    //Struct anonima
    struct
    {
    int a,b,c;
    } Prova;
    Nella terza definisci una struct e ne crei una istanza che si chiama Prova.
    Non è possibile istanziare altre struct di uesto tipo, a meno che non aggiungi il suo nome vicino a prova

    codice:
    struct
    {
    int a,b,c;
    } Prova,Prova2,Prova3;
    Esatto!
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  6. #6
    codice:
    typedef struct Familiari { char papa; char mamma; char ivan; char giada; } ;
    Familiari me;
    me = { "Aldo", "Rosa", "fratello", "sorella"};
    a questo punto mi da errore nella riga di assegnazione valori alla variabile. come mai?
    sul libro da cui sto studiando si può fare in questo modo!

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da Manuelandro
    codice:
    typedef struct Familiari { char papa; char mamma; char ivan; char giada; } ;
    Familiari me;
    me = { "Aldo", "Rosa", "fratello", "sorella"};
    Ci sono parecchie cose sbagliate ...

    Intanto nella typedef il tipo (Familiari) deve stare alla fine ...
    Poi il tipo di dati dei singoli elementi non puo' essere un singolo carattere ma una stringa di caratteri ...
    Gli elementi, inoltre, e' giusto che siano quelli indicati in

    codice:
    typedef struct { char papa[20]; char mamma[20]; char fratello[20]; char sorella[20]; } Familiari;
    Detto cio', puoi inizializzare la struttura tutto in una riga

    codice:
    Familiari me = {"Aldo", "Rosa", "Ivan", "Giada"};

  8. #8
    perfetto.risolto un altro problema...(purtroppo è la prima volta quindi credo siano normali tt questi errori )cmq procedendo avanti mi da un altro errore

    codice:
    if(char me.papa == "Aldo" && char me.mamma == "Rosa" && 
    char me.ivan == "fratello" && me.giada == "sorella")
    {

    l'errore dovrebbe essere di sintassi.

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Sì ... devi studiare bene la sintassi ...

    Intanto non va indicato il tipo char e poi in C non puoi confrontare un array di caratteri con l'operatore ==

    Devi usare una funzione apposita, la strcmp, ovvero

    if(strcmp(me.papa, "Aldo")==0 && strcmp(me.mamma, "Rosa")==0)


    (ho utilizzato solamente i primi due campi ...)

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 © 2024 vBulletin Solutions, Inc. All rights reserved.