Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C++] errore in fase di compilazione

    Salve a tutti, vi espongo il mio codice e di seguito l'errore in fase di compilazione
    cdt l'ambiente è il C++

    #include <iostream>
    using namespace std;

    class Pila
    {
    //attributi
    static const int MAX=10; //dimensione dell'array
    int testa; //testa della pila
    int vett[MAX]; //array della pila

    public:
    //metodi
    Pila(){
    testa = MAX;
    }

    int pop(); //estrazione di un elemento
    void push(int val); //inserimento di un elementi
    int top(); //legge elemento di testa
    bool full(); //verifica pila piena
    bool empty(); //verifica pila vuota
    int get_num(); //restituisce numero elementi nella pila

    //funzioni in più
    void clearPila();
    void menu();
    };

    int Pila:op(){

    if(testa==MAX)
    cout << "La pila è vuota. Impossibile estrarre un dato" << endl;
    else{
    cout << "Elemento estratto = " << vett[testa] << endl;
    testa++;
    }
    }

    void Pila:ush(int val){
    int dato;

    if(testa==0){
    cout << "La pila è piena. Impossibile inserire dati" << endl;
    }else{
    cout << "dato da inserire = ";
    cin >> dato;
    testa--;
    vett[testa]=dato;
    }
    }

    int Pila::top(){
    cout << vett[testa];
    }


    void Pila::clearPila(){
    testa=MAX;
    cout << "Pila svuotata" << endl;
    }

    int Pila::get_num(){
    for(int i=testa; i<MAX; i++){
    cout << vett[i] << endl;
    }
    }

    void Pila::menu(){
    cout << endl;
    cout << "1. Pulisci pila" << endl;
    cout << "2. Estrai un dato" << endl;
    cout << "3. Aggiungi un dato" << endl;
    cout << "4. Conta elementi pila" << endl;
    cout << "5. Fine" << endl;
    }


    int main()
    {
    Pila stack;
    int scelta;

    stack.clearPila();

    do{
    stack.menu();
    cout << "Seleziona una voce";
    cin >> scelta;
    }while(scelta>0 || scelta<5);


    switch(scelta){
    case 1:
    stack.clearPila();
    break;
    case 2:
    stack.pop();
    break;
    case 3:
    stack.push(int val);
    break;
    case 4:
    stack.get_num();
    break;
    case 5:
    break;
    }while(scelta!=5);



    return 0;
    }

    100: error: expected primary-expression before ‘int’

    questo è l'errore segnalato dal compilatore alla linea 100, ovvero nello switch-case, al "case 3" in corrispondenza della chiamata di stack.push(int val);

    grazie mille per un eventuale aiuto

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    codice:
    case 3:
    stack.push(int val);
    break;
    non puoi dichiarare una variabile nella lista dei parametri di una funzione... devi necessariamente dichiararla prima.

    Comunque fai attenzione che a parte questo ci sono diversi metodi della classe che dovrebbero restituire un valore int ma che invece non restituiscono nulla...

    codice:
    pila.cpp: In member function 'int Pila::get_num()':
    pila.cpp:68: warning: control reaches end of non-void function
    pila.cpp: In member function 'int Pila::top()':
    pila.cpp:54: warning: control reaches end of non-void function
    pila.cpp: In member function 'int Pila::pop()':
    pila.cpp:35: warning: control reaches end of non-void function
    Ah comunque come si dice sempre in questi casi... il codice va indentato usando i tag "code", altrimenti si perde l'indentazione e non si capisce una cinghia (è anche scritto nel regolamento)
    every day above ground is a good one

  3. #3
    si sorry hai ragione

    cmq ho risolto tutto, c'erano diversi erroretti anche logici, adesso funziona a meraviglia.

    ora mi tocca fare l'overloading di operatori e implementare la classe come template

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 © 2026 vBulletin Solutions, Inc. All rights reserved.