Autor
|
Tema: ejercicio en C (Leído 3,129 veces)
|
howaboutno
Desconectado
Mensajes: 38
|
hola! para el siguiente problema: llevo dandole vueltas y me he ido liando...lo que tengo es esto pero no me funciona, ya no se que hacer... alguien me puede sacar del lio que tengo? Leer una cadena de hasta 80 caracteres y pasarla en función de una variable de opción (menu) a mayúsculas ó a minúsculas e imprimir la cadena resultante #include <stdio.h> #include <string.h> #include <ctype.h> int menu(void); void mayus(char*); void minus(char*); int main() { char frase[80]; printf("Introduce una frase \n"); fflush(stdout); fflush(stdin); gets(frase); menu(); mayus(frase); minus(frase); return 0; } //fin del main int menu(void) { int opcion; printf("1.Pasar a mayusculas\n"); fflush(stdout); printf("2.Pasar a minúsculas\n"); fflush(stdout); do { printf("Introduce opción: \n"); fflush(stdout); scanf("%d",&opcion); }while(opcion<1 || opcion>2); return opcion; } //fin del menu void mayus(char *frase) { int t; char *p; p=frase; for(t=0;frase[t];t++) { frase[t]=toupper(frase[t]); p++; } printf("%s",p); fflush(stdout); } //fin de funcion mayusculas void minus(char *frase) { int t; for(t=0;t<strlen(frase);t++) { frase[t]=tolower(frase[t]); printf("%s",frase); fflush(stdout); } } //fin de funcion minusculas
|
|
« Última modificación: 29 Octubre 2012, 21:07 pm por howaboutno »
|
En línea
|
|
|
|
Caster
|
Buenas! Bueno supongo que en el codigo que quieres compilar incluiras las librerias, aunque aqui no las muestras, sin ellas no pretendas que te compile el codigo: #include <stdio.h> #include <string.h>
Depues, en la funcion mayus(), utilizas la variable t, pero la tienes como un comentario, aasi que realmente no esta declarada: //int t;
Y despues otros consejos: -Evita el uso de gets() -Evita el uso de fflush(stdin) Mirate este post y lo veras con mas detalle: http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.htmlOtro fallo, elijas la opcion que elijas siempre se ejecutara primero la funcion mayus() y despues minus() porque si que haces al ususario escoger la opcion, pero despues no esta programador para que se ejecute segun el susuario elija, no se si me explico bien. Saludos PD: Edita tu post y pon tu codigo entre etiquetas geshi, para que sea mas facil de leer
|
|
|
En línea
|
|
|
|
howaboutno
Desconectado
Mensajes: 38
|
Buenas! Bueno supongo que en el codigo que quieres compilar incluiras las librerias, aunque aqui no las muestras, sin ellas no pretendas que te compile el codigo: #include <stdio.h> #include <string.h>
Depues, en la funcion mayus(), utilizas la variable t, pero la tienes como un comentario, aasi que realmente no esta declarada: //int t;
Y despues otros consejos: -Evita el uso de gets() -Evita el uso de fflush(stdin) Mirate este post y lo veras con mas detalle: http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.htmlOtro fallo, elijas la opcion que elijas siempre se ejecutara primero la funcion mayus() y despues minus() porque si que haces al ususario escoger la opcion, pero despues no esta programador para que se ejecute segun el susuario elija, no se si me explico bien. Saludos PD: Edita tu post y pon tu codigo entre etiquetas geshi, para que sea mas facil de leer ya, lo del int t; ha sido fallo mio pero no por eso no funciona, entre tantos cambios que he hecho lo habré liado mas de la cuenta. Si, en eso pensaba yo, en lo del menú que se ejecutan aparte, pero como lo hago para que se ejecute en funcion de la opcion elegida?
|
|
|
En línea
|
|
|
|
Caster
|
Ya se, tambien hay algunos fallos en los bucles para transformar la cadena, tu primero leete el post que te deje mas arriba, editalo con los consejos que se dan, y vuelve a postear el codigo y yo te ayudo. Para que se ejecute una funcion segun lo que elijas se neceita una estructura condicional, como puede ser un if - else, o un switch por ejemplo.
Saludos
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
Tienes que pasar a la función menú la variable opción por referencia, para luego usar el valor adecuado en la función main. Por otro lado en los for puedes poner la condición terminar de leer frase al llegar al carácter nulo='\0'. Más o menos te quedaría así:#include <stdio.h> #include <string.h> int menu(int *opcion); void mayus(char*); void minus(char*); int main() { char frase[80]; int opcion=0,op; printf("Introduce una frase \n"); gets(frase); op=menu(&opcion); if (op==1) mayus(frase); if (op==2) minus(frase); return 0; } int menu(int *opcion) { printf("1.Pasar a mayusculas\n"); printf("2.Pasar a minusculas\n"); do { printf("Introduce opcion: \n"); scanf("%d",&opcion); }while(opcion<1 || opcion>2); return opcion; } void mayus(char *frase) { int t; for(t=0;frase[t]!='\0';t++) frase[t]=toupper(frase[t]); printf("%s",frase); } void minus(char *frase) { int t; for(t=0;frase[t]!='\0';t++) frase[t]=tolower(frase[t]); printf("%s",frase); }
Saludos!.
|
|
|
En línea
|
|
|
|
howaboutno
Desconectado
Mensajes: 38
|
Ya se, tambien hay algunos fallos en los bucles para transformar la cadena, tu primero leete el post que te deje mas arriba, editalo con los consejos que se dan, y vuelve a postear el codigo y yo te ayudo. Para que se ejecute una funcion segun lo que elijas se neceita una estructura condicional, como puede ser un if - else, o un switch por ejemplo.
Saludos
muchas gracias, ya lo he leído pero es que la profesora que me da el curso de programación nos obliga a poner el gets, el fflush...
|
|
|
En línea
|
|
|
|
howaboutno
Desconectado
Mensajes: 38
|
Tienes que pasar a la función menú la variable opción por referencia, para luego usar el valor adecuado en la función main. Por otro lado en los for puedes poner la condición terminar de leer frase al llegar al carácter nulo='\0'. Más o menos te quedaría así:#include <stdio.h> #include <string.h> int menu(int *opcion); void mayus(char*); void minus(char*); int main() { char frase[80]; int opcion=0,op; printf("Introduce una frase \n"); gets(frase); op=menu(&opcion); if (op==1) mayus(frase); if (op==2) minus(frase); return 0; } int menu(int *opcion) { printf("1.Pasar a mayusculas\n"); printf("2.Pasar a minusculas\n"); do { printf("Introduce opcion: \n"); scanf("%d",&opcion); }while(opcion<1 || opcion>2); return opcion; } void mayus(char *frase) { int t; for(t=0;frase[t]!='\0';t++) frase[t]=toupper(frase[t]); printf("%s",frase); } void minus(char *frase) { int t; for(t=0;frase[t]!='\0';t++) frase[t]=tolower(frase[t]); printf("%s",frase); }
Saludos!. muchas gracias!! ya he visto mis fallos que son bastantes, aun me queda por aprender, pero dicen que de los fallos se aprende
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
muchas gracias!! ya he visto mis fallos que son bastantes, aun me queda por aprender, pero dicen que de los fallos se aprende Muy bien, eso es aptitud positiva. Saludos!.
|
|
|
En línea
|
|
|
|
howaboutno
Desconectado
Mensajes: 38
|
bueno, lo he retocado y me ha quedado asi #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <string.h>
char menu(void); void mayus(char []); void minus(char []); int main(void) { char frase[80]; int opc;
printf("Introduce una cadena \n"); fflush(stdout); fflush(stdin); gets(frase);
printf("Elige una opción: \n"); fflush(stdout); opc=menu(); if(opc=='1') mayus(frase); if (opc=='2') minus(frase);
return 0; }
char menu(void)
{ char opcion;
do { printf("1.Pasara a mayúsculas \n"); printf("2. Pasar a minusuclas \n"); fflush(stdout); scanf("%c",&opcion); } while(strchr("12",opcion)==NULL); return opcion; } //fin del menu
void mayus(char frase [])
{ int t;
for(t=0;t<strlen(frase);t++) { if(islower(frase[t]) !=0) { frase[t]=toupper(frase[t]); } } printf("%s",frase); fflush(stdout); } //fin de mayus
void minus(char frase [])
{ int t;
for(t=0;t<strlen(frase);t++) { if(isupper(frase[t]) !=0) { frase[t]=tolower(frase[t]); } } printf("%s",frase); fflush(stdout); } //fin de minus
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
ejercicio 506
Ejercicios
|
ieman
|
0
|
3,941
|
13 Mayo 2005, 17:42 pm
por ieman
|
|
|
Ejercicio en C
Ejercicios
|
ߣ@î§
|
3
|
10,855
|
4 Septiembre 2005, 06:31 am
por ߣ@î§
|
|
|
Help Ejercicio 122 en C
Ejercicios
|
ANELKAOS
|
4
|
5,189
|
15 Septiembre 2005, 23:41 pm
por Arcangel_RZ
|
|
|
[Ejercicio] Aca tienen un ejercicio para practicar
« 1 2 3 »
Programación Visual Basic
|
Dreamaker
|
20
|
16,655
|
5 Septiembre 2010, 02:57 am
por TGa.
|
|
|
ejercicio conclase pag 70 ejercicio 1
Programación C/C++
|
flony
|
2
|
4,596
|
17 Octubre 2010, 12:16 pm
por Akai
|
|