Ir ao conteúdo

Programação C, Fila circular


wesleyWWW

Posts recomendados

Postado

Alguém me ajuda nesse código:

#include <stdio.h>#include <stdlib.h>#define MAX 5int fila[MAX];int inicio = 0;int fim = 0;int armazena(int novo) { if ((fim > 0) && (fim == inicio)){	printf("Fila cheia\n");	return 0;}if ((fim == MAX) && inicio == 0) {	printf("Fila cheia\n");	return 0;}if ((fim == MAX) && (inicio > 0))	fim = 0;fila[fim] = novo; fim++;}int remover() {int opcao;while(1){printf("1 - para remover\n");scanf(" %d", &opcao);	switch (opcao)        {	case 1:if (inicio == MAX)	inicio = 0;if ((inicio == 0) && (inicio == fim)) {	printf("Fila vazia.\n");	return 0;}inicio++;return fila[inicio-1];}	break;}}int mostra(){int i;if (inicio < fim){	for(i=inicio; i<fim; i++){		printf("fila[%d] = %d\n", i, fila[i]);	}printf("\n\n");}else{if (inicio == fim){	for(i=0; i<inicio; i++){		printf("fila[%d] = %d\n", i, fila[i]);	}	for(i=inicio; i<MAX; i++){		printf("fila[%d] = %d\n", i, fila[i]);	}printf("\n\n");}}return 0;}int main(){int num = 0;armazena(41);armazena(80);armazena(12);armazena(18);armazena(27);mostra();num = remover();printf("item removido da fila = %d\n", num);mostra();num = remover();printf("item removido da fila = %d\n", num);mostra();num = remover();printf("item removido da fila = %d\n", num);mostra();num = remover();printf("item removido da fila = %d\n", num);mostra();num = remover();printf("item removido da fila = %d\n", num);mostra();}



Nesse código ta armazenando alguns números na fila, mas se eu quiser armazenar nomes no lugar dos número, o que preciso mudar nesse código ???

E qual condição posso usar pra testar se algo ainda ta na fila ou se já saiu ???

Postado

Se pra armazenar números você usou uma array de "int", pra armazenar strings você usa um array de "char*".

Pra testar se algo ainda tá na "fila" é só percorrer ela e comparar os valores. Com inteiros é só usar "==", com nomes você usa a função strcmp().

Postado

Mas onde exatamente tenho q trocar int por char ???

e tipo, ali na parte: armazena(41);
Pra armazena um número foi só botar o número dentro dos parênteses, mas só for um nome, como faz dai ? tem q botar entre aspas ? tipo armazena("nome"); Ou é de outro jeito ?

Postado

No C, um nome é um array do tipo char, que é o mesmo que um "char*".

Então pra passar o nome pra função você usa:

armazena("maria");

 

E pra receber ele na função você usa:

int armazena(char* nome) { ... }

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...