Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Gestione pila in C

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2015
    Messaggi
    25

    Gestione pila in C

    salve avrei bisogno di una mano a capire questo codice di gestione di una pila in C.
    Ciò che non capisco è come sono messi i puntatori nelle funzioni..tipo "punt_testa" nella funzione inserisci è preceduto da "&", mentre in visualizza no..
    insomma mi servirebbe una spiegazione sui riferimenti dei vari puntatori.

    codice:
    #include <stdio.h>
    #define PROF_PILA 5
    void inserisci(int*,int,int*);
    void estrai(int*,int*,int*);
    void visualizza(int*,int);
    void main()
    {
        int pila[PROF_PILA];
        int ele, scelta=-1, punt_testa=0;
        do
        {
            printf("\n1. Inserisci elemento\n");
            printf("2. Estrai elemento\n");
            printf("3. Visualizza pila\n");
            printf("0. Esci\n");
            scanf("%d",&scelta);
            switch (scelta)
            {
            case 1:
                if(punt_testa>=PROF_PILA)
                    printf("pila piena\n");
                else
                {
                    printf("elemento da inserire = ");
                    scanf("%d",&ele);
                    inserisci(pila,ele,&punt_testa);
                }
                break;
            case 2:
                if(punt_testa==0)
                    printf("pila vuota\n");
                else
                {
                    estrai(pila,&ele,&punt_testa);
                    printf("elemento estratto: %3d\n",ele);
                }
                break;
            case 3:
                if(punt_testa==0)
                    printf("pila vuota\n");
                else
                    visualizza(pila,punt_testa);
                break;
            default:
                printf("non ci sono altre operazioni
                       definite su una pila\n");
                break;
            }
        }
        while(scelta!=0);
    }
    void inserisci(int*a,int b,int*c)
    {
        a[*c]=b;
        *c=*c+1;
    }
    void estrai(int*a,int*b,int*c)
    {
        *c=*c-1;
        *b=a[*c];
    }
    void visualizza(int*a,int c)
    {
        int i=c-1;
        printf("testa della pila --> ");
        for(; i>=0; i=i--)
            printf("%3d",a[i]);
    }
    Ultima modifica di MItaly; 24-11-2015 a 22:32 Motivo: Aggiunti tag CODE, fix indentazione

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Semplicemente perché nella visualizza il valore di punt_testa deve essere solo utilizzato ma non modificato, al contrario di inserisci che deve poter modificare quella variabile e lo può fare solo se conosce il puntatore.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2015
    Messaggi
    25
    ok grazie come codice pensi vada bene o riesci a propormi una versione migliore per la gestione della pila?

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2015
    Messaggi
    25
    Scusate ragazzi ma compilando il codice mi da un sacco di errori..mi aiutereste a capire cosa non va?

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Quote Originariamente inviata da robz14 Visualizza il messaggio
    Scusate ragazzi ma compilando il codice mi da un sacco di errori..mi aiutereste a capire cosa non va?
    Di quali errori parli?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.