Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: original91 en 10 Mayo 2010, 17:15 pm



Título: problema con tablas y tuplas
Publicado por: original91 en 10 Mayo 2010, 17:15 pm
Hola buenas, necesito ayuda para resolver un problema que tengo que hacer con C++.
Haber si alguien me puede ayudar :)


Diseñar un algoritmo que, dada una sequencia de caracteres
terminada en punto, escriba la palabra mas "consonantica ", 'es decir, la
que tenga el porcentaje mas alto de consonantes respecto del total de
letras de la palabra
Ejemplo: LOS GUSANOS DE TIERRA.
El% de consonantes sería respectivamente: 66%, 75%, 50% y 60%.
Respuesta: GUSANOS


Título: Re: problema con tablas y tuplas
Publicado por: leogtz en 11 Mayo 2010, 00:04 am
No me cuadran los porcentajes.

"los" -> 2 consonantes de 3 letras, 2/3 = 0.66
"gusanos" -> 4 consonantes de 7, 4/7 = 0.57, ¿por qué 75%?
"de" -> 1 consonante de 2 letras, 1/2 = 0.5
"tierra" -> 3 consonantes de 6 letras, 3/6 = 0.5, ¿por qué 60 %?


Título: Re: problema con tablas y tuplas
Publicado por: original91 en 11 Mayo 2010, 00:05 am
Perdon jajaja, esque estaba en catalan y lo he traduido rapidamente jajaja. estan mal los porcentajes.


Título: Re: problema con tablas y tuplas
Publicado por: leogtz en 11 Mayo 2010, 01:11 am
Puedes usar la función strtok() para separar la cadena por el carácter que desees, en este caso el carácter espacio.

Vas procesando cada palabra (token) y cuentas sus consonantes, por lo que podrás calcular el porcentaje, luego puedes meterlo en un vector dicho porcentaje, para luego implementar una búsqueda secuencial para encontrar el porcentaje mayor y la posición del token mayor.


Título: Re: problema con tablas y tuplas
Publicado por: original91 en 12 Mayo 2010, 00:44 am
de momento tengo esto:

#include <iostream>
using namespace std;

typedef int TParaulaActual [MAX];
            TParaulaMax [MAX];

void main ()
{
   TParaulaActual paraulaActual;
    TParaulaMax  paraulaMax;
   int index, numFinal, numConsonants;
   double percentatge, percentatgeMax;

   index=0;
   numFinal=0;
   numConsonants=0;
   percentatge=0.0;
   percentatgeMax=0.0;

   cout<<"Entra la seqüència"<<endl;
   cin>>paraulaActual[index];

   while (paraulaActual[index]!='.')
   {
      
       while (paraulaActual[index]!=' ')
       {
          if (((paraulaAct[index]:=’a’)||(paraulaAct[index]:=’e’)||(paraulaAct[index]:=’i’)||(paraulaAct[index]:=’o’)||(paraulaAct[index]:=’u’)||(paraulaAct[index]:=’A’)||(paraulaAct[index]:=’E’)||(paraulaAct[index]:=’I’)||(paraulaAct[index]:=’O’)||(paraulaAct[index]:=’U’))
          {
             numConsonants=numConsonants+1;
          }
          index=index+1;
          cin>>paraulaActual[index];
       }
       numFinal=index-1;
       percentatge=(double)numConsonants*100.0/(double)numFinal;

       if (percentatge>percentatgeMax)
       {
          for (index=0<numFinal)
          {
             paraulaMax[index]=paraulaActual[index];
          }
          percentatgeMax=percentatge;
       }
          index=0;
          numFinal=0;
          numConsonants=0;
          percentatge=0.0;
        cin>>paraulaActual[index];
   }
   cout<<"La paraula mes consonantica es:"

      for(index=0<numFinal
      {
         cout<<paraulaMax[index]<<endl;
      }
      cout<<"amb un";
      cout<<percentatgeMax;
      cout<<"de consonants";
}