Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    17

    [C] aiuto con liste dinamice di strinche

    allora ragazzi ho un piccolo problema con le liste, perche non capisco bene come funzionano, tra qualche giorno ho l'esame e sto diventando nervoso
    il programma dovrebbe inserire delle stringhe in una lista(il codice non l'ho completato anche perche gia mi dava un sacco di errori compilando)
    qualcuno mi puo dare una mano

    codice:
    #include <stdlib.h>
    #include <stdio.h>
    
    struct entry
    {
    char value[80];
    struct entry *next;
    };
    struct lista *crea(int n)
    { 
    struct entry *lista_start, *lista_record;
    struct entry *start;
    if(n=0)
    {
    printf("inserisci il prima stringa\n");
    start=(struct entry*)malloc(sizeof(struct entry));
    gets(start->value);
    start->next=NULL;
    lista_start=start;
    }
    else
    {
    printf("inserisci nuova stringa\n");
    lista_record = (struct entry *) malloc (sizeof (struct entry));
    gets(lista_record->value);
    
    
    while ( lista_start->next!= NULL)
    {
    lista_start = lista_start->next;
    }
    
    
    if (lista_record->next != NULL)
    {
    
    
    lista_record->next = NULL;
    lista_start->next=lista_record;
    }
    
    getchar();
    return lista_start;
    }
    }
    int main ()
    {
    struct lista *scorri;int m=0;
    printf("MENU:\n"
    "1-inserire\n"
    "2-stampare\n"
    "3-uscire\n");
    int rsp;
    scanf("%d", &rsp);
    while(rsp!=3)
    {
    
    
    if(rsp=1)
    {
    scorri=crea(m);
    m++;
    }
    printf("MENU:\n"
    "1-inserire\n"
    "2-stampare\n"
    "3-uscire\n");
    
    scanf("%d", &rsp);
    }
    
    
    }

  2. #2
    Che errori dà?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    17
    [Warning] return from incompatible pointer type [enabled by default]

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Cosa è

    struct lista

    ?

    Non esiste nel tuo codice
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    17
    scusate, ma ho piu volte modificato il testo che mi sono confuso con i nomi
    la struct lista è uguale a struct entry(comunque non funziona ugualmente)

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    rsp=1

    nella if deve essere

    rsp==1
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    17
    allora nel compilare non mi da piu errori, pero appena eseguo e digito 1 per inserire la stringa mi da errore

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non puoi essere più preciso di "mi dà errore"?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Devi correggere anche questo

    if(n==0)

    Occhio a tutte le if ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    17
    codice:
    #include <stdio.h>#include <stdlib.h>
    #define size 90
    struct lista
    {
        char stringa[size];
        struct lista *next;
    };
    struct lista *inserisci(struct lista* testa, char tmp[]);
    void stampa(struct lista *testa);
    void cerca(struct lista *testa, char icerca[]);
    
    
    main()
    {
        struct lista *testa=NULL;
        char tmp_stringa[size],icerca[size];
        int n;
        printf("MENU:\n1-inserisci\n2-stampa ed esci\n");
        scanf("%d", &n);
        do 
        {
            switch(n)
            {
                case 1:
                printf("inserisci\n");
                fflush(stdin);
                gets(tmp_stringa);
                testa=inserisci(testa,tmp_stringa);
                break;
                case 2:
                stampa(testa);break;
                default: printf("ERRORE\n");break;
                
            };
           printf("MENU:\n1-inserisci\n2-stampa ed esci\n");
        scanf("%d", &n); 
        }while(n!=2);
        do
        {
        printf("cosa vuoi cercare?\n");
        scanf("%s", icerca);
        cerca(testa,icerca);
        printf("vuoi continuare(si=1/no=0)\n");
        scanf("%d", &n);
        }while(n==1);
        system("pause");
        
    }
    struct lista *inserisci(struct lista *testa, char tmp[])
    {
        struct lista *a,*b;
        a=(struct lista*)malloc(sizeof(struct lista));
        strcpy(a->stringa,tmp);
        a->next=NULL;
        
        if(testa==NULL)
        {
            return a;
        }
        for(b=testa;b->next!=NULL; b=b->next);
        b->next=a;
        return testa;
    }
    void stampa(struct lista *testa)
    {
        for(;testa!=NULL; testa=testa->next)
        {
            printf("%s\n", testa->stringa);
        }
    }
    void cerca(struct lista *testa, char icerca[])
    {
        
        for(;testa!=NULL; testa=testa->next)
        {
            if(strcmp(testa->stringa,icerca)==0)
            {
                printf("trovato\n");
            
            }
            
        }
        
    }
    ho corretto tutto... pero ho un problema adesso con la funzione stampa
    avevo provato ad inserire fflush(stdout), ma nnt, come posso risolvere?

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.