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

    scanf("%s",&a[n].Nome); mi dice che la variabile a nn è dich. ma io lo fat nel struc

    spero che il titolo sia chiaro e grazie a alka per avervi detto come fare il post.

    codice:
    #include <stdio.h> 
    #include <iostream>
    #include <malloc.h> 
    #include <string.h>  
    typedef struct {
         char Nome[15];      //nome del contatto
         char Cognome[15];   //cognome del contatto
         char Numeroditelefono [20];   //numero di telefono
         char Indirizzopaginaweb [50]; //indirizzo di pagina web
         char Indirizzoemail [50];    //indirizzo email 
    } contatto;            //struttura dell'agenda   
    
    struct record;//struttura con la variabile record  
    
    typedef record * L;//la variabile punta a L  
    
    typedef struct record{//struttura della variabile record
              contatto a[];
             L next; 
    } record;    
    void push (L c,contatto elem){
          L b;
          L k;
          int n=0;
          b=(L) malloc(sizeof(record));
          b->next=c;
          strcpy(b->a.Cognome,k);
          }                    
    
    void insert(L c,contatto elem[]){
          int s=50;
          int d=0;
          int n=0;
          while ((c!=NULL)&&(!d==0)){
          if(elem>c->a)  c=c->next;
          if(elem<=c->a) d=1;
          }
          if(d==1)push(c,elem[n]);
           for(n=0;n<s;n++){
          printf("\nnome \n");
          scanf("%s",&a[n].Nome);
          strcpy(a[n].Nome,elem[n].Nome);
          printf("\n._._._._._._._._._._._._.\n");
           printf("\ncognome \n");
          scanf("%s",&a[n].Cognome);
          strcpy(a[n].Cognome,elem[n].Cognome);
          printf("\n._._._._._._._._._._._._.\n");
           printf("\nnumero di telefono \n"); 
         scanf("%s",&a[n]Numeroditelefono);         strcpy(a[n]Numeroditelefono,elem[n].Numeroditelefono);      printf("\n._._._._._._._._._._._._.\n");
           printf("\nindirizzo pagina web \n");
          scanf("%s",&a[n].Indirizzopaginaweb);      strcpy(a[n].Indirizzopaginaweb,elem[n].Indirizzopaginaweb);      printf("\n._._._._._._._._._._._._.\n");
           printf("\nindirizzo email \n");
          scanf("%s",&a[n].Indirizzoemail);      strcpy(a[n].Indirizzoemail,elem[n].Indirizzoemail);      printf("\n._._._._._._._._._._._._.\n");
           printf("\n^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^\n");
          }}                   
    void ordina(L c,contatto elem[]){
          int n=0;
          char f[50];
          int s=50;
          while(n<s){
          if(strcmp(elem[n].Cognome,elem[n+1].Cognome)>0){
    
                 //scambia Cognomi 
          strcpy(f,elem[n].Cognome);
                 strcpy(elem[n].Cognome, elem[n+1].Cognome);
                 strcpy(elem[n+1].Cognome, f);
    
                              //Scambia Nomi
                 strcpy(f, elem[n].Nome);
                 strcpy(elem[n].Nome, elem[n+1].Nome);
                 strcpy(elem[n+1].Nome, f);
    
                              //Scambia numeri di telefono
                 strcpy(f, elem[n].Numeroditelefono);
                 strcpy(elem[n].Numeroditelefono, elem[n+1].Numeroditelefono);
                 strcpy(elem[n+1].Numeroditelefono,f);
       
                           //Scambia indirizzo di pagina web
                 strcpy(f, elem[n].Indirizzopaginaweb);
                 strcpy(elem[n].Indirizzopaginaweb, elem[n+1].Indirizzopaginaweb);
                 strcpy(elem[n+1].Indirizzopaginaweb,f);
    
                              //Scambia indirizzo email
                 strcpy(f, elem[n].Indirizzoemail);
                 strcpy(elem[n].Indirizzoemail, elem[n+1].Indirizzoemail);
                 strcpy(elem[n+1].Indirizzoemail, f);
          }}}
    
    void stampa(L c,contatto elem[]){
          int n=0;
          int s=50;
          for(n=0;s<50;n++){
          printf("%s\n%s\n%s\n%s\n%s\n",elem[n].Nome,elem[n].Cognome,elem[n].Numeroditelefono,elem[n].Indirizzopaginaweb,elem[n].Indirizzoemail);
          } }
    
    void leggi(L c,contatto elem[]){
          int n=0;
          int s=50;
          char p[100];
          printf("dammi il cognome che stai cercando");
          scanf("%s",&p);
          for(n=0;n<s;n++){
          if(p==elem[n].Cognome){
          stampa(c,elem);
          }else{
          printf("ERRORE: nessun elemento corrisponde a quello che stai cercando");      }}}                                        
    void Cancella(L c,contatto elem){
      L b=c,tmpPunt2;
     while(b!=NULL) {
     tmpPunt2=b->next;
     free(b);
     b=tmpPunt2;
     }
     free(tmpPunt2);
     }                                       
    int main (){
             L a;
         int n=0;
         int s=50;
         int q=0,Scelta;
              //scelta del menu     
    int z=0,scelta;
              ////////////Menu/////////// 
        do     {
             printf("1. Inserisci nuovo contatto \n");
             printf("2. Visualizza lista contatti \n");
             printf("3. immetti il numero del contatto che stai cercando \n");
             printf("4. elimina contatto \n");
             printf("5. elimina tutta la rubrica \n");
             printf("6. Esci \n");
             scanf("%d",&Scelta);
             system("CLS");
             switch(Scelta)         {
                 case 1:
                         insert(c,elem);
                         ordina(c,elem);
                         break;
                 case 2:
                         stampa(c,elem);
                         break;
                 case 3:
                         printf("Inserisci il nome del contenuto da cui vuoi leggere:
     \n");
                         scanf("%s",elem[n].Cognome);
                         leggi(c,elem);
                         break;
                 case 4:
                         do                     {
                         printf("1. elimina il primo contatto \n");
                         printf("2. elimina un contatto qualunque della lista
     \n");
                                            printf("3. elimina un contatto in coda \n");
                         printf("4. Esci \n");
                         scanf("%d",&scelta);
                         system("CLS");
                           switch(scelta){
                                        case 1:
                                                 printf("1. elimina il primo contatto \n");
                                                 break;
                                        case 2:
                                                 printf("1. elimina il primo contatto \n");
                                                 break;
                                        case 3:
                                                 printf("1. elimina il primo contatto\n");
                                                 break;
                          }
                         system("PAUSE");
                         system("CLS");
                        }while(Scelta!=4);
                          break;
                 case 5:
                        printf("1. elimina il primo contatto \n");
                        Cancella(c,elem);
                        break;
                      }
             system("PAUSE");
             system("CLS");
         }while(Scelta!=6);
                  return 0;
     }




    allora ripeto quello detto prima
    in questo programma mi da un errore che non riesco a capire nella stringa
    scanf("%s",&a[n].Nome);
    il compilatore mi segnala che la variabile a non e dichiarata ma io lo dichiarata nella struttura

    quindi se qualcuno puo aiutarmi e spiegarmi perchè mi da questo problema mi farebbe un grande piacere
    grazie per le vostre risposte in anticipo
    e scusatemi se vi sto causando troppi problemi

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Lasciando da parte il codice, scritto veramente male e abbastanza incomprensibile: la tua struttura "a" è dichiarata sì, ma all'interno di "record" (così pare) e quindi non è visibile dal punto in cui stai cercando di usarlo.

    Inoltre stai acquisendo una stringa, l'operatore & pertanto non va messo.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    ok grazie per il tuo aiuto

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296

    Moderazione

    Originariamente inviato da nicone 91
    spero che il titolo sia chiaro
    No, è decisamente illeggibile. L'ho modificato io per darti un esempio.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    ok grazie

    cmq grazie a voi ho corretti gli errori di compilazione anche se mi trovo un errore nell'esecuzione del programma che non mi aspettavo

    infatti il programma si ferma qui

    codice:
         strcpy(a[n].Numeroditelefono,elem[n].Numeroditelefono);

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da nicone 91

    infatti il programma si ferma qui

    codice:
         strcpy(a[n].Numeroditelefono,elem[n].Numeroditelefono);
    "I l programma si ferma qui" è un po' vago, spiegati meglio... Si blocca? Crasha? Altro?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  7. #7
    si blocca mi da un errore e poi la finestra schell si chiude

  8. #8
    ehi alex se puo aiutarti adesso ti invio il file sorgente corretto cosi forse ti sara piu facile

    codice:
    #include <stdio.h>
    #include <iostream>
    #include <malloc.h>
    #include <string.h>
    
    typedef struct
    {
        char Nome[15];      //nome del contatto    
        char Cognome[15];   //cognome del contatto
        char Numeroditelefono [20];   //numero di telefono
        char Indirizzopaginaweb [50]; //indirizzo di pagina web
        char Indirizzoemail [50];    //indirizzo email
    } contatto;            //struttura dell'agenda
    
    
    struct record;//struttura con la variabile record
    
    typedef record * L;//la variabile punta a L
    
    typedef struct record{//struttura della variabile record 
            contatto a[];
            L next;
    } record;
    
    
    
    void push (L c,contatto elem[]){
         L b;
         L k;
         int n=0;
    
         b=(L) malloc(sizeof(record));
         b->next=c;
         strcpy(b->a[n].Cognome,elem[n].Cognome);
         } 
         
         
         
    void insert(L c,contatto elem[]){
         int s=50;
         int d=0;
         int n=0;    
         contatto a[n];
         while ((c!=NULL)&&(!d==0)){
         if(elem>c->a)  c=c->next;
         if(elem<=c->a) d=1;
         }
         if(d==1)push(c,elem);
    
         for(n=0;n<s;n++){
         
         printf("nome \n");
         scanf("%s",a[n].Nome);
         strcmp(a[n].Nome,elem[n].Nome);
    
         printf("\ncognome \n");
         scanf("%s",a[n].Cognome);
         strcmp(a[n].Cognome,elem[n].Cognome);
    
         printf("\nnumero di telefono \n");
         scanf("%s",a[n].Numeroditelefono);
         strcpy(a[n].Numeroditelefono,elem[n].Numeroditelefono);
    
         printf("\nindirizzo pagina web \n");
         scanf("%s",a[n].Indirizzopaginaweb);
         strcmp(a[n].Indirizzopaginaweb,elem[n].Indirizzopaginaweb);
         
         printf("\nindirizzo email \n");
         scanf("%s",a[n].Indirizzoemail);
         strcmp(a[n].Indirizzoemail,elem[n].Indirizzoemail);
    }}
         
         
         
    void ordina(L c,contatto elem[]){
         int n=0;
         char f[50];
         int s=50;
         while(n<s){
         if(strcmp(elem[n].Cognome,elem[n+1].Cognome)>0){
                //scambia Cognomi                        
                strcpy(f,elem[n].Cognome);
                strcpy(elem[n].Cognome, elem[n+1].Cognome);
                strcpy(elem[n+1].Cognome, f);
                
                //Scambia Nomi
                strcpy(f, elem[n].Nome);
                strcpy(elem[n].Nome, elem[n+1].Nome);
                strcpy(elem[n+1].Nome, f);
                
                //Scambia numeri di telefono
                strcpy(f, elem[n].Numeroditelefono);
                strcpy(elem[n].Numeroditelefono, elem[n+1].Numeroditelefono);
                strcpy(elem[n+1].Numeroditelefono,f);
                
                //Scambia indirizzo di pagina web
                strcpy(f, elem[n].Indirizzopaginaweb);
                strcpy(elem[n].Indirizzopaginaweb, elem[n+1].Indirizzopaginaweb);
                strcpy(elem[n+1].Indirizzopaginaweb,f);
                
                //Scambia indirizzo email
                strcpy(f, elem[n].Indirizzoemail);
                strcpy(elem[n].Indirizzoemail, elem[n+1].Indirizzoemail);
                strcpy(elem[n+1].Indirizzoemail, f);     
    }}}   
              
              
              
    void stampa(L c,contatto elem[]){
         int n=0;
         int s=50;
         for(n=0;s<50;n++){
         printf("%s\n%s\n%s\n%s\n%s\n",elem[n].Nome,elem[n].Cognome,elem[n].Numeroditelefono,elem[n].Indirizzopaginaweb,elem[n].Indirizzoemail);
         }
    }
    
                                 
                                    
    void leggi(L c,contatto elem[]){
         int n=0;
         int s=50;
         char p[100];
         printf("dammi il cognome che stai cercando\n");
         scanf("%s",&p);
         for(n=0;n<s;n++){
         if(p==elem[n].Cognome){
         stampa(c,elem);
         }else{
         printf("\nERRORE: nessun elemento corrisponde a quello che stai cercando\n\n");
         system("PAUSE");
         break;
         }}}
                
                
                
    void Cancella(L c,contatto elem[]){
    
    L b=c,tmpPunt2;
    while(b!=NULL) {
    tmpPunt2=b->next;
    free(b);
    b=tmpPunt2;
    }
    free(tmpPunt2);
    }           
    
                
                
    int main (){    
        L c;
        int n=0;
        int s=50;
        int q=0,Scelta;          //scelta del menu
        int z=0,scelta;
        contatto elem[n];
        ////////////Menu///////////
        do
        {
            printf("1. Inserisci nuovo contatto \n");
            printf("2. Visualizza lista contatti \n");
            printf("3. immetti il numero del contatto che stai cercando \n");
            printf("4. elimina contatto \n");
            printf("5. elimina tutta la rubrica \n");
            printf("6. Esci \n");
            scanf("%d",&Scelta);
            system("CLS");
            switch(Scelta)
            {
                case 1:
                        insert(c,elem);
                        ordina(c,elem);
                        break;
                case 2:
                        stampa(c,elem);
                        break;
                case 3:
                        leggi(c,elem);
                        break;
                case 4:
                        do
                        {
                        printf("1. elimina il primo contatto \n");
                        printf("2. elimina un contatto qualunque della lista \n");                   
                        printf("3. elimina un contatto in coda \n");
                        printf("4. Esci \n");
                        scanf("%d",&scelta);
                        system("CLS");  
                        switch(scelta){
                                       case 1:
                                                printf("1. elimina il primo contatto \n");
                                                
                                                break;
                                       case 2:
                                                printf("1. elimina il primo contatto \n");
                                                
                                                break;
                                       case 3:
                                                printf("1. elimina il primo contatto \n");
                                               
                                                break;
                         }
                        system("PAUSE");
                        system("CLS");
                       }while(Scelta!=4); 
                        break;
                case 5:
                       Cancella(c,elem);
                       break;
            
            }
            system("PAUSE");
            system("CLS");
        }while(Scelta!=6);    
        
        return 0;
    }


    questa e una legenda ti aiutera a capire le lettere a cosa corrispondono

    LEGENDA

    a= fa parte della struttura contatto ed è un elemento della rubrica


    b=puntatore


    c=primo elemento della lista linkata che punta agli elementi successivi


    L=struttura di tipo L ed è un puntatore della struttura record


    n=numero dell'array della struttura


    d=posizione trovata condizione per il giusto inserimento dei dati nella lista


    f=variabile per effettuare lo scambio degli elementi


    s=massimo di contatti possibili da inserire


    spero che adesso mi possiate spiegare qual'è il problema

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.