Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    15

    Debug Library C++ con Visual Studio Express 2010

    Il codice seguente dispone di un menu' con tre voci:

    1- carica pila
    2- elimina elemento della pila
    3- stampa intera pila.

    Una volta avviato il programma e scegliendo subito o la voce 2 o 3 SENZA aver caricato prima la pila, compare un cout con scritto che non esiste nessun elemento nella pila. Ed infatti è giusto così.

    Se scegliessi la voce 1 e dopo decidessi di stampare con la voce 3, funzionerebbe perfettamente.

    Se invece decidessi di richiamare la voce 2 DOPO aver caricato la pila, con il tipo di dato corretto ovviamente, ecco che compare questo messaggio di errore (mai incontrato prima):
    -----------
    Debug Library
    Debug Assertion Failed!
    expression: _BLOCK_TYPE_IS_VALID(pHeah->nBlockUse)
    -----------


    Chi è disposto ad aiutarmi compili questo codice, così può capire meglio
    Vi ringrazio!!!
    -------------------------------------------------------------------------
    CODICE:

    // Strutture_dinamiche.cpp : definisce il punto di ingresso dell'applicazione console.
    //
    //AUTORE:
    #include "stdafx.h"
    #include <iostream>
    #include <conio.h>

    struct nodo
    {
    int dato;
    nodo *punt;
    };

    //Elemento pila
    int n;
    //PROTOTIPI
    void push(nodo *&, int);
    void pop(nodo *);
    void stampa(nodo *);
    void carica(nodo * &);
    void elimina(nodo *);
    using namespace std;

    int _tmain(int argc, _TCHAR* argv[])
    {
    nodo *testa=NULL;
    short risp, decis;
    //Menu'
    do
    {
    cout<<"1 Caricamento pila \n2 Elimina un elemento \n3 Stampa pila \n "<<endl;
    cin>>risp;
    system("cls");
    switch(risp)
    {
    //allocazione di una o più celle
    case 1:
    carica(testa);
    break;
    //deallocazione di una o più celle
    case 2:
    if(testa==NULL)
    cout<<"Nessun elemento esistente. "<<endl;
    else
    elimina(testa);
    break;
    //stampa della struttura modificata
    case 3:
    if(testa==NULL)
    cout<<"Nessun elemento esistente. "<<endl;
    else
    stampa(testa);
    };
    cout<<"1 - Go on \n2 - End \n "<<endl;
    cin>>decis;
    system("cls");
    }while(decis==1);
    _getch();
    return 0;
    }

    //inserimento in testa PUSH (LIFO)
    void push(nodo *&testa, int n)
    {
    nodo *nuovo;
    nuovo = new nodo;
    nuovo -> dato = n;
    nuovo -> punt = testa;
    testa = nuovo;
    }
    void carica(nodo * & start)
    {
    char scelta;
    do{
    cout<<"Dato: ";
    cin>>n;
    push(start, n);
    cout<<"Continuare? (s/n): ";
    cin>>scelta;

    }while(scelta=='s');
    }

    //Cancellazione in testa POP (FIFO)
    void pop(nodo *testa)
    {
    nodo *p;
    p = testa;
    testa = testa -> punt;
    delete p;
    }
    void elimina(nodo *start)
    {
    char scelta2='s';
    while(scelta2=='s')
    {
    pop(start);
    cout<<"Continuare? (s/n): ";
    cin>>scelta2;
    }
    }
    //Stampa pila
    void stampa(nodo *testa)
    {
    nodo *p;
    p = testa;
    while(p!=NULL)
    {
    cout<<" "<<p -> dato<<endl;
    p = p -> punt;
    }
    }
    --------------------------------------------------------------------------------------

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ti domando ... perché hai usato questo header

    void push(nodo *&, int);

    per passare il puntatore alla testa nel push e quest'altro

    void pop(nodo *);

    per il pop ?

    P.S. DEVI usare i tag CODE e l'indentazione per proporre del codice nel forum ... altrimenti risulta illeggibile ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    15
    Lo so, sono totalmente inesperto in questo forum
    Non so come si faccia :\

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.