Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Fer995 en 30 Octubre 2010, 02:28 am



Título: ayuda con ejercicio sencillo
Publicado por: Fer995 en 30 Octubre 2010, 02:28 am
he hecho un ejercicio que lee una frase y luego te pide un caracter que comprueba en que posiciones de la frase esta (si esta en la frase). luego te pregunta si quieres buscar otro caracter diferente..

tengo un problema, y es que cuando el usuario escribe mas de un caracter por error, los distintos scanf leen caracter por caracter todos los que se introdujeron (ni siquiera poniendo \n lo solucione)
la unica solucion que se me ocurrre usando scanf es usar fflush.. pero no me dejan usar esa funcion.

que cosas cambiariais para que funcionase mejor o que le quiariais / añadiriais???

gracias!

Código:

#include <stdio.h>
#include <stdlib.h>
#define MAX_LONG 100

void main()
{

char c[MAX_LONG], cb, c2[MAX_LONG], cond, encont; int i;

printf("Introduce una frase:\n\n");
fgets(c,99,stdin);

do
{

cond = 'N';
printf("\nIntroduce caracter a buscar: ");
scanf("\n%c",&cb);

for(i=0, encont = 'N';(i<MAX_LONG) && (c[i] !='\0');i++)
{
if (c[i] == cb) {c2[i] = 'V'; encont = 'S';}
else {c2[i] = 'F';}
}

if (encont == 'S')
printf("Se ha encontrado el caracter buscado (%c) en las posiciones de la cadena: ", cb);
else
printf("No se ha encontrado el caracter buscado (%c)", cb);

for(i=0;(i<MAX_LONG) && (c[i] != '\0');i++) {if (c2[i] == 'V') printf("%d, ", i);}


printf("\n\nDesea buscar otro caracter??(Contesta S o N): ");
scanf("\n%c", &cond);

}while((cond == 'S')||(cond == 's'));



printf("\n");
system("pause");
}



Título: Re: ayuda con ejercicio sencillo
Publicado por: Darioxhcx en 30 Octubre 2010, 03:30 am
master
yo estoy al pedo y lo hice asi
Código:
#include <stdio.h>
#include <string.h>
main () {
     char frase[100],ca[2],opcion[1];
     int w,x,y,z=0;
     printf("escribi tu frase: ");
     gets(frase);
     volver:
     printf("\ncaracter a buscar: ");
     gets(ca);
     w=strlen(ca)-1;
                     if (w>=1) {
                     printf("se excedio el numero de caracteres a buscar...");
                     goto volver;
                                 }
     y=strlen(frase)-1;
     for (x=0;x<=y;x++){
         if (frase[x]==ca[0]){
                              printf("\nel caracter fue encontrado en la posicion %d\n",x+1);
                              z++;
                             }
         }
         if (z == 0) { printf("\nel caracter no fue encontrado\n"); }
         printf("\n\ndesea buscar otro caracter S/N: ");
         gets(opcion);
         if((opcion[0]=='s') || (opcion[0]=='S')) goto volver;
         printf("\npresione una tecla para salir ");
         getchar();
         }
no uso funciones , por que no se :P es que solo ley muy poco xD
y uso goto , capas te sirve para darte una idea
saludos


Título: Re: ayuda con ejercicio sencillo
Publicado por: Fer995 en 30 Octubre 2010, 16:21 pm
gracias por tu ayuda!

no se me ocurrio usar strlen para ver la longitud!! muchas gracias!