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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: Ayuda ordenar y eliminar palabras texto en: 17 Diciembre 2012, 22:20 pm
aaah oks gracias naderST y x64Core ya solucione el problema y termine el programa
 :D
2  Programación / Programación C/C++ / Re: Ayuda ordenar y eliminar palabras texto en: 16 Diciembre 2012, 23:33 pm
la llamo dentro de un switch en el main:

Código:
//dependiendo la opc del menu
switch(opc)
   {
      case 1:
              ingresar();
              system("cls");
              break;
      case 2:
              busqueda();
              getch();
              break;
      case 3: cout<<"El Numero de Repeticion que desea eliminar es: ";
              cin>> v;
              borrar();
              break;
   }
 }while(opc!=4);
}
3  Programación / Programación C/C++ / Re: Ayuda ordenar y eliminar palabras texto en: 16 Diciembre 2012, 19:03 pm
Gracias a las 2 por las respuestas, ya logre ordenarlo por cantidad de repeticiones... lo unico que me falta y tengo una duda es en la parte de borrar los menores, tengo que "v" es el menor numero de repeticiones pero me da un error en la funcion, me dice "error: too few arguments to function 'void borrar(tipoNodo**, int) " que puede ser?
(el compilador que uso es el codeblock)

Código:
void borrar(Lista *lista, int v)
 {
   pNodo anterior, nodo;

   nodo = *lista;
   anterior = NULL;
   while(nodo && nodo->valor < v)
   {
      anterior = nodo;
      nodo = nodo->siguiente;
   }
   if(!nodo || nodo->valor != v) ;
   else { /* Borrar el nodo */
      if(!anterior) /* Primer elemento */
         *lista = nodo->siguiente;
      else  /* un elemento cualquiera */
         anterior->siguiente = nodo->siguiente;
      free(nodo);
   }
}
4  Programación / Programación C/C++ / Ayuda ordenar y eliminar palabras texto en: 15 Diciembre 2012, 18:18 pm
Hola soy nuevo en el foro y quisiera ver si me pueden ayudar con este programa... lo que hace es dado un texto ingresado muestra la cantidad de ocurrencias que tiene cada palabra, pero las muestra desordenadas, por ejemplo "hola amigo que que" ... la salida seria:
hola->1
amigo->1
que->2
como puedo hacer para que me los muestre ordenados de mayor a menor en numero de ocurrencias?
y otra duda.. como puedo hacer para eliminar la mas baja o las mas bajas?

Gracias de antemano, aqui esta mi codigo:

Código:
/*
   Recibe una cadena y devuelve las palabras de dicha cadena.
   Los espacios y saltos de linea son los separadores entre palabras.
*/
void separador(char renglon[80], char palabras[100][80], int *total)
{
   int i, j=0;

   for(i=0; i<strlen(renglon); i++)
   {
       /* Si es un caracter distinto de espacio y salto de linea */
       if(renglon[i]!=' ' && renglon[i]!='\n')
       {
  palabras[*total][j] = renglon[i];
  j++;

          /* Si el caracter siguiente es fin de cadena */
          if(renglon[i+1]=='\0')
  {
     palabras[*total][j] = '\0'; /* Indica fin de palabra */
     *total = *total+1; /* Aumenta el numero de palabras */
     j=0;
  }
       }
       /* Si es espacio o salto de linea */
       else if(renglon[i]==' ' || renglon[i]=='\n')
       {
  /* Si el caracter anterior no es espacio ni salto de linea */
  if(i>0 && renglon[i-1]!=' ' && renglon[i-1]!='\n')
  {
     palabras[*total][j] = '\0'; /* Indica fin de palabra */
     *total = *total+1; /* Aumenta el numero de palabras */
     j=0;
  }
       }
   }
}


void ocurrencias(char nombre_archivo[100])
{
   char renglon[80];
   char palabras[100][80]; /* Todas las palabras */
   char palabras_diferentes[100][80]; /* Solo palabras diferentes */
   int i, j, k, total=0 /* Numero total de palabras*/,
   diferentes=0 /* Numero de palabras diferentes */;
   int Rep[100]; /* Repeticiones de cada palabra diferente */

   FILE *archivo;

   archivo=fopen(nombre_archivo,"r");

   if(archivo==NULL)
   {
      printf("No se encuentra archivo: %s\n", nombre_archivo);
      return ;
   }

   /* Lee el archivo linea a linea y obtiene las palabras de esa linea */
   while(fgets(renglon,80,archivo))
   {
       separador(renglon,palabras, &total);
   }

   fclose(archivo);

   /* Saca copia del arreglo original */
   for(i=0; i<total; i++)
       strcpy(palabras_diferentes[i], palabras[i]);

   /* Saca palabras diferentes */
   diferentes = total;
   for(i=0;i<diferentes;i++)
   {
      for(j=i+1;j<diferentes;j++)
      {
  /* Si encuentra palabra repetida */
  if(!strcmp(palabras_diferentes[i], palabras_diferentes[j]))
  {
     /* Recorre una posicion elementos posteriores */
     for(k=j+1;k<diferentes;k++)
strcpy(palabras_diferentes[k-1], palabras_diferentes[k]);

     diferentes--;
     j--;
  }
       }
   }

   /* haya repeticiones de cada palabra distinta */
   for(i=0; i<diferentes; i++)
       Rep[i] = 0;
   for(i=0; i<diferentes; i++)
       for(j=0;j<total;j++)
  if(!strcmp(palabras_diferentes[i], palabras[j]))
     Rep[i]++;

   /* Muestra informacion */
   printf("Palabras y numero de ocurrencias del archivo: %s\n\n", nombre_archivo);
   printf("Total de palabras: %d\n", total);
   printf("Palabras distintas: %d\n\n", diferentes);

   for(i=0; i<diferentes; i++)
       printf("%s -> %d\n", palabras_diferentes[i], Rep[i]);
}
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines