Ayuda con este código

Iniciado por chivo, Noviembre 07, 2015, 11:16:43 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Noviembre 07, 2015, 11:16:43 PM Ultima modificación: Noviembre 08, 2015, 01:16:22 AM por EPSILON
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:

Código: cpp
// 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.
Haitumichu you! or wachiton wachiton to!!

Casa Fantasma

A primera vista veo varios errores bastante evidentes, por ejemplo:

Código: cpp

int VectorDesordenado;
    int VectorOrdenado;//['MAX'];


Se declaran como variables y no como arreglos, en el código se supone que son arreglos  ::)

Código: cpp

// 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

Código: cpp

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).

Código: cpp

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
Sólo el conocimiento te hace libre.