febrero 26, 2013
ARREGLOS EN C++ SIN ELEMENTOS REPETIDOS
Se requiere un programa que al recibir como dato un arreglo unidimensional desordenado de N enteros, obtenga como salida ese mismo arreglo pero sin los elementos repetidos.
#include <iostream>
using namespace std;
//FUNCION QUE VALIDA LA ENTRADA DE ENTEROS
int ingresa_int(char *mensaje){
int num;
bool error;
do{
error = false;
cout << mensaje;
if(!(cin >> num)){
cin.clear();
cin.ignore(INT_MAX,'\n');
cout << "ERROR Debes ingresar un numero entero. Por Ejemplo: 4\n";
error = true;
}
}while(error);
return num;
}
//ACCION QUE ELIMINA LOS REPETIDOS DEL ARREGLO
void fuera_repetidos(int *arreglo, int &num){
int i, j, pivot = 0;
bool repetido;
for(i = 0; i < num; i++){
repetido = false;
for(j = 0; j < pivot; j++){
if(arreglo[i] == arreglo[j]){
repetido = true;
break;
}
}
if(!repetido){
arreglo[pivot] = arreglo[i];
pivot++;
}
}
arreglo[pivot+1] = arreglo[num];
num = pivot;
}
//ACCION QUE IMPRIME LOS ELEMENTOS DEL ARREGLO
void imprime(int *ar, int n){
int i;
for(i = 0; i < n; i++){
cout << ar[i];
if(i < n - 1){
cout << ", ";
}else{
cout << ".";
}
if((i != 0 && i%10 == 0) || i == n - 1){
cout << "\n";
}
}
}
//FUNCION PRINCIPAL MAIN
int main(){
int n, i,nvo;
do{
n = ingresa_int("Cuantos elementos tendra el arreglo?\t");
if(n < 1)
cout << "\nERROR! La cantidad de elementos debe ser mayor que 0\n";
}while(n < 1);
int arr[n];
for (i = 0; i < n; i++){
cout << "El entero en la posicion " << i+1;
arr[i] = ingresa_int(" es:\t");
}
cout << "\nEl arreglo tiene los siguientes elementos:\n";
imprime(arr, n);
fuera_repetidos(arr, n);
cout << "\nLuego de eliminar los repetidos, el numero de elementos del arreglo es " << n << " y estos son:\n";
imprime(arr, n);
cin.clear();
cin.ignore(INT_MAX,'\n');
cout << "\nEnter para salir....\n";
getchar();
return 0;
}
Suscribirse a:
Enviar comentarios (Atom)
Gracias, buen aporte
ResponderEliminar