Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: pablotron en 13 de Enero 2016, 16:50
-
He adquirido el libro de Fundamentos de Programación de La Editorial Universitaria Ramon Areces, y acabo de encontrarme dos problemas que no sé resolver, en la sección de ejercicios no resueltos
El primero de ellos parece sencillo pero no doy con la clave: se trata de realizar (en C+-, que es una variante de C++ y C, específica para el aprendizaje), un programa para calcular el máximo común divisor de dos números enteros
Para el otro ejercicio es necesaria la sentencia FOR, (la cual al parecer no he entendido del todo bien en la teoría): Se trata de imprimir un rombo de asteriscos, tomando como dato el número de asteriscos que tiene el lado (también en C+-)
El rombo debe ser algo parecido a esto (para lado = 4):
*
* *
* * *
* * * *
* * *
* *
*
con espacios en blanco entre un asterisco y otro
Muchas gracias por vuestra atención!!!
-
Hola Pablo, el ejercicio del rombo parece sencillo pero no lo es. Tiene una lógica que no es fácil de sacar (puede llevar incluso varias horas la primera vez que se hace). De hecho, te aseguro que muchos programadores tardarían en sacarlo.
Puedes guiarte por este código, tratar de ir razonando y haciendo pruebas hasta que lo saques por tí mismo:
#include <stdio.h>
int main() {
int NFILAS = 4;
int NCOLUMNAS = 4;
int n, c, k, space = 1;
//n es el numero de filas del rombo
n = NFILAS;
space = n - 1;
for (k = 1; k <= n; k++) {
for (c = 1; c <= space; c++)
printf(" ");
space--;
for (c = 1; c <= 2*k-1; c++)
if (c%2 ==0) {
printf("*");
} else {
printf(" ");
}
printf("\n");
}
space = 1;
for (k = 1; k <= n - 1; k++) {
for (c = 1; c <= space; c++)
printf(" ");
space++;
for (c = 1 ; c <= 2*(n-k)-1; c++)
if (c%2 ==0) {
printf("*");
} else {
printf(" ");
}
printf("\n");
}
return 0;
}
Nota: para el otro ejercicio abre mejor otro tema en el foro, de ese modo se mantiene cada tema por separado y mantenemos mejor ordenados los foros.
Saludos