Esame di ingegneria informatica aiuto grazie mille

di il
36 risposte

Esame di ingegneria informatica aiuto grazie mille

Salve, il 29 di questo mese devo sostenere un esame su un progettino sul c ... io ho deciso di creare una rubrica!!! volevo sapere se c'è qlc che è in grado di corregere il mio programmino e di dirmi come potrei migliorarlo e continuarlo... segue programmino:

/*Programma per la creazione di una Rubrica telefonica*/

#include <stdio.h>

{
typedef struct { char Via [30];
char Citta[30];
char Stato[30];
char NCivico[5];
int Cap;
} Indirizzo;

typedef struct { int TelefonoCasa;
int Cellulare;
char Email[30];
int TelefonoUfficio;
} Reperibilita;

typedef struct { char Nome[30];
char Cognome[30];
char CodFiscale[16];
} Persona;
}
main ()

{ Persona Pers1, Pers2, Pers3, Pers4;

{

printf (“Inserisci Nome\n”);
scanf (“%c”, &Persona.Nome);

printf (“Inserisci Cognome\n”);
scanf (“%c”, &Persona.Cognome);

printf(Inserisci CodFiscale\n”)
scanf (“%c”, %Persona.CodFiscale);

printf (“Inserisci Via\n”);
scanf (“%c”, &Indirizzo.Via);

printf (“Inserisci Citta\n”)
scanf (“%c”, &Indirizzo.Citta)

…. E così via per tutti gli struct (indirizzo e persona)

}
If (Reperibilità.TelefonoUfficio = Reperibilità.TelefonoCasa)
printf (“Ufficio ==Casa\n”)

else printf (“Ufficio!=Casa\n”)
}

non so cm continuare, e se persona pers1... va dopo il main om priam e quando devo chiudere laparentesi. Inoltre vorrei sapere se finio ad ora è giusto!!!!!!!!!!!!!!!!!!!!
grazie mille

Eleonora

36 Risposte

  • Re: Esame di ingegneria informatica aiuto grazie mille

    Ora non so come andare avanti con questa rubrica!!!!

    Eleonora
  • Re: Esame di ingegneria informatica aiuto grazie mille

    Non abbiamo mai fatto roba del tipo int argc char*argv[] non c'è un altra maniera... cmq grazie mille!!!!
    è printf (inserisci nome)
    scanf("%s", &persona.pers1o solo Pers 1)? se è solo per1 dopo devo riscrivere la stessa cosa per pers 1, 2, 3, 4. inoltre che dichiarazione manca che non ho capito?... dici sarebbe più adeguato Pers1. Questo vale anche Indirizzo, manca inoltre la sua dichiarazione.. non so di chi.........
    grazie milllllleeee!!!

    Eleonora
  • Re: Esame di ingegneria informatica aiuto grazie mille

    Esatto. Se hai più strutture, devi fare la stessa cosa anche per le altre. Più in là, immagino, userete "array", cioè gruppi di strutture o variabili con le stesse caratteristiche, ma che si possono accedere tramite indice, ad esempio:

    Pers1[1].Nome

    Se non avete ancora usato argc etc, va bene anche "main()". Tuttavia, non potrebbe compilare su C/C++/.NET, e credo proprio che non lo farà. argc e args contengono eventuali parametri dalla riga di comando.

    Indirizzo e Reperibilità sono altre strutture. La cosa migliore è che inglobi tutte le strutture in una sola, così accedi tramite Persona a tutti gli elementi. La separazione di Reperibilità e Indirizzo da Persona potrebbe essere utile solo per database molto grandi, dove la ricerca su un milione di record potrebbe impiegare qualche minuto.

    Quindi:

    [code]
    typedef struct
    {
    char Nome[30];
    char Cognome[30];
    char CodFiscale[16];
    char Via [30];
    char Citta[30];
    char Stato[30];
    char NCivico[5];
    int Cap;
    int TelefonoCasa;
    int Cellulare;
    char Email[30];
    int TelefonoUfficio;
    } Persona;
    [code]


    Giovanni
    ---
    http://www.y2ksw.com/vbulletin
  • Re: Esame di ingegneria informatica aiuto grazie mille

    Quindi se volessi accedere a persona posso scrivere pers[1]'ma il programma così è terminato... non manca nulla!!!!!
    ma tu che uni hai fatto che sei così bravo?


    p.s: scusa ma non è che sono molto capace ho appena cominciato... circa 1 mese!!!!!!11

    Eleonora
  • Re: Esame di ingegneria informatica aiuto grazie mille

    Non usare ora gli array Pers1.x, Pers2.x va benissimo come primo approccio. Ti vuoi confondere già ora?

    Persona PersSistemaSolare[Terra][Europa][Italia][Toscana][Firenze][Centro][Stazione][Biglietteria][Sportelli];

    Ecco un array a molte dimensioni, per arrivare a una sola persona

    Non è 100% corretta come sintassi, ma l'idea rende...

    Sono programmatore da più di 25 anni e faccio anche insegnante, occasionalmente, più che altro per sostituire il personale in malattia. Sostituisco chiunque senza preparazione, e le mie classi sono sempre molto affollate, tranne per la prima ora, dove mancano ancora due terzi. Insegno le cose complicate come se fossero delle cose molto semplici, con esempi che non hanno nulla da fare con il PC. Non c'è nulla di meglio che il "Uova-Computer". E' fatto da tante scatole di uova, e ogni scatola è un Byte a 6 o 12 bit. Una volta che si ha capito cosa è un Byte, e cosa sa fare, non c'è bisogno di spiegare altro, il ricordo dell'assurda frittata è sufficiente, anche per sostenere esami di un certo livello.

    E così vale, naturalmente, anche per i programmi e linguaggi. Il C/C++ è molto vicino all'uovo, ma più che altro è la gallina, che le fa. Noi programmatori diamo il mangime, e raccogliamo le uova in un certo modo. Se non raccogliamo nulla, le uova cadono in terra e sono perse. Se il mangime non è buono, le uova non escono. Tutto lì

    Giovanni
    ---
    http://www.y2ksw.com/vbulletin
  • Re: Esame di ingegneria informatica aiuto grazie mille

    Bello.... io studio ingegneria informatica e sono al primo anno!!!!!!!!!
    e il prof è bravo ma non ci ha mai fatto fare a noi qlc... solo teoria... la teoria la ho capita ma poi metterla in pratica non è così semplice... allora il mio programma è finito così!!!! cmq gli array gli abbiamo fatti.. ma usa sempre il dot il prof

    Eleonora
  • Re: Esame di ingegneria informatica aiuto grazie mille

    Beh' allora possiamo anche dire:

    <pre id=code><font face=courier size= id=code>
    Persona Pers[4];
    int i;

    for(i = 0; i < 4; i++)
    {
    printf("abc\n");
    scanf("%s", &Pers[i].Nome;
    //...
    }
    </font id=code></pre id=code>
    oppure:
    <pre id=code><font face=courier size= id=code>
    Persona Pers[4];
    int i;

    i = 4;
    while(i)
    {
    i--;
    printf("abc\n");
    scanf("%s", &Pers[i].Nome;
    //...
    }
    </font id=code></pre id=code>

    Credo che il primo anno da studente è il più bello. Seguono poi due o tre molto noiose, con intervalli di grande difficoltà. Si esce senza sapere nulla, in pratica. Tranne se hai un PC e un ambiente di sviluppo a casa.

    Uno freeware ed ottimo trovi a:

    http://www.bloodshed.net/devcpp.htm

    Con questo riesci a fare quasi tutto, tranne dei componenti, che richiedono assembly integrato (sempre possibile anche questo, ma troppo difficile perfino per professionisti).

    Giovanni
    ---
    http://www.y2ksw.com/vbulletin
  • Re: Esame di ingegneria informatica aiuto grazie mille

    Non ho mica capito cosa hai scritto in i e poi a cosa serve i++= i+1 giusto e allora?


    Eleonora
  • Re: Esame di ingegneria informatica aiuto grazie mille

    Io ed eleonora utilizziamo devcpp come compilatore....
  • Re: Esame di ingegneria informatica aiuto grazie mille

    Per salvare i dati devo usare i files giusto...oggi li facciamo... ma dopo devo cambiare tutto da capo... secondo te è abbastanza buono come programma o è troppo semplice... no perchèun mio collega di corso fa la stessa cosa ma con un sacco di puntatori e istruzioni strane che nemmeno abbiamo usato... io vorrei prendere un bel voto!!!!

    grazie mille!!!!!

    Eleonora
  • Re: Esame di ingegneria informatica aiuto grazie mille

    Ciao,
    lo ho cambiato... dimmi se è giusto per piacere.

    #include <stdio.h>
    #include <sting.h>
    {
    typedef struct { char Via [30];
    char Citta[30];
    char Stato[30];
    char NCivico[5];
    int Cap;
    int TelefonoCasa;
    int Cellulare;
    char Email[30];
    int TelefonoUfficio;
    char Nome[30];
    char Cognome[30];
    char CodFiscale[16];
    } Persona;

    int Contatore, Nmax;

    int Nmax= 5;

    Persona x[Nmax];

    main ()

    ho tolto per 1, 2, 3, 4,
    e ho messo
    {printf ("inserisci numero massimo nomi\n");
    scanf (%d, &Nmax);
    Contatore=0;
    while( contatore < Nmax)

    printf ("inserisci Nome\n")
    scanf (%s", &persona [contatore].Nome )

    e uguale per tutti gli altri campi della struct!!!

    é guisto




    Eleonora
  • Re: Esame di ingegneria informatica aiuto grazie mille

    <pre id=code><font face=courier size= id=code>
    //...
    main ()
    {
    printf ("inserisci numero massimo nomi\n");
    scanf ("%d", &Nmax);
    Contatore = 0;
    while(Contatore < Nmax)
    {
    printf("Inserisci Nome\n");
    // 'Persona' è il tipo, 'x' sono le stutture da riempire, quindi usare 'x' !!!
    scanf("%s", &x[Contatore].Nome);
    //...
    Contatore++;
    }
    //...
    }
    </font id=code></pre id=code>

    Vedo che fai confusione fra la struttura e il contenuto della struttura.

    La struttura si chiama Persona. OK. &Persona non va bene, perché punti al nome e *non* alla locazione di memoria, invece scanf() richiede che punti alla memoria. Quindi devi puntare su 'x', &x.

    In C/C++, si dichiara una variabile in questo modo:

    TIPO NOME;
    TIPO NOME;
    TIPO NOME;

    Dove TIPO è 'int', 'signed', 'float' etc., e NOME è il nome che assegni alla variabile.

    TIPO si riferisce a un typedef nativo oppure personalizzato. I tipi nativi sono 'int', 'long', 'float', mentre quelli personalizzati sono 'UINT', 'Persona', 'ULONG'.

    Quindi, se ho dichiarato:

    int dwABC;

    e poi faccio:

    scanf("%d", &int);

    è lo *stesso errore* come fare:

    scanf("%s", &Persona.Nome);

    Invece, si deve fare:

    scanf("%d", &dwABC);

    e

    scanf("%s", &x.Nome);

    Seppoi, questa persona è un array, fai:

    scanf("%s", &x[n].Nome);

    Chiaro il concetto?

    Giovanni
    ---
    http://www.y2ksw.com/vbulletin
  • Re: Esame di ingegneria informatica aiuto grazie mille

    Chairissimo... altre due cosette!!!!
    se io dopo typedeft struct scivo

    int Contatore, Nmax;
    int Nmax=10


    devo poi metterlo dopo il main

    printf ("inserisci numero massimo nomi\n");
    scanf (%d, &Nmax);

    un'altra cosa, come faccio ad inserire un files che mi memorizzi tutto il programma!!!!!!!!!!!11111


    grazie mille!!!!!!!!!!!!!1111

    Eleonora
  • Re: Esame di ingegneria informatica aiuto grazie mille

    Volevo mettere anche dei commentini (al prof piacciono)ad esempio

    int Contatore, Nmax; /*definisco un tipo dato (Contatore e Nmax)di tipo intero*/

    int Nmax = 10; /*assegno a Nmax una valore*/
    Persona x[Nmax]; /*assegno a Persona un array di 10 elementi*/

    printf ("Inserisci Nome\n");
    scanf ("%s",&x[Contatore].Nome /*assegno a NOme, l'idirizzo di x[Contatore] e a x l'indirizzo di Contatore*/

    sono giusti?


    grazie


    Eleonora
Devi accedere o registrarti per scrivere nel forum
36 risposte