Fila em C++ (problema).

1. Fila em C++ (problema).

Hugo Sousa
goj1

(usa Debian)

Enviado em 11/04/2011 - 13:44h

Olá galera.

Fiz a fila abaixo, mas ela não insere, não retira e não imprime. Compila normalmente.

Na execução ocorre uma mensagem de falha de segmentação:

Segmentation fault

O fonte da fila:

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#define TAMANHO 10

class minhaFila{
private:
int inicioFila, fimFila, f[TAMANHO];

public:
void inicializaFila(){
for(int i=0; i<TAMANHO; i++){
f[i]=0;
}
inicioFila=fimFila=-1;
}

void insere(int elemento){
if(fimFila!=TAMANHO){
fimFila++;
f[fimFila]=elemento;
}
}

void retira(){
if(inicioFila!=fimFila){
int elementoRetirado;
inicioFila++;
elementoRetirado=f[inicioFila];
f[inicioFila]=0;
//return elementoRetirado;
//printf("O elemento retirado foi %d: ",&elementoRetirado);
}

else {printf("A fila está vazia!");}
}

void imprimeFila(){
for(int i=TAMANHO; i<=f[fimFila]; i--){
printf("%d\n",f[i]);
}
}
};

int main(){
minhaFila f1;
int insereElemento,op;

//f1.inicioFila();

printf("\n1- Inicializar fila \n2- Para inserir \n3- Para retirar \n4- Mostrar fila \n5- Sair\n\n");
scanf("%d",&op);

switch(op){
case 1:
f1.inicializaFila();
break;
case 2:
printf("Digite um número inteiro: ");
scanf("%u",&insereElemento);
f1.insere(insereElemento);
//return main();
break;
case 3:
f1.retira();
//return main();
break;
case 4:
f1.imprimeFila();
//return 0;
break;
}

system("PAUSE");
return 0;
}


  


2. Re: Fila em C++ (problema).

Ramon
RamonMedeiros

(usa Ubuntu)

Enviado em 11/04/2011 - 14:54h

Falhas de segmentação geralmente ocorrem por apontar para um espaço inexistente na memória (vulgo NullPointerException em Java).




3. Re: Fila em C++ (problema).

Elder Marco
eldermarco

(usa Fedora)

Enviado em 12/04/2011 - 00:02h

Exatamente o que o nosso amigo acima disse. Quanto vale fimFila, inicioFila quando as funções que o utilizam tentam testá-la pela primeira vez? Aparentemente, o erro pode estar aí, visto que não contém nada nessas variáveis logo de início.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts