• Viernes 8 de Noviembre de 2024, 20:36

Autor Tema:  Ayuda Con Cadena De Caracteres  (Leído 2100 veces)

Dunadan

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Ayuda Con Cadena De Caracteres
« en: Martes 19 de Abril de 2005, 05:21 »
0
Hola, colegas, les paso a contar: estuve acumulando ejercicion para hacer y me encontre con uno para contar las vocales de un texto; pense que iba a ser fácil, pero resulta que me quede trabado. El código:
Código: Text
  1.  
  2. #include <stdio.h>
  3.  
  4. main()
  5. {
  6.  
  7.       char cVocales[6]={'a','e','i','o','u'};
  8.       int iCont=0,iContVocal=0,iEncontrado=0,i=0;
  9.       char sCadena[50];
  10.       int iCuentaVocal[6];          
  11.      
  12.       for(i=0;i<5;i++);
  13.       {
  14.           iCuentaVocal[i]=0;
  15.       }
  16.  
  17.       printf("Ingrese una cadena(presione [Enter] para terminar),\n"
  18.        "se contara la cantidad de vocales\n");
  19.       gets(sCadena);
  20.       for(iCont=0;(int)(sCadena) != -1;iCont++)
  21.       {
  22.         for(iContVocal=0;(iContVocal < 5 || iEncontrado==1);iContVocal++)
  23.         {
  24.           if (sCadena[iCont] == cVocales[iContVocal])
  25.           {
  26.             iCuentaVocal[iContVocal]++;
  27.             iEncontrado++;
  28.           }
  29.         }
  30.     iEncontrado=0;
  31.     }
  32.    
  33.     printf("\nCantidad 'a' = %d\n"
  34.              "Cantidad 'e' = %d\n"
  35.                            "Cantidad 'i' = %d\n"
  36.              "Cantidad 'o' = %d\n"
  37.                    "Cantidad 'u' = %d",iCuentaVocal[0],iCuentaVocal[1],iCuentaVocal[2],iCuentaVocal[3],iCuentaVocal[4]);
  38. getchar();
  39. }    
  40.  
  41.  
Puse todo, pero la verdad lo único importante y en lo que me da error es en los For centrales.  Para mi el problema radica en la condicion del primer For, al valer EOF -1.  Espero que alguien me ayude, pero no se maten en resolver poniendo el código, sino tirenme ayudas, así los resuelvo yo.

Saludos.
"Desde antaño se dice que el espíritu que al demonio se ha vendido no se apresura en dejar la envoltura de la carne, sino que alimenta y enseña al mismo gusano que roe, hasta que desde la corrupción emerge una vida terrible, y las criaturas que con carroña de la tierra se alimentan se multiplican a escondidas para hostigarla, y se hacen monstruosas para infestarlas.  En secreto son excavadas interminables galerías donde debían bastar los poros de la tierra, y unas criaturas que sólo debían arrastrarse han aprendido a caminar"

[size=109]H.P. Lovecraft "El Ceremonial"[/size]

Diodo

  • Moderador
  • ******
  • Mensajes: 658
    • Ver Perfil
    • http://www.solocodigo.com
Re: Ayuda Con Cadena De Caracteres
« Respuesta #1 en: Martes 19 de Abril de 2005, 09:11 »
0
Hola

En principio veo que tienes mal la definicion de cVocales que le has puesto un char[6] y en realidad seria un char[5] es probable que no sea eso lo que de el error pero no esta de mas cambiarlo (tambien en el vector int que cuenta las vocales)

Luego no entiendo muy bien lo que pretendes con la conversion de char a int en el bucle:

Código: Text
  1. for(iCont=0;(int)(sCadena) != -1;iCont++)
  2.      {..........
  3.  
  4.  

si lo que quieres es llegar hasta el final de la cadena lo mejor es:
Código: Text
  1.  
  2. while(cadena[i]!='\0')
  3. {
  4.  
  5. }
  6.  
  7.  

ve cambiando esas cosillas a ver si te va mejor

saludos  :hola:

carlos20

  • Miembro activo
  • **
  • Mensajes: 34
    • Ver Perfil
Re: Ayuda Con Cadena De Caracteres
« Respuesta #2 en: Martes 19 de Abril de 2005, 10:30 »
0
hola

Citar
Luego no entiendo muy bien lo que pretendes con la conversion de char a int en el bucle:
Código: Text
  1.  
  2. for(iCont=0;(int)(sCadena) != -1;iCont++)
  3.     {..........
  4.  
  5.  

si eso es un error tambien hay un error en el primer for el vector iCuentaVocal=0; esta fuera del for y no se inicializa con 0 en sus posiciones

Código: Text
  1.  
  2. for(i=0;i<5;i++); //el&#59;  no va
  3.      {
  4.          iCuentaVocal[i]=0;
  5.      }
  6.  
  7.  
y el otro error esta en el uso de la variable iEncontrado en la condición del tercer for porque si iEncontrado es igual a 1 el for se repite sin importar el valor de iContVocal y cuando iContVocal >5 esta accediendo a índices no validos para cVocales , no es necesario el uso de iEncontrado es mejor usar un break dentro del if

Dunadan

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Ayuda Con Cadena De Caracteres
« Respuesta #3 en: Martes 19 de Abril de 2005, 15:20 »
0
Gracias a los dos, ya lo resolvi.  Diodo, hice la conversión porque leí que si queria saber si una cadena habia llegado al final (EOF) tenia que hacerla int en vez de char.  Eso me confundió, pero veo que ahora no es así.
Carlos20, ni me había dado cuenta del ";" en el for, en los compiladores que usé no me dieron ningún warning ni error, y por ese detalle no se me inicializaba el vector.  Con respecto a la variable iEncontrado, lo que quería hacer es que no haga comparaciones demás, si la vocal era una 'a', para qué iba a comparar las demás.  Bueno, gracias devuelta a los 2, y al foro en general que está muy bueno. Cuando tenga dudas los voy a seguir molestando  :lol: .

Saludos.
"Desde antaño se dice que el espíritu que al demonio se ha vendido no se apresura en dejar la envoltura de la carne, sino que alimenta y enseña al mismo gusano que roe, hasta que desde la corrupción emerge una vida terrible, y las criaturas que con carroña de la tierra se alimentan se multiplican a escondidas para hostigarla, y se hacen monstruosas para infestarlas.  En secreto son excavadas interminables galerías donde debían bastar los poros de la tierra, y unas criaturas que sólo debían arrastrarse han aprendido a caminar"

[size=109]H.P. Lovecraft "El Ceremonial"[/size]

carlos20

  • Miembro activo
  • **
  • Mensajes: 34
    • Ver Perfil
Re: Ayuda Con Cadena De Caracteres
« Respuesta #4 en: Miércoles 20 de Abril de 2005, 00:01 »
0
hola Dunadan

Citar
Con respecto a la variable iEncontrado, lo que quería hacer es que no haga comparaciones demás, si la vocal era una 'a', para qué iba a comparar las demás.

claro para no hacer comparaciones demás es que te dije que es mejor usar
un "break" dentro del if para que salga del for cuando encuentre una vocal ,
porque usar iEncontrado te va a dar un error .
 
 :hola:

Shalom

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: Ayuda Con Cadena De Caracteres
« Respuesta #5 en: Martes 26 de Abril de 2005, 02:11 »
0
Hola segun lo que entendi es que quieres es contar cuantas vocales tienes en una cadena de caracteres lo mas ideal es que utilices la libreria string.h, leyendo tu cadena con un ciclo y cortando tu cadena con un caracter, no te prometo ayudarte hoy pero para antes del viernes te envio lo que pude hacer

 ;)
"El fin de mi ignorancia es el principio de mi sabiduria"

Shalom

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: Ayuda Con Cadena De Caracteres
« Respuesta #6 en: Martes 26 de Abril de 2005, 15:34 »
0
:kicking:    Hola nuevamente espero que ester super y lo prometido es deuda aqui tienes una forma de realizar tu programa si tienes alguna duda por faavor no dudes en decirrme.... bueno bye saludos a todos.... :)
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
"El fin de mi ignorancia es el principio de mi sabiduria"