Skip to content

Commit 3d25209

Browse files
committed
fix: corrigindo bug na função imprime e melhorando a main.c
1 parent 3c8f42e commit 3d25209

File tree

2 files changed

+66
-28
lines changed

2 files changed

+66
-28
lines changed

root/filas/filas_com_vetores/fila.c

Lines changed: 29 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,68 +4,74 @@
44

55
#define MAX 10
66

7-
struct fila {
7+
struct fila
8+
{
89
int inicio;
910
int fim;
1011
int numero_elementos;
1112
int dados[MAX];
1213
};
1314

14-
Fila* fila_cria(void) {
15-
Fila* f = (Fila*) malloc(sizeof(Fila));
15+
Fila *fila_cria(void)
16+
{
17+
Fila *f = (Fila *)malloc(sizeof(Fila));
1618
f->inicio = 0;
1719
f->fim = 0;
1820
f->numero_elementos = 0;
1921
return f;
2022
}
2123

22-
void fila_insere(Fila* f, int v) {
23-
if (fila_cheia(f)) {
24-
printf("Capacidade da fila estourou!");
24+
void fila_insere(Fila *f, int v)
25+
{
26+
if (fila_cheia(f))
27+
{
28+
printf("Capacidade da fila estourou!");
2529
exit(1); // aborta programa
2630
}
2731
f->dados[f->fim] = v;
2832
f->fim = incrementa(f->fim);
2933
f->numero_elementos++;
3034
}
3135

32-
int fila_remove(Fila* f) {
33-
if (fila_vazia(f)) {
34-
printf("Fila vazia!");
36+
int fila_remove(Fila *f)
37+
{
38+
if (fila_vazia(f))
39+
{
40+
printf("Fila vazia!");
3541
exit(1); // aborta programa
3642
}
3743

3844
int elemento = f->dados[f->inicio];
3945
f->inicio = incrementa(f->inicio);
4046
f->numero_elementos--;
4147
return elemento;
42-
}
48+
}
4349

44-
int fila_vazia(Fila* f) {
45-
return (f->inicio == f->numero_elementos);
50+
int fila_vazia(Fila *f)
51+
{
52+
return (f->numero_elementos == 0);
4653
}
4754

48-
int fila_cheia(Fila* f) {
55+
int fila_cheia(Fila *f)
56+
{
4957
return (f->numero_elementos == MAX);
5058
}
5159

52-
void fila_libera(Fila* f) {
60+
void fila_libera(Fila *f)
61+
{
5362
free(f);
5463
}
5564

56-
57-
58-
void fila_imprime(Fila* f) {
65+
void fila_imprime(Fila *f)
66+
{
5967
int i;
6068
printf("Fila: \" ");
61-
for (i =0; i<f->numero_elementos; i++)
62-
printf("%d ", f->dados[incrementa(i)]);
69+
for (i = 0; i < f->numero_elementos; i++)
70+
printf("%d ", f->dados[(f->inicio + i) % MAX]);
6371
printf("\"\n");
6472
}
6573

66-
int incrementa(int i) {
74+
int incrementa(int i)
75+
{
6776
return (i + 1) % MAX;
6877
}
69-
70-
71-

root/filas/filas_com_vetores/main.c

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,49 @@
11
#include "fila.c"
22

3-
int main(void){
4-
Fila* f = fila_cria();
3+
int main(void)
4+
{
5+
Fila *f = fila_cria();
6+
7+
printf("Inserindo 3 elementos (10, 20, 30) na fila:\n");
58
fila_insere(f, 10);
69
fila_insere(f, 20);
710
fila_insere(f, 30);
811
fila_imprime(f);
912

10-
13+
printf("Removendo um elemento da fila (esperado: 10):\n");
1114
fila_remove(f);
15+
fila_imprime(f);
16+
17+
printf("Inserindo 40 na fila:\n");
1218
fila_insere(f, 40);
1319
fila_imprime(f);
20+
21+
printf("Removendo todos os elementos:\n");
22+
fila_remove(f);
23+
fila_remove(f);
24+
fila_remove(f);
25+
fila_imprime(f);
26+
27+
printf("Tentando remover de uma fila vazia:\n");
28+
if (fila_vazia(f))
29+
printf("Fila está vazia.\n");
30+
else
31+
fila_remove(f);
32+
33+
printf("Preenchendo a fila até a capacidade máxima (%d elementos):\n", MAX);
34+
for (int i = 1; i <= MAX; i++)
35+
{
36+
fila_insere(f, i * 10);
37+
}
38+
fila_imprime(f);
39+
40+
printf("Tentando inserir em uma fila cheia:\n");
41+
if (fila_cheia(f))
42+
printf("Fila está cheia.\n");
43+
else
44+
fila_insere(f, 100);
45+
1446
fila_libera(f);
15-
return 0;
16-
}
1747

48+
return 0;
49+
}

0 commit comments

Comments
 (0)