Tema: Repeticion
Ver Mensaje Individual
  #2 (permalink)  
Antiguo 10/04/2012, 19:14
Avatar de cristian_qc
cristian_qc
 
Fecha de Ingreso: abril-2011
Mensajes: 43
Antigüedad: 13 años, 8 meses
Puntos: 8
Respuesta: Repeticion

Primero: <iostream.h> debe ser <iostream>.
Segundo: La función Main debe retornar un valor entero: return 0.
Tercero: No especificaste el espacio de nombres. En este caso es std: using namespace std;
Cuarto: system("pause"); Solo funciona en Windows. Si querés que la pantalla no se cierre automáticamente podés usar cin.get();
Quinto: Las variables deberían ser más específicas. Siempre veo que usan i, j, n, v, es mucho más entendible usar palabras completas. Yo generalmente a las variables auxiliares les pongo letras comenzando desde la "a".
Sexto: Los números se muestran desordenados porque lo que hace el último ciclo es verificar si el elemento actual se va a repetir más adelante, si es así no lo muestra, entonces solo muestra las últimas repeticiones y no las primeras.
Séptimo: Si bien a veces compila, lo siguiente es erróneo:
Código C++:
Ver original
  1. cin >> n;
  2. short V[ n ];
Lo ideal es hacerlo con memoria dinámica, pero también podés declarar un vector con un número máximo de elementos, y no permitir que se ingresen más que esa cantidad.
Último: Mejoré un poco el código:

Código C++:
Ver original
  1. #include<iostream>
  2. using namespace std;
  3. int main(){
  4.     short cantidad; // Cantidad de elementos
  5.    
  6.     // Ingresar cantidad de elementos
  7.     cout << "Digite la cantidad de numeros: "; cin >> cantidad;
  8.    
  9.     /* Esto aunque a veces compile es completamente ERRONEO. La forma
  10.         correcta es con memoria dinamica o declarando un vector con un
  11.         número máximo de elementos. */
  12.     // short vector[ cantidad ];
  13.    
  14.     short *vector = new short[ cantidad ]; // vector dinámico
  15.    
  16.     // Ingresar números
  17.     for( short a = 0; a < cantidad; a++ ){
  18.         cout << "Digite el elemento de la posicion " << a+1 << ": ";
  19.         cin >> vector[ a ];
  20.     }
  21.    
  22.     // Mostrar números
  23.     cout << "La lista de numeros sin repetir es: " << endl;
  24.     for( short a = 0; a < cantidad; a++ ){
  25.         bool repetido = false;
  26.        
  27.         // Recorrer todos los elementos ANTERIORES al actual.
  28.         for( short b = 0; b < a; b++ ){
  29.             if( vector[ a ] == vector[ b ] ) repetido = true;
  30.         }
  31.         // Se muestra el elemento solo si no está repetido
  32.         if( !repetido ) cout << vector[ a ] << "\t";
  33.     }
  34.     delete[] vector; // Liberar memoria
  35.     cout << endl; // Último fin de linea
  36.     cin.get();
  37.     return 0;
  38. }

Saludos!.