elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Necesito ayuda para que el programa pueda eliminar números repetidos en: 6 Mayo 2021, 04:35 am
Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <iostream>
  4. #include <fstream>
  5. #include <time.h>
  6. #include <string>
  7. using namespace std;
  8.  
  9. //Se generan variables globales para evitar el paso de parametros o argumentos entre las funciones
  10. int i=0, j=0, k=0, l=0;
  11. int n=0;
  12. int cn=0;                   //Numero de datos leidos y a ordenar
  13. int guardacn;
  14. int temp;
  15. int arreglo[1000000];         //maximo se podran ordenar 1000000 de numeros
  16. clock_t t_ini, t_fin;
  17. double secs;
  18. string nombrearchivo;      //nombre del archivo de entrada
  19.  
  20. int continuar = 0;
  21. int numBuscar = 0;
  22. int bandera = 0;
  23.  
  24.  
  25. struct Entrada {           //declaracion de estructura que permiten leer y copiar los numeros en el arreglo "arreglo"
  26. int valor;
  27. } entrada;
  28.  
  29.  
  30. //*****  Prototipo o definición del metodo de ordenamiento
  31. int busSecElimDup();
  32. int busqueda();
  33. void leeArchivo();
  34.  
  35.  
  36. //**** Funcion de lectura del archivo
  37. //lee los numeros contenidos en el archivo y los copia en el arreglo "arreglo"
  38. //Se dejan los numeros en un arreglo llamado "arreglo" para que la función (algoritmo o metodo) de Burbuja los pueda ordenar
  39. void leeArchivo(){
  40. FILE *archivo1;                                  //Crea un apuntador de archivo, utilizando en la función fopen, el apuntador se le asigná el llamado al archivo
  41.    cout<<"\n Teclea el nombre del archivo de entrada (sin espacio, ni caracteres especiales):   ";
  42. cin>>nombrearchivo;
  43. nombrearchivo+= ".txt"; // Se le agrega al nombre del archivo la extension ".txt"
  44. archivo1 = fopen(nombrearchivo.c_str(), "r");   // Se abre el archivo de modo lectura  
  45. if(archivo1== NULL ){                       //    el archivo contiene los numeros a ordenar
  46.      cout<<"\n No se puede abrir el archivo "; //si no se puede abrir el archivo termina con error el programa
  47.  exit(1);
  48. }                                  
  49. else{
  50.  cout<<"\n Se abrio el archivo "<<nombrearchivo.c_str()<<"  correctamente";
  51.     }
  52.  
  53.    //Lee el archivo y copia los numeros contenidos en el archivo en el arreglo "arreglo"  
  54.    cn=0;
  55.    for (int i=0; !feof(archivo1); i++) {          // Repite hasta que sea el fin del archivo
  56.        fscanf (archivo1, "%i", &entrada.valor);   // Lee el numero contenido en el archivo y lo guarda en la estructura
  57.        arreglo[i]=entrada.valor;                    // El numero contenido en la estructura lo pasa al arreglo "arreglo"
  58.        cn++;                                      // suma 1 al contador de numeros leidos
  59. }
  60. cn--;
  61. cout<<"\n\nSe ha generado el arreglo con los datos del archivo de entrada";
  62. cout<<"\nLa cantidad de numeros contenidos en el arreglo son:  "<<cn<<"\n\n";
  63. n=cn;
  64. fclose(archivo1);                             //cierra el archivo de entrada
  65. system ("pause");
  66. }
  67.  
  68.  
  69.  
  70. //Llama en general a una funcion de busqueda
  71. int busqueda() {
  72.    busSecElimDup();            //Se utiliza cuando los datos estan desordenados
  73.    return (0);
  74. }
  75.  
  76.  
  77. //Metodo de Busqueda Secuencial
  78. int busSecElimDup(){
  79.   int contador = 0;
  80.   cout<<"\nDato originales\n";
  81.   for (i=0; i<n; i++){
  82. cout<<arreglo[i]<<"  ";
  83. }
  84. // Busca duplicados dentro del arreglo
  85. for (i=0; i<n; i++) {
  86.   if  (arreglo [i] == arreglo[i+1]){
  87.             // corrimiento a la izquierda
  88.             for (j=i;  j < n;   j++) {           // eliminar con corrimiento a la izquierda
  89.               arreglo [j-1] = arreglo[j];
  90.  
  91.             }
  92.             contador ++;
  93. }
  94. }
  95. cout<<endl;
  96. cout<<"\nDato eliminados\n";
  97. for (i=0; i<n; i++){
  98. cout<<arreglo[i]<<"  ";
  99. }
  100.    cout<<endl;
  101.    return (0);
  102.  
  103.  
  104. }
  105.  
  106.  
  107.  
  108. //*** Funcio main ()
  109. int main() {
  110. continuar = 1;
  111.    leeArchivo();  
  112. n = cn;                        // lee y copia en una arreglo los numeros contenidos en el archivo de entrada
  113. /*    do {
  114.     system ("cls");
  115.     for (l=0; l<n; l++){
  116.     cout<<arreglo[l]<<"     ";
  117. }
  118. cout<<endl<<endl;
  119. cout<<"\n\nTeclee el numero a buscar o consultar:  ";
  120. cin>>numBuscar;
  121. */
  122.        t_ini = clock();                       // guarda tiempo inicial (antes de ordenar)
  123.  
  124.        busqueda ( );                          //Llama al metodo de ordenamiento
  125.  
  126.        t_fin = clock();   // guarda tiempo final (despues de ordenar)
  127.  
  128.                                               // Imprime el tiempo que se tardo el metodo en ordenar los datos
  129.        secs = (double)(t_fin - t_ini) / (double)CLOCKS_PER_SEC; // determina los milisegundo utilizados
  130.        printf("%.16g milisegundos", secs * 1000.0);   // imprime el tiempo utilizado
  131.        cout<<"\n\n";                          // se utiliza printf porque es una sentencia mas poderosa que cout
  132.                                               // permite ver cantidades muy pequeñas o muy grandes
  133. /*      
  134. cout<<"\nDesea consultar otro numero (SI = 1,  NO = 0)";
  135.         cin>>continuar;
  136. cout<<"\n\n";
  137.  
  138. } while (continuar == 1);
  139. */
  140. cout<<"\n\nMetodo de Busqueda Secuencial con eliminacion concluido \n\n";
  141.    system ("pause");
  142. }

Editado: Código formateado con geshi.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines