Viernes 8 de Noviembre de 2024, 19:41
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Duda con la interepretación de este programa.
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Duda con la interepretación de este programa. (Leído 1019 veces)
Cosmos009
Nuevo Miembro
Mensajes: 19
Duda con la interepretación de este programa.
«
en:
Lunes 9 de Agosto de 2010, 17:53 »
0
Repasando este programa no me he quedado convencido de si lo interpreto correctamente:
#include <stdio.h>
#include <conio.h>
#define LONG_MAX 81
void MinusculasMayusculas(char str[]);
main()
{
char cadena[LONG_MAX];
int i = 0;
printf("Introducir una cadena: ");
gets(cadena);
MinusculasMayusculas(cadena);//Aqui main invoca a MinusculasMayusculas y le pasa el argumento 'cadena'.
printf("%sn", cadena);
getch();
}
void MinusculasMayusculas(char str[]) //Aqui la matriz str copia el argumento cadena
{
int i = 0, desp = 'a' - 'A';
for( i = 0; str
!= ' '; ++i) //se situa en la cadena letra 0, si es distinto de n aumentara a letra 1 , letra 2, etc...
if(str
>= 'a' && str
<= 'z') // Si introducimos la 'a' se cumple y seguimos
str
= str
- desp; // el valor actual de i sera 'a' que será = 'a' - 32 = 65 = 'A' transformando así una a una la letras almacenadas
}
Esto es lo que entiendo, os agradeceria que me corrijais, si no es así como va el programa.Tengo dudas sobretodo con el "for".
No quedo muy convencido de esa interpretación
Gracias a todos.
}
Tweet
ProfesorX
Moderador
Mensajes: 796
Nacionalidad:
Re: Duda con la interepretación de este programa.
«
Respuesta #1 en:
Lunes 9 de Agosto de 2010, 19:17 »
0
Casi correcto.
1. void MinusculasMayusculas(char str[]) //Aqui la matriz str copia el argumento cadena
En realidad no se copìa cadena, sino que trabajas
directamente
con el contenido de la variable cadena, ya que En C y C++, los arreglos se pasan por
referencia
y no por valor. O dicho en otras palabras, los arreglos en realidad funcionan como punteros, y como tales, se pasan direcciones, no se copian valores.
2. for( i = 0; str
!= ' '; ++i) //se situa en la cadena letra 0, si es distinto de n aumentara a letra 1 , letra 2, etc...
En realidad inicializa el indice en cero, que seria equivalente a ponerte en la letra cero de la cadena como dices, pero como condicion de salida del ciclo for utiliza str
!= ' ' (el caracter ' ' en realidad es el caracter nulo, no el 'n' que es el salto de linea) ya que las cadenas en C y C++ terminan en nulo (' '), por lo tanto preguntar si la letra i de la cadena es nulo, es la manera mas eficiente de verificar que llegamos al fin de la cadena.
3. if(str
>= 'a' && str
<= 'z') // Si introducimos la 'a' se cumple y seguimos
Aqui preguntamos si la letra i de la cadena se encuentra entre el rango 'a'..'z', es decir, si es una letra minuscula, y de ser minuscula, se entra a la condicion para volverla mayuscula.
Con eso espero que te quede mas claro
Saludos
NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================
Cosmos009
Nuevo Miembro
Mensajes: 19
Re: Duda con la interepretación de este programa.
«
Respuesta #2 en:
Lunes 9 de Agosto de 2010, 19:46 »
0
Gracias ProfesorX.Si, así me quedo mucho más claro con esas puntualizaciones, muy bien.
Te estoy agradecido, ahora si me quedo convencido.
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Duda con la interepretación de este programa.