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: DotarSojat en 19 de Octubre 2015, 01:37
-
Buenas, necesito construir una matriz NxN cuyos elementos son números enteros, construya un programa que imprima los valores de las diagonales secundarias de la matriz según la distribución en forma de rombo y espacios
(http://i.imgur.com/DhFymVL.png)
de ese modo
#include <iostream>
using namespace std;
int main () {
int mat[4][4];
int cont=1;
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
mat[j][i]=cont++;
}
}
int k=0,r=0;
for(int i=0; i<7; i++){
r=(i/4);
for(int j=k; j>=0; j--){
cout << mat[r][j]<<" ";
r++;
}
cout << endl;
k++;
k-=k/4;
}
cin.get();
return 0;
}
Eso es lo que llevo de código pero me quede estancado,
-
Hola!
Puedes tomar como punto de partida este programa que dibuja un rombo como el que necesitas con asteriscos, lo que te faltaría es introducir la gestión de índices para que en lugar de asteriscos te imprima los números deseados:
#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;
}
Saludos!
-
disculpa mi ignorancia, me podrías explicar la funcionalidad de los for de esos for con esas condiciones es que no la entiendo
-
Hola! esos for lo que hacen es dibujar la forma de diamante o rombo, lo que contienen es la lógica para ir introduciendo asteriscos o espacios de manera que se dibuje un diamante o rombo de cierta manera.
Hay dos for, uno dibuja parte superior del diamante y otro la parte inferior, si ejecutas este código ves lo que hace cada for:
#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");
}
printf("Esto es lo que ha dibujado el primer for\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");
}
printf("Esto es lo que ha dibujado el segundo for\n");
return 0;
}
Saludos!