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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


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

Desconectado Desconectado

Mensajes: 27


Ver Perfil
ejercicio abecegrama C error
« en: 11 Enero 2017, 23:43 pm »

Hola en este ejercicio tengo que decir si es un abecegrama (contenga todas las letras del abecedario solo una vez) y en caso contrario que diga cuantas veces se repite cada letra, contador debe ser una cadena.
Una ayudita por favor no lo consigo..
EDITO: creo que ya esta
Código
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include <ctype.h>
  4. int main (){
  5. int cadenacont[28],i,j;
  6. char cadena[500];
  7. char cadenabc[] ="abcdefghijklmnñopqrstuvwxyz";
  8.  
  9. printf("Introduzca cadena\n");
  10. scanf("%s",cadena);
  11. for(i = 0; cadena[i]!='\0'; i++)
  12.      cadena[i] = tolower(cadena[i]);
  13.  
  14. for (j=0; j<28; j++){
  15. cadenacont[j] = 0; }//contador a 0
  16.  
  17. for(i=0; cadena[i]!='\0';i++){//sumar caracteres dos bucles anidados
  18.  
  19. for(j=0; j<27; j++) {
  20.  
  21. if(cadena[i]==cadenabc[j]) {
  22.  
  23. cadenacont[j]++;break;
  24. }
  25. }
  26.   }
  27. for(j=0;j<=27;j++){
  28. if(cadenacont[j]==1){}
  29. else{break;}
  30. }//comprobar si es abecegrama
  31. if(j>=27){
  32. printf("abecegrama");
  33. }
  34. else{
  35. for(i=0; i<27; i++){
  36. printf("%c = %d\n",cadenabc[i],cadenacont[i]);}
  37.  
  38. }
  39. getch();
  40. }
  41.  


« Última modificación: 12 Enero 2017, 06:47 am por juanpalomo098 » En línea

4dr14n31t0r

Desconectado Desconectado

Mensajes: 85



Ver Perfil
Re: ejercicio abecegrama C error
« Respuesta #1 en: 12 Enero 2017, 21:04 pm »

Para empezar, lo tienes mal identado. Asi es casi imposible saber donde empieza y termina un bucle o un if...
Ademas, creo que no estaria de mal añadir algunos comentarios para aclarar lo que haces en el codigo.
Código
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include <ctype.h>
  4. int main (){
  5. //cadenacont[28] es un array que contiene el numero de apariciones de cada letra
  6. int cadenacont[28],i,j;
  7.  
  8. //cadena[500] es el array que contiene la cadena que queremos comprobar
  9. //su valor lo introducimos por teclado
  10. char cadena[500];
  11.  
  12. //cadenabc[] es un array que contiene todas las letras del abecedario
  13. char cadenabc[] ="abcdefghijklmnñopqrstuvwxyz";
  14.  
  15. printf("Introduzca cadena\n");
  16. scanf("%s",cadena);
  17.  
  18. //ponemos en minuscula todas las letras que hemos introducido por teclado
  19. for(i = 0; cadena[i]!='\0'; i++)
  20. cadena[i] = tolower(cadena[i]);
  21.  
  22. for (j=0; j<28; j++){
  23. cadenacont[j] = 0;
  24. }//contador a 0
  25.  
  26. //cada vez que se encuentra una letra del abecedario incrementamos el numero de apariciones del mismo
  27. for(i=0; cadena[i]!='\0';i++){//sumar caracteres dos bucles anidados
  28. for(j=0; j<27; j++){
  29. if(cadena[i]==cadenabc[j]){
  30. cadenacont[j]++;
  31. break;
  32. }
  33. }
  34. }
  35.  
  36. //comprobamos que el numero de apariciones de cada letra es 1
  37. for(j=0;j<=27;j++){
  38. if(cadenacont[j]==1){
  39.  
  40. }
  41. else{
  42. break;
  43. }
  44. }//comprobar si es abecegrama
  45.  
  46. if(j>=27){
  47. printf("abecegrama");
  48. }
  49. else{
  50. for(i=0; i<27; i++){
  51. printf("%c = %d\n",cadenabc[i],cadenacont[i]);
  52. }
  53. }
  54. getch();
  55. }
  56.  
De todos modos, creo que deberia de funcionar, aunque desde luego hay muchas muy mejores formas de hacer este ejercicio.
Si te da algun error, describelo. Di que es lo que te pasa. ¿Sale alguna salida extraña por pantalla? ¿O simplemente te dice, por ejemplo, que son abecedegramas algunos strings que en realidad no lo son (o viceversa)?
Aunque no creo que tenga mucho que ver, el metodo main() retorna un int, asi que al final tienes que poner return 0;


« Última modificación: 12 Enero 2017, 21:08 pm por 4dr14n31t0r » En línea

juanpalomo098

Desconectado Desconectado

Mensajes: 27


Ver Perfil
Re: ejercicio abecegrama C error
« Respuesta #2 en: 12 Enero 2017, 21:37 pm »

En primer lugar muchas gracias por contestar.
Al final lo conseguí y edite.
Funciona correctamente, el único problema que veo es que contiene una ñ, ademas de que habrá formas mucho mejores de hacerlo
PD: Me equivoque creo se llama pangrama perfecto
« Última modificación: 13 Enero 2017, 02:05 am por juanpalomo098 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
me aparece un error en este ejercicio
Programación C/C++
terry2602 4 2,377 Último mensaje 30 Mayo 2012, 05:24 am
por durasno
Error en ejercicio de clase
Programación C/C++
foreground 3 2,739 Último mensaje 14 Octubre 2012, 17:07 pm
por bemone
[C] Error en código de ejercicio
Programación C/C++
audiogalaxy. 8 5,866 Último mensaje 29 Marzo 2013, 19:53 pm
por amchacon
Error Ejercicio JButton, no encuentro el error[Resuleto, se puede cerrar]
Java
MinW 0 1,783 Último mensaje 27 Diciembre 2013, 17:59 pm
por MinW
Error en ejercicio de exponencial
Programación C/C++
andoporto 1 1,531 Último mensaje 4 Febrero 2015, 16:43 pm
por eferion
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines