Alguien me podria ayudar!

Iniciado por Alanis22, 4 Febrero 2013, 18:20 PM

0 Miembros y 1 Visitante están viendo este tema.

Alanis22

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;
}


naderST

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.

DickGumshoe

#2
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++.  ;)

0xDani

@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()  ;)
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

DickGumshoe

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.  ;)

leosansan

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!.