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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda en C++ (Conversion de Caracteres)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda en C++ (Conversion de Caracteres)  (Leído 5,567 veces)
DragonShiryu

Desconectado Desconectado

Mensajes: 7



Ver Perfil
Ayuda en C++ (Conversion de Caracteres)
« en: 14 Septiembre 2011, 23:30 pm »

Bueno quiero que me ayuden con esto... Veran, es que tiene que hacer que al meter texto en minusculas, lo convierta en letras mayusculas. Ya hice el menu y todo pero no lo hace... Por fas ayudenme se los agradecere mucho.

CODIGO:

#include<stdio.h>
#include<conio.h>
void conversion (void);
void MinToMay(char string[]);
main()
{
int i,NO;
for(i=0; i<80;i++)
{
textcolor(WHITE);
gotoxy(i,1);printf("=");
gotoxy(i,23);printf("=");

}
textcolor(WHITE);
gotoxy(30,5); cprintf("Bienvenidos(as)");
gotoxy(10,7); cprintf("Programa de conversion de letras de Mayus. a Minus. o Viceversa");
gotoxy(30,21);cprintf("Presione una tecla para continuar...");
getch();
clrscr();
textbackground(RED);
clrscr();
do
{
clrscr();
gotoxy(30,4);printf("MENU DE OPCIONES\n\n");
printf(" 1.- Iniciar conversion.\n");
printf(" 2.- Salir.");
printf("\n\n\n\n Presione una opcion...");
scanf("%d",&NO);
switch(NO)
{
case 1: clrscr();
conversion();
getch();
break;
default:
printf(" Opcion Inconrrecta, presione una tecla para volver a intentarlo...");
getch();
clrscr();
}
}while(NO!=2);
printf("\t\t\t\n\n\n\n\n ADIOS!! :D");
getch();
}

void conversion (void)
{
char cadena[80];
clrscr();
printf("\n\t\t\tCONVERSION DE PALABRA(S)\n");
printf("\n\nPor favor, Introduzca la(s) palabra(s) que desea convertir y presione ENTER: \n");
printf("\n ");
gets(cadena);
MinToMay(cadena);
printf ("En Mayusculas: %s \n", cadena);
getch();
}


void MinToMay(char string[])
{
int i=0;
int desp='a'-'A';
for (i=0;string!='\0';++i)
{
if(string>='a'&&string<='z')
{
string=string-desp;
}
}
}
getch();

Este codigo es de C++ (Borland)


En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.969


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Ayuda en C++ (Conversion de Caracteres)
« Respuesta #1 en: 14 Septiembre 2011, 23:40 pm »

¿Hace falta usar tantas funciones no standard de Borland? getch lo cambie por getchar que es standard y las otras pavadas de la consola las borre.

conversion y MinToMay parecen funcionar bien, podes probarlas desde un main que solo llame a conversion.

Puede que tu problema se deba a la basura que deja en el buffer scanf, podes probar hacer esto:

Código:
char cad[80];
fgets(cad, sizeof(cad), stdin);
sscanf(cad, "%d",&NO);


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
LearningSpanishProgrammer

Desconectado Desconectado

Mensajes: 67


Ver Perfil
Re: Ayuda en C++ (Conversion de Caracteres)
« Respuesta #2 en: 14 Septiembre 2011, 23:44 pm »

Yo recomendiendo usar

 isupper - http://www.cplusplus.com/reference/clibrary/cctype/isupper/
 islower - http://www.cplusplus.com/reference/clibrary/cctype/islower/

y también

 tolower
 toupper

Su codigo sería más fácil de leer
En línea

Estoy aprendiendo español, y tu estas aprendiendo programación
El_Java

Desconectado Desconectado

Mensajes: 144



Ver Perfil WWW
Re: Ayuda en C++ (Conversion de Caracteres)
« Respuesta #3 en: 14 Septiembre 2011, 23:46 pm »

Yo recomendiendo usar

 isupper - http://www.cplusplus.com/reference/clibrary/cctype/isupper/
 islower - http://www.cplusplus.com/reference/clibrary/cctype/islower/

y también

 tolower
 toupper

Su codigo sería más fácil de leer

Lleva toda la razon, y para convertir de minusculas a mayusculas basta con que le restes 32 (en caso de que no sepas usar toupper)
Código
  1. char g = 'a';
  2. g -= 32; //Ahora g es igual a 'A'
  3. cout << g;
  4.  

http://www.elcodigoascii.com.ar/
« Última modificación: 14 Septiembre 2011, 23:51 pm por El_Java » En línea

DragonShiryu

Desconectado Desconectado

Mensajes: 7



Ver Perfil
Re: Ayuda en C++ (Conversion de Caracteres)
« Respuesta #4 en: 14 Septiembre 2011, 23:55 pm »

Gracias a todos pero me enrede con las 3 respuestas. Yo antes sabia de esto porque estaba estudiando programacion hace año y medio, pero se me olvido ;D.

Compañero @Eternal Idol me podrias poner el codigo ya corregido en un mensaje. Asi se me hace mas facil encontrar el error ya que como me lo pones no le entiendo casi, porfas..

Saludos y Gracias a todos!!
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.969


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Ayuda en C++ (Conversion de Caracteres)
« Respuesta #5 en: 15 Septiembre 2011, 00:22 am »

Donde vos tenes esto:

Código:
scanf("%d",&NO);

Cambialo por esto:
Código:
char cad[80];
fgets(cad, sizeof(cad), stdin);
sscanf(cad, "%d",&NO);

Y antes podes probar el main asi:
Código:
main()
{
conversion();
}
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
DragonShiryu

Desconectado Desconectado

Mensajes: 7



Ver Perfil
Re: Ayuda en C++ (Conversion de Caracteres)
« Respuesta #6 en: 15 Septiembre 2011, 00:36 am »

Mil gracias @Eternal Idol  ;-)

Pero ahora, no quiero fastidiar mas pero me podrias explicar que quiere todo, es decir:
Código:
char cad[80];
fgets(cad, sizeof(cad), stdin);
sscanf(cad, "%d",&NO);

Te lo agradeceria mucho..
Saludos!
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.969


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Ayuda en C++ (Conversion de Caracteres)
« Respuesta #7 en: 15 Septiembre 2011, 00:45 am »

En lugar de usar scanf que es una funcion conocida por dejar basura en el buffer y dar problemas despues cuando lees (como te pasaba en tu programa) usamos la alternativa limpia y segura fgets con stdin + sscanf.

fgets lee una linea (casi igual que gets) pero permite especificar el tamaño de la cadena y con sscanf en lugar de trabajar con stdin trabajas con la cadena que leiste antes con fgets.

http://www.cplusplus.com/reference/clibrary/cstdio/fgets/

http://www.cplusplus.com/reference/clibrary/cstdio/sscanf/
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con conversion de video
Multimedia
AYP11 4 2,630 Último mensaje 29 Noviembre 2007, 12:38 pm
por Songoku
{Resuelto} [Batch Help!] ayuda con conversion de caracteres.. « 1 2 »
Scripting
xassiz_ 13 9,489 Último mensaje 18 Septiembre 2009, 21:35 pm
por Guerrerohgp
Ayuda con conversion a preg_match
Desarrollo Web
Alex_bro 3 3,003 Último mensaje 30 Octubre 2011, 23:46 pm
por Alex_bro
Ayuda! Concatenar carácteres en C
Programación C/C++
ARCAME 1 2,453 Último mensaje 2 Diciembre 2012, 20:50 pm
por durasno
Ayuda con la conversión de notación infija a postfija
Programación C/C++
GominaTilted 1 3,478 Último mensaje 18 Abril 2019, 07:36 am
por Beginner Web
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines