Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    19

    [C] stack: chiamata di funzione crea e push

    Ciao a tutti!!
    ho un problema con l'invocazioni delle funzioni crea e push:

    ho definito la struttura in questo modo:
    codice:
            typedef struct {
            int dim;
            int array[MAX];
            } TStack;
    la funzione crea è questa:
    codice:
         TStack Crea_Stack(){
          TStack pila;
          pila.dim=0;
          return pila;}
    la funzione push è questa
    codice:
       void Push(TStack *stack, int x){
         stack->array[stack->dim]=x;
         stack->dim++;}
    nel main:
    codice:
    TStack pila;
      TStack *stack;
    ma quando chiamo le funzioni, noto che per crea_lista serve una variabile di tipo TStack, mentre per la funzione push il parametro necessario è di tipo *TStack.
    facendo così
    codice:
      pila=Crea_Stack(); 
      printf("ELemento da inserire nella pila:");
      scanf("%d",&x);
      Push(stack,x);
    stack non è inizializzato o sbaglio?

  2. #2
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408
    Nel main hai

    TStack pila;

    e, sempre nel main, scrivi:

    push(&pila, x);

    e non dovresti avere problemi. Togli il

    TStack *stack;

    Prova questo codice per verifica.. dovrebbe funzionare

    codice:
    #include <stdio.h>
    #define MAX 100
    
    typedef struct{
        int dim;
        int array[MAX];
    } TStack;
    
    TStack Crea_Stack(){
        TStack pila;
        pila.dim=0;
        return pila;
    }
    
    void Push(TStack *stack, int x){
        stack->array[stack->dim]=x;
        stack->dim++;
    }
    
    int main(){
        TStack pila;
        int x, i, n;
    
        pila=Crea_Stack();
    
        printf("Quanti elementi vuoi inserire? ");
        scanf("%d", &n);
    
        for(i=0; i<n; i++){
            printf("ELemento da inserire nella pila:");
            scanf("%d",&x);
            Push(&pila, x);
        }
    
        for(i=0; i<pila.dim; i++){
            printf("%d ", pila.array[i]);
        }
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    19
    grazie 1000 funziona a meraviglia!!!
    ma praticamente il valore pila.dim dipende dal numero di elementi che decido di inserire?

  4. #4
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408
    Originariamente inviato da Oo.T.oO
    grazie 1000 funziona a meraviglia!!!
    ma praticamente il valore pila.dim dipende dal numero di elementi che decido di inserire?
    pila.dim inizialmente è a 0. Poi aggiungi un tot di elementi e ad ogni aggiunta dim si incrementa di 1, quindi nel for della stampa pila.dim sarà il numero di elementi che hai inserito. E' la dimensione

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    19
    perfetto grazie ancora

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.