Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Pandemia en 07 de Junio 2016, 21:30
-
Hola dejo una posible solución al ejercicio CU00524F.
EJERCICIO
Crea un programa donde se cumplan estas indicaciones. Declara cuatro variables que serán arrays de caracteres. Establece los siguientes contenidos. Para la primera variable: <<El antílope está hecho añicos>>. Para la segunda variable: <<Hoy llueve>>. Para la tercera variable: <<El cañón es corto>>. Para la cuarta variable: <<aprenderaprogramar>>. Muestra el contenido de las variables por pantalla, cada contenido en una línea y antecediendo la primera variable de una tabulación, la segunda de dos tabulaciones y así sucesivamente. De este modo, el efecto será el de un texto “escalonado”.
#include <stdio.h>
#include <stdlib.h>
int main()
{
char texto1[30] = "El antílope está hecho añicos";
char texto2[15] = "Hoy llueve";
char texto3[20] = "El cañón es corto";
char texto4[25] = "aprenderaprogramar";
printf("\n\tEl ant%clope est%c hecho a%cicos\n", 161,160,164,texto1);
printf("\t\tHoy llueve\n", texto2);
printf("\t\t\tEl ca%c%cn es corto\n", 164,162,texto3);
printf("\t\t\t\taprenderaprogramar\n", texto4);
return 0;
}
Saludos y como siempre gracias por vuestro tiempo.....
-
Hola Pandemia.
No estás mostrando las variables, estás mostrando un texto que es el mismo que contienen las variables declaradas, tendrías que mostrar algo así:
printf("\n\t%s\n", texto1);
y así con las demás variables.
Saludos. ;D
-
Buenas Pedro me estoy volviendo loco con lo de las variables y no hay manera, a ver si me puedes echar un cable... te dejo el código nuevo que ahora no me funciona nada
Gracias por la ayuda
#include <stdio.h>
#include <stdlib.h>
int main()
{
char á = \z01; é = \z02; í = \z03; ó = \z04; ú = \z05; ñ = \z06; Ñ = \z07;
char á = 160; é = 130; í = 161; ó = 162; ú = 163; ñ = 164; Ñ = 165;
char texto1[30] = "<<El ant\z03lope est\z01 hecho a\z03icos>>";
char texto2[15] = "<<Hoy llueve>>";
char texto3[20] = "<<El ca\z06\z04n es corto>>";
char texto4[25] = "<<aprenderaprogramar>>";
printf("\n\t%s\n", texto1);
printf("\t\t%s\n", texto2);
printf("\t\t\t%s\n", texto3);
printf("\t\t\t\t%s\n", texto4);
printf("\n\t<<El ant%clope est%c hecho a%cicos>>\n", 161,160,164,texto1);
printf("\t\t<<Hoy llueve>>\n", texto2);
printf("\t\t\t<<El ca%c%cn es corto>>\n", 164,162,texto3);
printf("\t\t\t\<<taprenderaprogramar>>\n\n", texto4);
return 0;
}
Gracias de nuevo por la ayuda que siempre me aportas y el tiempo que dedicas, gracias.
Saludos. :)
-
Buenas.
Las dos primeras líneas del main(), no son correctas, lo primero porque no está permitido palabras con tilde como nombres de variables, además los valores que les das, no corresponden con las letras a las que quieres representar. El ejercicio es más fácil de como te lo plantes.
En cuanto a las tildes, si usas código ascii hexadecimal sería:
á –> \xA0
é –> \x82
í –> \xA1
ó –> \xA2
ú –> \xA3
ñ –> \xA4
Ñ –> \xA5
Y el código ascii decimal es:
á -> 160
é -> 130
í -> 161
ó -> 162
ú -> 163
ñ -> 164
El código hexadecimal puedes usarlo de la siguiente forma:
char texto1 [50] = "<<El ant\xA1lope est\xA0 hecho a\xA4icos>>";
y el decimal, de la forma que tu lo utilizaste.
printf("\t<<El ant%clope est%c hecho a%cicos>>\n", 161, 160, 164);
Así que quitando las dos primeras líneas que te comenté y cambiando el valor de las variables usando el código apropiado y también quitando el nombre de las variables texto1, texto2, texto3 y texto4 en los cuatro ultimas sentencias printf(), debido a que no les estás dando uso, puesto que no las estás imprimiendo el código ya te quedaría correcto.
Si quieres puedes echar un vistazo a esta solución del ejercicio.
https://www.aprenderaprogramar.com/foros/index.php?topic=4584.msg18773#msg18773
Saludos.
-
Buenas Pedro ya me has aclarado la duda y he cambiado el código aunque en hexadecimal me hace alguna cosilla rara como repetir una frase prácticamente hace lo que pide el ejercicio te dejo el código para que lo veas.
#include <stdio.h>
#include <stdlib.h>
int main()
{
// á –> \xA0; é –> \x82; í –> \xA1; ó –> \xA2; ú –> \xA3; ñ –> \xA4; Ñ –> \xA5;
// á -> 160; é -> 130; í -> 161; ó -> 162; ú -> 163; ñ -> 164; Ñ -> 165;
char texto1[30] = "<<El ant\xA1lope est\xA0 hecho a\xA4icos>>";
char texto2[15] = "<<Hoy llueve>>";
char texto3[20] = "<<El ca\xA4\xA2n es corto>>";
char texto4[25] = "<<aprenderaprogramar>>";
printf("\n\t%s\n", texto1);
printf("\t\t%s\n", texto2);
printf("\t\t\t%s\n", texto3);
printf("\t\t\t\t%s\n", texto4);
printf("\n\t<<El ant%clope est%c hecho a%cicos>>\n", 161,160,164);
printf("\t\t<<Hoy llueve>>\n");
printf("\t\t\t<<El ca%c%cn es corto>>\n", 164,162);
printf("\t\t\t\t<<aprenderaprogramar>>\n\n");
return 0;
}
Saludos y gracias por la ayuda.... ;)
-
Buenas.
Las cosas raras que te suceden es porque texto1 y texto3 los has declarado demasiado pequeños.
si en vez de texto1[30] pones texto1[40] y lo mismo con texto3, ya te saldrá todo correcto.
Saludos.
-
Ok, tienes razón no había caído en contar los signos, letras, espacios y demás para poner el índice del array.
Gracias por la corrección y ayuda, como siempre me sacas de todas las dudas, te lo agradezco.
Saludos. ;)