• Domingo 15 de Diciembre de 2024, 17:36

Autor Tema:  contar letras repetidas en una cadena  (Leído 9371 veces)

jusit

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
contar letras repetidas en una cadena
« en: Jueves 4 de Febrero de 2010, 12:04 »
0
Hola,
Hace poco que soy nuevo y tengo un problema con un programa que estoy realizando en C. Se me pide que haga un contador de aquellas letras que aparecen repetidas en una cadena utilizando una matriz bidimensional. La verdad es que con una matriz unidimensional si que lo pude hacer, pero con una de dos no se por donde empezar.

Podríais darme alguna pequeña orientación?

Gracias,

Aprendiz21Sam

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Re: contar letras repetidas en una cadena
« Respuesta #1 en: Jueves 4 de Febrero de 2010, 21:23 »
0
Pon al menos el código de la matriz unidimensional para ver si es verdad que sabes. Aquí hay normas que impiden que te hagamos los ejercicios, así que pon como lo harías en una matriz unidimensional y entonces te ayudaré con la bidimensional. "Ayudaré, no haré".

jusit

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: contar letras repetidas en una cadena
« Respuesta #2 en: Viernes 5 de Febrero de 2010, 10:55 »
0
Hola,

Le verdad que yo en ningún momento he pedido la respuesta del problema, tan solo que me dierais una orientación, es decir, una explicación de como enfocar el mismo.

Ahí va la solución del problema hecho para un array unidimensional:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 100

int i;
int length;
int ascii;
char cipher[N];
int letters[26];

int main()
{

 printf("Introduce una cadena: ");
    gets(cipher);
    fflush(stdin);
   
    length = strlen(cipher);
   
    for (i=0; i<length; i++)
        {
              ascii = cipher;
             
              if (ascii > 96)
                 ascii = ascii - 97;
              else
                  ascii = ascii - 65;
             
              letters[ascii]++;
           
             
        }
       
        printf("a: %d   ", letters[0]);
        printf("b: %d   ", letters[1]);
        printf("c %d   ", letters[2]);
        printf("d: %dn", letters[3]);
        printf("e: %d   ", letters[4]);
        printf("f: %d   ", letters[5]);
        printf("g: %d   ", letters[6]);
        printf("h: %dn", letters[7]);
        printf("i: %d   ", letters[8]);
        printf("j: %d   ", letters[9]);
        printf("k: %d   ", letters[10]);
        printf("l: %dn", letters[11]);
        printf("m: %d   ", letters[12]);
        printf("n: %d   ", letters[13]);
        printf("o: %d   ", letters[14]);
        printf("p: %dn", letters[15]);
        printf("q: %d   ", letters[16]);
        printf("r: %d   ", letters[17]);
        printf("s: %d   ", letters[18]);
        printf("t: %dn", letters[19]);
        printf("u: %d   ", letters[20]);
        printf("v: %d   ", letters[21]);
        printf("w: %d   ", letters[22]);
        printf("x: %dn", letters[23]);
        printf("y: %d   ", letters[24]);
        printf("z: %d   ", letters[25]);
       
 printf("nn");    
 system("pause");
}

Como dije, si se hacerlo con una/varias tablas unidimensionales, pues las comparas y verificas si esta o no la letra y cuantas veces se repite. En este caso, he usado los valores ASCII para determinar el carácter y almacenar el numero de veces que aparece en una tabla.

Garethsoul

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: contar letras repetidas en una cadena
« Respuesta #3 en: Sábado 6 de Febrero de 2010, 00:54 »
0
pone el codigo entre corchetes de codigo por favor.  osea entre
Código: C
  1.  
 sin el . asi es mas facil que lo entendamos.

jusit

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: contar letras repetidas en una cadena
« Respuesta #4 en: Sábado 6 de Febrero de 2010, 01:12 »
0
Código: C
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define N 100
  5.  
  6. int i;
  7. int length;
  8. int ascii;
  9. char cipher[N];
  10. int letters[26];
  11.  
  12. int main()
  13. {
  14.  
  15. printf("Introduce una cadena: ");
  16. gets(cipher);
  17. fflush(stdin);
  18.  
  19. length = strlen(cipher);
  20.  
  21. for (i=0; i<length; i++)
  22. {
  23. ascii = cipher[i];
  24.  
  25. if (ascii > 96)
  26. ascii = ascii - 97;
  27. else
  28. ascii = ascii - 65;
  29.  
  30. letters[ascii]++;
  31.  
  32.  
  33. }
  34.  
  35. printf("a: %d ", letters[0]);
  36. printf("b: %d ", letters[1]);
  37. printf("c %d ", letters[2]);
  38. printf("d: %dn", letters[3]);
  39. printf("e: %d ", letters[4]);
  40. printf("f: %d ", letters[5]);
  41. printf("g: %d ", letters[6]);
  42. printf("h: %dn", letters[7]);
  43. printf("i: %d ", letters[8]);
  44. printf("j: %d ", letters[9]);
  45. printf("k: %d ", letters[10]);
  46. printf("l: %dn", letters[11]);
  47. printf("m: %d ", letters[12]);
  48. printf("n: %d ", letters[13]);
  49. printf("o: %d ", letters[14]);
  50. printf("p: %dn", letters[15]);
  51. printf("q: %d ", letters[16]);
  52. printf("r: %d ", letters[17]);
  53. printf("s: %d ", letters[18]);
  54. printf("t: %dn", letters[19]);
  55. printf("u: %d ", letters[20]);
  56. printf("v: %d ", letters[21]);
  57. printf("w: %d ", letters[22]);
  58. printf("x: %dn", letters[23]);
  59. printf("y: %d ", letters[24]);
  60. printf("z: %d ", letters[25]);
  61.  
  62. printf("nn");
  63. system("pause");
  64. }
  65.  
  66.