Buenas, estaba haciendo un programa empleado por una persona que me ha explicado sobre C++ pero no doy el porque del error.
El enunciado:
Realizar la ordenación de un vector numérico mediante los métodos de ordenación por selección, inserción y por el método denominado normalmente burbuja. Los ejercicios están propuestos por un alumno, que espero pueda consultar los ejercicios y prácticas para su resolución de una manera más efectiva. Debe tener procedimientos.
El código:
// Librerías a utilizar
#include <iostream>
using namespace std;
// Predefinición de funciones
void Pide(int []);
void Visualiza(int []);
void Ordenarinter(int [],int []);
void Ordenarsel(int [],int []);
// Función principal
int main(int argc, char *argv[])
{
// Definicion de variables a utilizar
int VectorDesordenado;
int VectorOrdenado;//['MAX'];
int Opcion=0;
int i=0;
// Inicializar los vectores para evitar posibles errores
for(Opcion=0;Opcion<i;Opcion++)
{
VectorDesordenado;
VectorOrdenado;
}
// Visualizar menú de opciones
do {
cout<<"\n1.- Solicitar datos del vector.";
cout<<"\n2.- Visualizar datos del vector desordenado.";
cout<<"\n3.- Ordenar por intercambio directo.";
cout<<"\n4.- Ordenar por seleccion directa.";
cout<<"\n5.- Visualizar datos del vector ordenado.";
cout<<"\n6.- Rellenar vector desordenado aleatoriamente.";
cout<<"\n0.- Salir";
cout<<"\n=============================================";
cout<<"\nOpcion...: ";
cin>>Opcion;
switch(Opcion) {
case 1:
// Solicitar datos del vector, llamar a la funcion pedir
Pide(VectorDesordenado);
break;
case 2:
// Visualizar datos del vector desordenado
Visualiza(VectorDesordenado);
break;
case 3:
// Ordenar por el metodo de intercambio directo
Ordenarinter(VectorDesordenado,VectorOrdenado);
break;
case 4:
// Ordenar por el metodo de seleccion directa
Ordenarsel(VectorDesordenado,VectorOrdenado);
break;
case 5:
// Visualizar datos del vector ordenado
Visualiza(VectorOrdenado);
break;
}
} while(Opcion!=0);
system("PAUSE");
return 0;
}
// Función Solicitar Datos del vector desordenado
void Pide(int VectorDesordenado)
{
// Crear variable contador para recorrer el vector
int contador=0;
// Recorrer el vector y solicitar datos del mismo
for(contador=0;contador<i;contador++)
{
cout<<"\nValor posicion : ",contador+1;
cin>>VectorDesordenado[contador];
}
}
// Función para visualizar los datos del vector desordenado/ordenado
void Visualiza(int Vector[])
{
// Crear variable contador para recorrer el vector
int contador=0;
// Recorrer el vector y visualizar los datos del mismo
cout<<"\n========================================================\n\n";
for(contador=0;contador<i;contador++)
{
cout<<Vector[contador];
}
cout<<"\n\n========================================================\n";
}
// Función para ordenar el vector con el método de intercambio directo
void Ordenarinter(int VectorD[],int VectorO[])
{
// Variables para recorrer los vectores
int contador = 0;
int elementos = 0;
int intercambio = 0;
int bandera = 1;
// Copiar el contenido del vector desordenado al ordenado
for(contador=0;contador<i;contador++)
{
VectorO[contador] = VectorD[contador];
}
// Ordenar el vector por el método de la burbuja
cout<<"\n\nOrdenando Vector.";
for(elementos=i-1;elementos>0 && bandera==1;elementos--)
{
bandera = 0;
for(contador=0;contador<elementos;contador++)
{
if(VectorO[contador]>VectorO[contador+1])
{
intercambio = VectorO[contador];
VectorO[contador] = VectorO[contador+1];
VectorO[contador+1] = intercambio;
bandera = 1;
cout<<".";
}
}
}
cout<<"\n\nVector Ordenado\n\n";
}
// Función para ordenar el vector con el método de selección directa
void Ordenarsel(int VectorD[],int VectorO[])
{
// Variables a utilizar
int minimo = 0;
int pos_minimo = 0;
int contador = 0;
int elementos = 0;
int intercambio = 0;
// Copiar el contenido del vector desordenado al ordenado
for(contador=0;contador<i;contador++)
{
VectorO[contador] = VectorD[contador];
}
// Método de ordenación por selección directa
for(elementos=0;elementos<i;elementos++)
{
minimo = VectorO[elementos];
pos_minimo = elementos;
for(contador=elementos;contador<i;contador++)
{
if(minimo>VectorO[contador])
{
minimo = VectorO[contador];
pos_minimo = contador;
}
}
intercambio = VectorO[elementos];
VectorO[elementos] = minimo;
VectorO[pos_minimo] = intercambio;
}
}
Si alguien me puede ayudar se lo agradeceria.
A primera vista veo varios errores bastante evidentes, por ejemplo:
int VectorDesordenado;
int VectorOrdenado;//['MAX'];
Se declaran como variables y no como arreglos, en el código se supone que son arreglos ::)
// Inicializar los vectores para evitar posibles errores
for(Opcion=0;Opcion<i;Opcion++)
{
VectorDesordenado;
VectorOrdenado;
}
En el for, no haces nada con los arreglos. :o
case 1:
// Solicitar datos del vector, llamar a la funcion pedir
Pide(VectorDesordenado);
break;
De nuevo aqui, hay error porque le estás pasando una variable cuando el prototipo de la función espera un arreglo (lo mismo con las demás funciones).
int main(int argc, char *argv[])
Realmente no usas los argumentos, para qué ponerlos?
En las funciones cuando usas la variable "i" no la estás declarando previamente.
De ahí en más no he revisado la lógica del algoritmo, pero son errores relacionados con lo básico de programación. ;)
Zalu2