Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    12

    [C] Help pezzo di codice

    Ragazzi mi potete aiutare in questo programmino???
    Crea una lista di interi, la visualizza oppure cancella un elemento
    Il problema è che quando vado a cancellare un elemento della lista, o mi esce dal programma all'improvviso oppure scrive zero.... Cosa c è di sbagliato??

    #include<stdio.h>
    #include<stdlib.h>

    typedef struct type_nodo{
    int num;
    struct type_nodo *prox;
    };
    type_nodo *crea_lista();
    void leggi_lista(type_nodo *);
    int elimina_elemento(type_nodo *);

    /*************************main********************* ****/
    main(){
    type_nodo *testa=NULL;
    int scelta=0;
    int elemento=0;
    while(1){
    printf("\n1 - Crea lista");
    printf("\n2 - Visualizza lista");
    printf("\n3 - Elimina elemento\n\n");
    scanf("%d",&scelta);
    switch(scelta){
    case 1:
    system("CLS");
    testa=crea_lista();
    break;
    case 2:
    system("CLS");
    leggi_lista(testa);
    break;
    case 3:
    elimina_elemento(testa);
    break;
    default:
    printf("\nScelta non valida");
    break;
    }

    system("PAUSE");
    system("CLS");
    }

    }

    /************************Crea lista****************************/
    type_nodo *crea_lista(){

    type_nodo *testa=NULL;
    type_nodo *paus=NULL;
    int scelta=0,i=0;

    printf("\tCreazione lista\n\n");
    printf("\nQuanti elementi vuoi inserire? ");
    scanf("%d",&scelta);

    testa=(type_nodo *)malloc(sizeof(type_nodo));
    if(testa==NULL){
    printf("\nMemoria esaurita");
    return testa;
    }
    if(scelta==0){
    printf("\nLista non creata");
    return testa;
    }
    printf("Inserisci il 1 elemento ");
    scanf("%d",&testa->num);
    testa->prox=NULL;
    if(scelta==1) return testa;
    paus=testa;
    for(i=2;i<=scelta;i++){
    paus->prox=(type_nodo *)malloc(sizeof(type_nodo));
    paus=paus->prox;
    printf("Inserisci il %d elemento ",i);
    scanf("%d",&paus->num);
    paus->prox=NULL;
    }
    return testa;
    }

    /*********************visualizza lista***********************/
    void leggi_lista(type_nodo *testa){

    if(testa==NULL) printf("\nLa lista è vuota");

    type_nodo *paus=NULL;
    paus=testa;
    printf("\n");
    while(paus!=NULL){
    printf("%d\t",paus->num);
    paus=paus->prox;
    }
    printf("\n\n");
    }

    /******************elimina elemento**************************/
    int elimina_elemento(type_nodo *testa){


    int elemento=0;
    if(testa==NULL){
    printf("La lista e' vuota\n\n");
    return 0;
    }
    leggi_lista(testa);
    printf("Quale elemento vuoi eliminare? ");
    scanf("%d",&elemento);

    type_nodo *paus=NULL;

    paus=testa;

    if(paus->num==elemento){
    testa=testa->prox;
    free(paus);
    printf("%d",testa->num);
    }
    else{
    while(paus->prox->num!=elemento){
    paus=paus->prox;
    if(paus=NULL){
    printf("Elemento non trovato");
    return 0;
    }
    }
    type_nodo *pfree=NULL;
    pfree=paus->prox;
    paus->prox=paus->prox->prox;
    free(pfree);
    }
    }

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

    Moderazione

    Usa titolo più significativi per le discussioni, che diano un'idea del problema o del contenuto.
    Questo l'ho modificato io.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    12
    Scusate..

  4. #4

  5. #5
    Quoto menphisx
    Originariamente inviato da menphisx
    identazione
    Leggere codice, anche breve, non correttamente indentato
    è difficile anche per chi lo ha scritto, figuriamoci per gli altri.

    In ogni caso uno degli errori (sospetto che ne siano degli altri) è questo :
    codice:
    			paus=paus->prox;
    			if(paus=NULL) // <<<--- "Possibly incorrect assignment in function elimina_elemento"
    			{
    				printf("Elemento non trovato");
    				return 0;
    			}
    In cui hai digitato un solo = invece di due ==.
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

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.