-
Notifications
You must be signed in to change notification settings - Fork 0
/
lista.c
151 lines (104 loc) · 4.14 KB
/
lista.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#include <stdio.h>
#include<stdlib.h>
void consultapos(int vetor[13], int ocupados, int pos){
if(pos >= ocupados){
printf("\nEssa posicao nao existe na lista atual !!!!");
}else{
printf("\nO valor na posicao [%d] = %d", pos, vetor[pos]);
}
}
int Adiciona(int vetor[13], int ocupados){
int posicao, valor, i;
printf("\nDigite em posicao em que desejar inserir: ");
scanf("%d", &posicao);
printf("\nDigite o valor: ");
scanf("%d", &valor);
if(ocupados == 0){
printf(" \nO Primeiro valor sera inserido na posicao [0]\n");
vetor[0] = valor;
}else if(posicao > ocupados){
printf("\nO valor sera inserido na posicao [%d]\n", ocupados);
vetor[ocupados] = valor;
}
else{
printf("\nO valor sera inserido na posicao [%d]\n",posicao);
for(i = ocupados ; i > posicao; i--){ //os valores vão para a proxima posicao do vetor
vetor[i] = vetor[i-1];
}
vetor[posicao] = valor;
}
return 1; //esse valor e adicionado a variavel ocupados, cada vez que se adiciona um elemento no vetor
}
int Remove(int vetor[13], int ocupados){
int i, posicao;
printf("\nDigite em posicao que desejar remover: ");
scanf("%d", &posicao);
if(posicao >= ocupados){
printf("\nEssa posicao nao existe na lista atual\n");
}else {
for(i = posicao; i < ocupados; i++){
vetor[i] = vetor[i+1];
}
return -1; // esse valor eh removido da varivel ocupados, cada vez que se remove um elemento do vetor
}
}
void Mostra(int vetor[13], int ocupados){
int i;
system("clear");
printf("\n");
for(i = 0; i < ocupados; i++){
printf("\nPosicao[%d]: %d",i, vetor[i]);
}
printf("\n");
}
int main (){
int vetor[13];
int ocupados = 0; //variavel que controla o tamanho da fila
int i, opcao, pos;
int cont = 1; //contador para travar o menu quando o vetor estiver cheio
while(cont){ // cont incia com 1 e quando for 0 ele sai do loop
printf("\n------------------------------------------------------");
printf("\nDigite - 1............. Para adicionar um elemento.\nDigite - 2............. Para excluir um elemento.\nDigite - 3............. Para mostrar a lista.\nDigite - 4............. Para consultar posicao na lista. \nDigite - 5............. Para limpar a tela\nDigite - 6............. Para encerrar");
printf("\n-----------------------------------------------------\n");
scanf("\n%d", &opcao);
switch(opcao){
case 1:
if(ocupados >= 14){
printf("\nLISTA CHEIA, NOVOS ELEMENTOS NAO PODEM SER INSERIDOS\n");
}else{
ocupados += Adiciona(vetor,ocupados); // variavel que informa o tamanho do vetor atual
}
break;
case 2:
if(ocupados > 0){
ocupados += Remove(vetor,ocupados); // variavel que informa o tamanho do vetor atual
}
else{
printf("\nLISTA VAZIA, NAO E POSSIVEL REMOVER ELEMENTOS\n");
}
break;
case 3:
if(ocupados == 0){
printf("\nLista esta vazia!!!!!!");
} else{
Mostra(vetor,ocupados);
}
break;
case 4:
printf("\nDigite a posicao que seja consultar:");
scanf("%d",&pos);
consultapos(vetor, ocupados, pos);
break;
case 5:
system("clear");
break;
case 6:
printf("\nPROGRAMA ENCERRADO\n");
printf("\n######## Desenvolvido por: Rafael Elias Ioppi ###########\n");
cont = 0;
break;
default:
printf("\nOPCAO INVALIDA\n");
}
}
}