Autor
|
Tema: Ayuda! (Leído 1,580 veces)
|
bazokajoe
Desconectado
Mensajes: 2
|
|
Ayuda!
« en: 24 Octubre 2011, 23:29 pm » |
|
Me piden que implemente un programa que pida una frase y un carácter por teclado, pidiendo dicho carácter hasta que sea correcto (ósea qué pertenezca al alfabeto castellano comprendido en la tabla ASCII 850) y que cuente la veces que dicho carácter aparece en la frase introducida. El programa debe calcular también, si dicho número resultante se trata de un número primo o no.
Ejemplo:
Frase introducida:
“El viaje no termina jamás. Solo los viajeros terminan. Y también ellos pueden subsistir en memoria, en recuerdo, en narración... El objetivo de un viaje es solo el inicio de otro viaje.”
Carácter introducido:
“j”
Salida:
-Existe 6 js en la frase introducida
-6, No es un número primo. que errores cometo? #include <stdio.h> #include <stdlib.h> int main(void) { char frase[100]; char caracter; int i, contador, longitud, aux=2; printf("Introduzca una frase.\n"); longitud=strleng(frase); //Resto el valor nulo que crea gets() longitud-=1; do { //Controlo el caracter pedido printf("Introduzca un caracter:\n"); } while ((caracter<A && caracter>Z) && (caracter <a && caracter>z)); for (i=0; i<longitud; i++) //Comparo y cuento los caracteres que esten repetidos { if (frase[i]= frase[longitud]) contador++; else printf("El caracter %c no se encuentra en la frase", caracter ); } while (contador%aux!=0) //inicialmente aux=2 por lo tanto busco un numero que su resto sea aux+=1; //diferente de 0 y pueda dividirse por el mismo. if (contador==aux){ printf("Existe %i %c en la frase introducida.\n", contador , caracter ); printf("El %i, es primo.\n", contador ); } else { printf("Existe %i %c en la frase.\n", contador , caracter ); //Salida final printf("El %i, no es primo.\n", contador ); } return EXIT_SUCCESS; }
|
|
« Última modificación: 24 Octubre 2011, 23:30 pm por madpitbull_99 »
|
En línea
|
|
|
|
do-while
Desconectado
Mensajes: 1.276
¿Habra que sacarla de paseo?
|
|
Re: Ayuda!
« Respuesta #1 en: 24 Octubre 2011, 23:42 pm » |
|
¡Buenas! El planteamiento del programa no es que este mal (bueno, si lo esta, pero la idea mas o menos la tienes). Lo que te falla es la logica de las condiciones. Repasala a ver si te das cuenta de tus errores. Piensa en cada una de las condiciones que has puesto, observa bien si realmente se pueden cumplir alguna vez o si pueden fallar en algun caso. Y otra cosa, no utilices gets, utiliza fgets (pasandole stdin como fichero del que debera tomar los datos): http://www.cplusplus.com/reference/clibrary/cstdio/fgets/¡Saludos!
|
|
|
En línea
|
- Doctor, confundo los números y los colores. - Vaya marrón. - ¿Marrón? ¡Por el culo te la hinco!
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
|
Re: Ayuda!
« Respuesta #2 en: 25 Octubre 2011, 05:20 am » |
|
Aparte de lo ya comentado el nombre correcto de la funcion es "strlen" y antes de utilizarla debes incluir el encabezado <string.h>.
Y para conocer si un caracter es alfabetico puedes utilizar la funcion isalpha, antes de cualquier uso de esta debes incluir el encabezado <ctype.h>.
Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
bazokajoe
Desconectado
Mensajes: 2
|
|
Re: Ayuda!
« Respuesta #3 en: 25 Octubre 2011, 08:55 am » |
|
Así es como al fina ha quedado el codigo.Gracias por los consejos, es la primera vez que veo un lenguaje de programacion en mi vida y los profesores tampoco ayudan mucho. Saludos.
#include <stdio.h> #include <stdlib.h> #include <string.h>
int main(void) { char frase[200], caracter; int i, contador, longitud, aux=2;
printf("Introduzca una frase:\n"); gets (frase);
longitud=strleng(frase); //Resto el valor nulo que crea gets() longitud-=1;
do { //Controlo el caracter pedido printf("Introduzca un caracter a buscar:\n"); scanf("%c", caracter);
} while ((caracter<A && caracter>Z) || (caracter<a && caracter>z));
for (i=0; i<longitud; i++) /*Comparo y cuento los caracteres que esten repetidos*/ { if (caracter== frase) contador++; else printf("El caracter %c no se encuentra en la frase", caracter); }
while (contador%aux!=0) /*Para determinar si un numero es primo o no, lo que debemos hacer es dividir dicho numero por todos lo menores que el de forma que si el resto de todas estas divisiones es 0 excepto cuando dividimos por si mismo y por la unidad.Puesto que todos los numeros son divisinles por la unidad esta posibilidad la excluimos*/ aux+=1; if (contador==aux){ printf("Existe %i %c en la frase introducida.\n", contador, caracter);//Salida final printf("El %i, es primo.\n", contador); } else { printf("Existe %i %c en la frase.\n", contador, caracter); //Salida final printf("El %i, no es primo.\n", contador); }
return EXIT_SUCCESS; }
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Amigos necesito ayuda con un background para un logo de una web ayuda.
Diseño Gráfico
|
™Carlos.®
|
2
|
3,463
|
14 Agosto 2004, 00:23 am
por ™Carlos.®
|
|
|
[Ayuda] Necesito ayuda para crear un buen video uso AF y Flash.
Diseño Gráfico
|
XXXXXX
|
1
|
5,545
|
11 Noviembre 2009, 00:17 am
por Sub_Cero
|
|
|
Ayuda por davor ayuda os ruego ayuda XD (SOLUCIONADO)
Hardware
|
XxRekcahlExX
|
6
|
10,646
|
24 Mayo 2010, 00:56 am
por Aprendiz-Oscuro
|
|
|
AYUDA -.- ahora no entro más en 4chan (tengo una duda, ayuda por favor)
Foro Libre
|
Draklit
|
6
|
8,844
|
15 Octubre 2010, 03:14 am
por Draklit
|
|
|
sist lince indumentaria ayuda ayuda!!!!!!!!!! problemon que hice en le trabajo
Software
|
paola03
|
1
|
4,983
|
11 Marzo 2011, 01:09 am
por charola42
|
|