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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda FOR
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda FOR  (Leído 1,440 veces)
UsuarioZ

Desconectado Desconectado

Mensajes: 64


Ver Perfil
Ayuda FOR
« en: 12 Junio 2019, 03:59 am »

Cuando lo ejecuto se salta del ciclo 1 al 3.

Código
  1. #include <stdio.h>
  2.  
  3. int vocTot=0, i;
  4. char caracter;
  5. char clave[10];
  6.  
  7. void main()
  8. {
  9.  for(i=1; i<=10; i++)
  10.  {
  11.    printf("Ingrese el caracter %d: ", i);
  12.    scanf("%c", &clave[i]);
  13.  
  14.    caracter=clave[i];
  15.  
  16.    switch (caracter)
  17.    {
  18.    case 'a': vocTot++;
  19.      break;
  20.    case 'A': vocTot++;
  21.      break;
  22.    case 'e': vocTot++;
  23.      break;
  24.    case 'E': vocTot++;
  25.      break;
  26.    case 'i': vocTot++;
  27.      break;
  28.    case 'I': vocTot++;
  29.      break;
  30.    case 'o': vocTot++;
  31.      break;
  32.    case 'O': vocTot++;
  33.      break;
  34.    case 'u': vocTot++;
  35.      break;
  36.    case 'U': vocTot++;
  37.      break;
  38.    }
  39.  }
  40.  
  41.  printf("El numero de vocales es: %d", vocTot);
  42.  
  43. }


« Última modificación: 12 Junio 2019, 04:10 am por UsuarioZ » En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Ayuda FOR
« Respuesta #1 en: 12 Junio 2019, 04:23 am »

Es porque los ENTER se están quedando en el buffer y entonces se asignan al siguiente valor.
Pongamos que quieres introducir la palabra "hola", lo que estás guardando es: "h" + ENTER + "o" + ENTER + "l" + ENTER + "a"


En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
UsuarioZ

Desconectado Desconectado

Mensajes: 64


Ver Perfil
Re: Ayuda FOR
« Respuesta #2 en: 12 Junio 2019, 04:36 am »

Es porque los ENTER se están quedando en el buffer y entonces se asignan al siguiente valor.
Pongamos que quieres introducir la palabra "hola", lo que estás guardando es: "h" + ENTER + "o" + ENTER + "l" + ENTER + "a"

Gracias, cambie esta linea para solucionarlo:

Código
  1.    scanf("%c", &clave[i]);

por

Código
  1.    scanf("%s", &clave[i]);
« Última modificación: 12 Junio 2019, 04:38 am por UsuarioZ » En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Ayuda FOR
« Respuesta #3 en: 12 Junio 2019, 04:56 am »

No sé si te obligan a usar un <for> y <scanf()> pero no es recomendable usar <scanf()> para esto. Lo suyo sería guardar toda la palabra de una sola vez con <fgets()> y después recorrer la palabra sumando las vocales.

Aparte, esa implementación es un poco ineficiente. Te recomendaría cosas como:
  • Convertir el caracter a minúscula/mayúscula siempre.
  • Unificar los case.
Código
  1. switch(tolower(clave[i])){
  2.    case 'a': case 'e': case 'i': case 'o': case 'u':
  3.        vocales++;
  4.        break;
  5. }
En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines