Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    9

    Problema coda FIFO [c++]

    Ciao ragazzi!
    Mi sto preparando per un esame e, facendo un vecchio esercizio, non riesco proprio a risolvere il problema segnalatomi dal c!

    Il problema riguarda questa funzione:

    void Put(CodaPtr c, Persona p)
    {
    if (!(StackIsFull(c)))
    {
    c->Data[c->n]= p;
    (c->n)++;
    }
    else
    { printf("Stack pieno, non inserito." );}
    }

    Con typedef struct Persona{
    int IDPersona;
    ora OraArrivo;
    int Importo;
    TipoOperazione Operazione;
    e typedef struct CodaProcessi{
    int n;
    int dim;
    int head;
    int tail;
    Persona* Data[];
    typedef struct CodaProcessi Coda;
    typedef struct CodaProcessi* CodaPtr;

    Sapete darmi qualche dritta??? Lerrore me lo da su " c->Data[c->n]= p;" e mi dice: "cannot convert `Persona' to `Persona*' in assignment"

  2. #2
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Nella struttura hai:
    codice:
    Persona* Data[];
    Che è un puntatore a puntatore, l' equivalente di Persona **Data;
    Quando chiami:
    codice:
    c->Data[c->n]= p;
    c->Data è un puntatore a puntatore a Persona, c->Data[c->n] è un puntatore a Persona,ma p non è un puntatore a Persona, devi fare:
    codice:
    *(c->Data[c->n])=p;
    Puoi farlo anche senza parentesi ma non mi ricordo la precedenza degli operatori.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    9
    Grazie mille!! Ci stavo lavorando da un bel pò!!

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    9
    Originariamente inviato da ramy89
    Nella struttura hai:
    codice:
    Persona* Data[];
    Che è un puntatore a puntatore, l' equivalente di Persona **Data;
    Quando chiami:
    codice:
    c->Data[c->n]= p;
    c->Data è un puntatore a puntatore a Persona, c->Data[c->n] è un puntatore a Persona,ma p non è un puntatore a Persona, devi fare:
    codice:
    *(c->Data[c->n])=p;
    Puoi farlo anche senza parentesi ma non mi ricordo la precedenza degli operatori.
    Se ti invio il progetto, riesci a capire perché non mi carica valori nella coda?!?

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.