C/Visual C - Dar la vuelta a una cadena

 
Vista:
sin imagen de perfil

Dar la vuelta a una cadena

Publicado por Juan (2 intervenciones) el 05/03/2013 22:26:56
Hola:
Tengo que hacer un programa en C que me pase una cadena a mayúsculas y que me la invierta.
Tengo hecho lo siguiente pero no me lo invierte.
¿Qué tengo mal?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<stdio.h>
#include<string.h>
int main()
{
    char cad[100],cad2[100];
    int i;
    printf("Introduce la cadena : ");
    gets(cad);
    printf ("La cadena original es: %s \n ",cad);
    for (i=0;i<strlen(cad);i++)
        {
            cad[i]=toupper(cad[i]);
        }
    printf ("La cadena en mayusculas es: %s \n",cad);
 
   for (i<strlen(cad);i=0;i--)
        {
            strcpy(cad,cad2);
        }
    printf ("La cadena al reves es: %s \n",cad2);
 
    return 0;
}

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Respuesta

Publicado por Marcelo Perdomo (3 intervenciones) el 06/03/2013 00:50:14
A ver prueba con este código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <string.h>
int main() {
	char cad[100], cad2[100];
	int i=0;
	int j=0;
 
	printf("Introduce la cadena: ");
	gets(cad);
 
	printf("La cadena original es: %s \n", cad);
 
	j = strlen(cad)-1;
 
	for (i=0; i<strlen(cad); i++) {
		cad2[j] = toupper(cad[i]);
		j --;
	}
 
	printf("Cadena de salida: %s \n", cad2);
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Respuesta

Publicado por Marcelo Perdomo (3 intervenciones) el 06/03/2013 02:26:24
A ver prueba con este código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <string.h>
int main() {
	char cad[100], cad2[100];
	int i=0;
	int j=0;
 
	printf("Introduce la cadena: ");
	gets(cad);
 
	printf("La cadena original es: %s \n", cad);
 
	j = strlen(cad)-1;
 
	for (i=0; i<strlen(cad); i++) {
		cad2[j] = toupper(cad[i]);
		j --;
	}
 
	printf("Cadena de salida: %s \n", cad2);
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Respuesta

Publicado por Juan (2 intervenciones) el 06/03/2013 09:08:33
Hola:
Gracias por la respuesta.
Hay una cosa que se me escapa
¿qué hace la siguiente parte de código?
1
2
3
4
j = strlen(cad)-1;
	for (i=0; i<strlen(cad); i++) {
		cad2[j] = toupper(cad[i]);
		j --;


Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Respuesta

Publicado por Marcelo Perdomo (3 intervenciones) el 16/03/2013 21:11:01
j = strlen(cad)-1; // Tamaño de la cadena - 1 => indice posicion donde colocar el caracter

cad2[j] = toupper(cad[i]); // Coloco en el indice j de cad2, el caracter cad[i] en mayúsculas toupper()

j --; // Voy al siguiente indice donde colocar el caracter, como es invertido, lo decremento.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar