-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvectores.cpp
138 lines (120 loc) · 3.5 KB
/
vectores.cpp
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
#include<stdio.h>
#include<iostream>
using namespace std;
#define max 5
//------Estructuras----------------
struct alum{
int legajo;
int dni;
char sexo;
};
struct Nodo{
alum info;
Nodo * sgte;
};
//---------------------------------
//------Prototipos-----------------
void inicializar(int vec[], int cant_pos, int valor_inicial);
void mostrar(int vec[], int len);
void cargarVector(int vec[], int &len, int cant_pos);
void insertar(int vec[], int &len, int valor, int pos);
void insertarOrdenado(int vec[], int &len, int valor);
int buscar(int vec[], int len, int valor);
void eliminar(int vec[], int &len, int pos);
//---------------------------------
//---Implementación de funciones---
void inicializar(int vec[], int cant_pos, int valor_inicial){
for( int i=0 ; i<cant_pos ; i++){ //Recorremos todo el vector completo.
vec[i]=valor_inicial; //A cada posición le asignamos el valor indicado.
}
}
void mostrar(int vec[], int len){
cout << "*******Mostrando valores del vector**********" << endl;
for( int i = 0 ; i<len ; i++ ){ //Recorremos el vector hasta la cantidad de datos cargados.
cout << i+1 << "º Dato: " << vec[i] << endl; //Imprimimos en orden todos los datos junto a su indice sumado 1.
}
cout << "*********************************************" << endl;
}
void cargarVector(int vec[], int &len, int cant_pos){ //Se carga vector mediante el ingreso por pantalla del usuario.
cout << "Iniciamos la carga masiva del vector de " << cant_pos << " posiciones." << endl;
for(int i=0; i<cant_pos ; i++){
cout << "Ingrese el " << i+1 << "º dato: ";
cin >> vec[i];
len++;
}
}
void insertar(int vec[], int &len, int valor, int pos){ //Inserta un dato en una posicion especifica.
for(int i=len; i>pos ; i--){
vec[i] = vec[i-1];
}
vec[pos] = valor;
len++;
}
void insertarOrdenado(int vec[], int &len, int valor){ //Inserta un dato segun el orden ascendente.
int i=0;
while( i<len && vec[i]<valor){
i++;
}
if(i==len){
vec[len]= valor;
len++;
}
else{
insertar(vec,len,valor,i);
}
}
int buscar(int vec[], int len , int valor){ //Busca un dato y devuelve el indice donde lo encontro.
int i=0;
while( i<len && vec[i]!=valor){
i++;
}
if(i==len){
return -1;
}
else{
return i;
}
}
void eliminar(int vec[], int &len, int pos){ //Elimina un dato.
for(int i=pos; i<len-1 ; i++){
vec[i] = vec[i+1];
}
len--;
}
//---------------------------------
//----Función principal------------
int main(){
int vec[max];
int len=0;
int count=0;
int menu=1;
int indice;
inicializar(vec,max,0);
mostrar(vec,max);
while( menu != 0 && count<max){
cout << "Inserte valor o 0 para terminar:";
cin >> menu;
if(menu!=0){
insertarOrdenado(vec,len,menu);
count++;
}
}
menu=1;
cout << "------------------------------------------------------" << endl;
while( menu!=0){
cout << "Ingrese valor que desea buscar o 0 para terminar: ";
cin >> menu;
indice = buscar(vec,len,menu);
if(indice!=-1){
cout << "Valor encontrado en la posición " << indice << endl;
}
else{
cout << "Valor no encontrado." << endl;
}
}
eliminar(vec,len,0);
eliminar(vec,len,2);
mostrar(vec,max);
mostrar(vec,len);
return 0;
}