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


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [DUDA] Contador de vocales. Medio-Solucionado xD
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [DUDA] Contador de vocales. Medio-Solucionado xD  (Leído 8,951 veces)
pitka

Desconectado Desconectado

Mensajes: 25



Ver Perfil
[DUDA] Contador de vocales. Medio-Solucionado xD
« en: 29 Noviembre 2010, 13:37 pm »

Buenas, llevo un tiempo leyendo el foro, y me parece espectacular y decidi registrarme ya que veo que tienen la disposicion de ayudar a personas que no saben como yo, de antemano gracias!

Entrando al tema mi duda es la siguiente, estoy aprendiendo c/c++, he estado tratando de hacer un programa que cuente las vocales de un texto ingresado por teclado lo cual he logrado, pero no puedo hacer que finalice el texto al introducir uncaracter especifico (ejemplo un "@" o ".") para finalizar sin tener que darle enter, ademas de que tambien me gustaria usar un ciclo para repetir todo mientras el usuario quiera, pero se me embasuran las variables y ni idea de como limpiarlas de nuevo, estuve leyendo aqui en busca de una funcion llama fflush, pero segun lei no es lo que necesito http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html
lo que lei en ese enlace me ayudo, porque me habian dicho que necesitaba usar "gets", buen esa es mi duda ya me extendi, mucho esto es lo que llevo de codigo
por cierto me ayude con unos codigos que encontre en internet pero ninguno me dijo lo que necesitaba por eso me anime a preguntar despues de que busque  :D



 modificacion

he conseguido hacer un ciclo, y solucione lo del "embasuramiento del buffer" aunque aun no tengo muy claros los conceptos, lo arregle usando esto.. que encontre en muchas partes  #define BORRA_BUFFER while( getchar() != '\n'); y luego agregue BORRA_BUFFER al final del ciclo antes de evaluar la condicion, y se soluciona, pero me surgio una duda con respecto a esa macros.. y es que hace exactamente?? gracias..


« Última modificación: 30 Noviembre 2010, 12:25 pm por Novlucker » En línea

Leber


Desconectado Desconectado

Mensajes: 338


"Fracta, non verba"


Ver Perfil WWW
Re: [DUDA] contador de vocales
« Respuesta #1 en: 30 Noviembre 2010, 01:08 am »

Para repetir cuando el usuario quiera, tendras que hacer un bucle, con un do-while te bastaria. Comparas su entrada com por ejemplo un exit.

Código:
do {
             
         }while(strcmp(cadena_usuario, "exit") != 0)




En línea

"Solo los tontos carecen de preucupaciones." Johann Wolfgang Goethe
pitka

Desconectado Desconectado

Mensajes: 25



Ver Perfil
Re: [DUDA] Medio-solucionado
« Respuesta #2 en: 30 Noviembre 2010, 01:14 am »

Para repetir cuando el usuario quiera, tendras que hacer un bucle, con un do-while te bastaria. Comparas su entrada com por ejemplo un exit.

Código:
do {
            
         }while(strcmp(cadena_usuario, "exit") != 0)




Lo hice asi, y agregue esa funcion que encontre para borrar el buffer pero me gustaria saber exactamente como lo hace. y tambien quisiera saber como terminar el texto al presionar una tecla.. supongamos que luego de que comienzo a escribir cuando el programa lo pide "era un dia muy... @" y que el programa despues de que introduzca @ me diga las vocales son tales y tales blablabla..  sin necesidad de presionar enter si me explico? gracias de antemano

« Última modificación: 30 Noviembre 2010, 02:50 am por pitka » En línea

Beakman

Desconectado Desconectado

Mensajes: 190



Ver Perfil WWW
Re: [DUDA] Medio-Solucionado xD
« Respuesta #3 en: 30 Noviembre 2010, 03:25 am »

Para hacer lo de las teclas tenes que usar alguna librería.
Como ncurses.

Aca hay un ejemplo para reconocer una tecla.

En windows tambien se puede hacer con la conio. :¬¬
« Última modificación: 30 Noviembre 2010, 19:50 pm por qily » En línea

pitka

Desconectado Desconectado

Mensajes: 25



Ver Perfil
Re: [DUDA] Contador de vocales. Medio-Solucionado xD
« Respuesta #4 en: 1 Diciembre 2010, 00:19 am »

Dejo el codigo terminado, aunque como dije, falta la parte de hacer que deje de leer el codigo al presionar una tecla determinada. Cualquier aclaracion que me quieran hacer respecto al code pues seran muy bien recibidas..!todo sea por aprender
Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define BORRA_BUFFER while( getchar() != '\n');
  4.  
  5. int main()
  6. {
  7.       char texto[100];
  8.       int vocales[5];  
  9.       int i, total=0;  
  10.       char resp;
  11.       do
  12.       {
  13.  
  14.       for(i=0; i<5; i++)  
  15.            vocales[i] = 0;
  16.       system("cls");      
  17.       printf("Introduce el texto: ");
  18.  
  19.       fgets(texto, 100, stdin);  
  20.  
  21.  
  22.       for(i=0; i<strlen(texto); i++)
  23.       {
  24.  
  25.            if(toupper(texto[i])=='A')  
  26.              vocales[0]++;
  27.            else if(toupper(texto[i])=='E')
  28.              vocales[1]++;
  29.            else if(toupper(texto[i])=='I')
  30.              vocales[2]++;
  31.            else if(toupper(texto[i])=='O')
  32.              vocales[3]++;
  33.            else if(toupper(texto[i])=='U')
  34.              vocales[4]++;
  35.       }
  36.  
  37.              // Calcula el total de vocales
  38.  
  39.       for(i=0; i<5; i++)
  40.           total += vocales[i];
  41.  
  42.       if(total==0)
  43.         {
  44.             system("cls");          
  45.             printf("No hay vocales");
  46.         }
  47.           else
  48.           {
  49.              system("cls");
  50.              printf("\n____________________");
  51.              printf("\nCantidad de vocales: %d\n\n", total);
  52.              printf("A --> %d\n", vocales[0]);
  53.              printf("E --> %d\n", vocales[1]);
  54.              printf("I --> %d\n", vocales[2]);
  55.              printf("O --> %d\n", vocales[3]);
  56.              printf("U --> %d\n", vocales[4]);
  57.              printf("%s", texto);
  58.            }
  59.         getch();
  60.        printf("\n\nSalir? S/N ");
  61.        scanf("%s", &resp);
  62.        BORRA_BUFFER
  63.        } while (toupper(resp)!='S');
  64.  
  65.        return 0;
  66. }
  67.  
En línea

xassiz~


Desconectado Desconectado

Mensajes: 457



Ver Perfil WWW
Re: [DUDA] Contador de vocales. Medio-Solucionado xD
« Respuesta #5 en: 1 Diciembre 2010, 14:47 pm »

Para qué ese define? xD
En línea

pitka

Desconectado Desconectado

Mensajes: 25



Ver Perfil
Re: [DUDA] Contador de vocales. Medio-Solucionado xD
« Respuesta #6 en: 2 Diciembre 2010, 00:36 am »

Para qué ese define? xD

Ni idea =X, aunque creo que limpia el buffer del teclado antes de que vuelva a dar otra vuelta, antes de que lo tuviera no funcionaba y despues que lo coloque se arreglo, es una duda que tengo planteada seria fabuloso si alguien me dijera exactamente que hace..!! aunque sirva >:D
« Última modificación: 2 Diciembre 2010, 00:39 am por pitka » En línea

Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: [DUDA] Contador de vocales. Medio-Solucionado xD
« Respuesta #7 en: 2 Diciembre 2010, 09:58 am »

lo que hace es ir cogiendo caracteres del buffer hasta que se encuentra un \n, o salto de linea.

Pongamos que tu quieres leer sólo un carácter --> 'a'. Pero al ponerlo en la consola y darle al teclado, en realidad se pasa como "a\n" por el enter que presionas al poner el dato. En este caso, limpiaría el '\n' que queda en el buffer.

Otro caso sería por ejemplo que quieras leer sólo un carácter y te pongan algo tipo "blablablabla". Tu programa leería 'b' y luego te quedaría en el buffer "lablablabla\n". Mismo procedimiento que antes, y se traga hasta el '\n'.

El tema de hacerlo por macro... bueno, ¿vagancia? Es lo mismo que si te declaras una función (esto tendría un ligero aumento del coste) o pones while(getchar()!='\n'); cuando quieras limpiar el buffer que es lo que hace la macro.
En línea

xassiz~


Desconectado Desconectado

Mensajes: 457



Ver Perfil WWW
Re: [DUDA] Contador de vocales. Medio-Solucionado xD
« Respuesta #8 en: 2 Diciembre 2010, 15:17 pm »

No no, a lo que me refiero es que no es rentable poner un DEFINE para utilizarlo solo una vez además, que te cuesta poner el while directamente? xD Sería mas legible
En línea

EddyC

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: [DUDA] Contador de vocales. Medio-Solucionado xD
« Respuesta #9 en: 4 Diciembre 2010, 18:18 pm »

Que tal , te doy una variante usando punteros a cadena q es mucho mas corta , te devuelve la cantidad de vocales en el texto , lo que pusiste de la "@" no lo entendi bien , si te referis a que termine de buscar vocales cuando encuentra una es muy simple y si lo necesitas te muestro como seria la modificacion , saludos .

Código:
#include <stdio.h>
#include <conio.h>

int contar_vocales(char *);

void main()
{char cad[500];
printf("Ingrese el texto a contar vocales : ");
gets(cad);  
printf("La cantidad de Vocales en el texto es %d",contar_vocales(cad));
getch();
}


int contar_vocales(char *cad)
{int cont=0;
 char *aux=cad;   //creas un puntero auxiliar con la direccion del comienzo de cad
 while(*aux)          // entra mientras el contenido de la cadena != de '\0'
   {if(*aux=='a'||*aux=='e'||*aux=='i'||*aux=='o'||*aux=='u') // podes agregar mayus
             cont++;
    aux++;              
   }
return cont;

}


« Última modificación: 4 Diciembre 2010, 18:20 pm por EddyC » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
contador de personas por medio infrarrojo
Electrónica
sebastianduque 1 8,258 Último mensaje 7 Octubre 2008, 00:04 am
por skapunky
Hacer un contador de error con bat [SOLUCIONADO]
Scripting
Meta 3 9,447 Último mensaje 4 Junio 2009, 05:02 am
por leogtz
contador de renglones [solucionado]
Scripting
flony 2 4,055 Último mensaje 7 Mayo 2010, 23:08 pm
por flony
Programa con acciones: contador de vocales y consonantes
Programación C/C++
street_21 3 33,066 Último mensaje 16 Enero 2012, 14:42 pm
por rir3760
Ingresar una oracion, toma cada palabra y contar sus vocales(Solucionado)
.NET (C#, VB.NET, ASP)
01munrra 2 3,114 Último mensaje 30 Septiembre 2015, 03:46 am
por 01munrra
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines