/
2do_taller_3.c
132 lines (123 loc) · 3.24 KB
/
2do_taller_3.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
#include <stdio.h>
#include <stdlib.h>
#define TAM 10
void descartar_resto(void) {
while (getchar() != '\n');
}
void pause(void) {
if (getchar() != '\n')
descartar_resto();
}
int buscar_elemento( const int elementos[], const int t_logico, const int aux) {
int i = 0, valor = -1;
while (valor == -1 && i < t_logico) {
if (aux == elementos[i])
valor = i;
else
i++;
}
return valor;
}
void eliminar_pos(int vector[], int * tl, const int pos) {
int i;
if (*tl > pos) {
for (i = pos; i < *tl - 1; i++) {
vector[i] = vector[i+1];
}
*tl = *tl - 1; // ahora el vector es mas chico
printf ("El elemento fue eliminado\n");
} else {
printf ("No se puede eliminar ese elemento\n");
}
}
int main( int argc, char *argv[] )
{
char opcion = 0;
int elementos[TAM], aux, i, t_logico = 0;
/*Menú de opciones*/
printf("Ingrese la opcion deseada:\n");
printf("a: Insertar elemento\n");
printf("b: Eliminar elemento\n");
printf("c: Eliminar posicion\n");
printf("d: Buscar elemento\n");
printf("e: Mostrar vector\n");
printf("s: Salir\n");
opcion = getchar(); /* lee un caracter*/
descartar_resto();
do{
printf("\e[1;1H\e[2J");
switch (opcion) {
case 'a': /* Inserta un elemento */
printf("Ingrese elemento a insertar: ");
scanf("%d", &aux);
descartar_resto();
if (t_logico < TAM)
t_logico++;
for (i = t_logico; i > 0; i--) {
elementos[i] = elementos[i-1];
}
elementos[0] = aux;
break;
case 'b': /* Busca un elemento y lo elimina*/
printf("Ingrese elemento a eliminar: ");
scanf("%d",&aux);
descartar_resto();
// busco el primer elemento que sea igual a aux
aux = buscar_elemento(elementos, t_logico, aux);
if (aux == -1) {
printf ("El elemento no esta en el arreglo");
} else {
// y lo elimino.
eliminar_pos(elementos, &t_logico, aux);
printf ("El elemento ha %d sido eliminado", aux + 1);
}
pause();
break;
case 'c': /* Elimina el elemento de la posición seleccionada*/
printf("Ingrese posicion de elemento a eliminar: ");
scanf("%d",&aux);
descartar_resto();
eliminar_pos(elementos, &t_logico, aux);
pause();
break;
case 'd': /* Busca un elemento y muestra en que posición se encuentra */
printf("Ingrese elemento a buscar: ");
scanf("%d",&aux);
descartar_resto();
aux = buscar_elemento(elementos, t_logico, aux);
if ( aux != -1 )
printf("el elemento buscado esta en la posicion %d\n", aux + 1);
else
printf("El elemento no se encuentra en el arreglo\n");
pause();
break;
case 'e': /* Muestra vector */
if (t_logico > 0) {
for (i = 0; i < t_logico; i++)
printf("%d ", elementos[i]);
printf ("\n");
} else {
printf("El array esta vacio\n");
}
pause();
break;
case 's': /* Salir */
break;
default: printf("opcion equivocada!\n");
pause();
}
printf("\e[1;1H\e[2J"); /* limplio la pantalla*/
/*Menú de opciones*/
printf("Ingrese la opcion deseada:\n");
printf("a: Insertar elemento\n");
printf("b: Eliminar elemento\n");
printf("c: Eliminar posicion\n");
printf("d: Buscar elemento\n");
printf("e: Mostrar vector\n");
printf("s: Salir\n");
opcion = getchar(); /* lee un caracter*/
descartar_resto();
} while (opcion != 's');
printf("\nChau!\n");
return 0;
}