Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: Alanis22 en 4 Febrero 2013, 18:20 PM

Título: Alguien me podria ayudar!
Publicado por: Alanis22 en 4 Febrero 2013, 18:20 PM
Recien empiezo en esto de c++ y me pidieron hacer un programa para convertir a mayusculas o viceversa!! y esto es lo k llevo si alguien pudiera orientarme se lo agradeceria!!!

#include "stdafx.h"
#include "ctype.h"


int main()

{
   char S[20];

   int a;

   printf("Escribe tu nombre:\n");

   scanf("%str",&a);

                         
   printf("%s\n","tu nombre es:", tolower S[a]); 

   getchar();
   getchar();
   return 0;
}

Título: Re: Alguien me podria ayudar!
Publicado por: naderST en 4 Febrero 2013, 18:25 PM
Antes de lanzarte a programar debes aprender bien el lenguaje. Tienes la idea, tolower te permite convertir un caracter a minúscula, entonces lo que debes ir haciendo es recorrer la cadena e ir convirtiendo cada caracter a minúscula o mayúscula según sea el caso.
Título: Re: Alguien me podria ayudar!
Publicado por: DickGumshoe en 5 Febrero 2013, 01:16 AM
Hola.

En un principio, te faltan bibliotecas, como stdio.h, que es necesaria para las funciones de entrada y salida (printf y scanf, en tu caso). También te sobra stdafx.h.

Con scanf se supone que quieres pedir el nombre, pero no sé qué has hecho...

Cuando se pasa el nombre de mayúsculas a minúsculas con tolower(), se debe hacer de carácter en carácter. Por eso creamos un contador, de forma que con el bucle for, podamos recorrer la cadena S, pasando todos los caracteres a minúsculas (para ello es recomendable conocer la longitud de la cadena son strlen(), para no hacer cálculos innecesarios).

He editado el código con los fallos que has tenido.

#include <stdio.h> //Para usar printf() y scanf()
#include <string.h> //Para contar el número de caracteres del nombre
#include <ctype.h> //Para usar tolower()


int main()

{
  char S[20];

  int longitud, i;

  printf("Escribe tu nombre:\n");
  gets(S); //El nombre es una cadena de caracteres, no un número entero como habías puesto en tu código
   longitud = strlen(S); //Longitud contiene el número de caracteres de S.

  printf("%s\n","Tu nombre en minúsculas es: ");

  for(i=0; i<longitud; i++) printf("%c", tolower(S[i])); //tolower() pasa UN único carácter de mayúsculas a minúsculas. Por eso es necesario recorrer la cadena S entera utilizando dicha función.

  getchar();
  return 0;
}


Ahora, intenta pasar una cadena de minúsculas a mayúsculas, que también te lo pide el ejercicio (para ello, es necesaria la función toupper() ).

Cualquier duda, no dudes en preguntar.  ;)

PD: Lo que estás aprendiendo es C, no C++.  ;)
Título: Re: Alguien me podria ayudar!
Publicado por: 0xDani en 5 Febrero 2013, 15:44 PM
@DickGumshoe, creo que en esta linea:

for(i=0; i<longitud; i++) printf("%c", tolower(S));

Te ha faltado poner el indice de S en la funcion tolower()  ;)
Título: Re: Alguien me podria ayudar!
Publicado por: DickGumshoe en 5 Febrero 2013, 17:28 PM
Cita de: 0xDani en  5 Febrero 2013, 15:44 PM
@DickGumshoe, creo que en esta linea:

for(i=0; i<longitud; i++) printf("%c", tolower(S));

Te ha faltado poner el indice de S en la funcion tolower()  ;)


Sí, es verdad. Lo puse, pero al hacer una prueba, creo que copié el código equivocado... Gracias por corregir, ahora lo edito.  ;)
Título: Re: Alguien me podria ayudar!
Publicado por: leosansan en 5 Febrero 2013, 21:56 PM
También puedes ahorrarte el uso de la librería string y la variable longitud usando el for así:
Código (cpp) [Seleccionar]
for(i=0; S[i]!='\0'; i++)
Saluditos!.