Autor
|
Tema: Creacion Matriz nxn Automatica (Leído 7,312 veces)
|
miguelc++
Desconectado
Mensajes: 5
some mistakes get made
|
Hola, necesito ayuda para poder entender que es lo que estoy haciendo mal. Tengo que hacer que mi programa imprima automaticamente una matriz nxn de la dimension que el usuario introduzca. No obstante, no logro que me de mas de un numero por fila. Adjunto código: //proyecto #include <stdio.h>
int main(){
int i, j, filas;
printf("Ingrese diemension de matriz: "); scanf("%i",&filas);
for(i = 1;i <= filas;i++) {
printf("%02d ", i);
printf("\n"); }
return 0; }
Se supone debo lograr que me imprima algo como esto: Estoy muy seguro que en lo que estoy fallando son los for.
|
|
|
En línea
|
|
|
|
BloodSharp
Desconectado
Mensajes: 812
¡ Hiperfoco !
|
Estoy muy seguro que en lo que estoy fallando son los for. El código está casi completo, solamente te falta un for por columnas y una condición que verifique si está en la diagonal invertida... Como medida adicional para evitar que la matriz no sea cuadrada podrías meter un do while extra al principio. EDIT: Acabé de probarlo tu código con las recomendaciones de arriba y funciona correctamente B#
|
|
« Última modificación: 21 Noviembre 2021, 23:33 pm por BloodSharp »
|
En línea
|
|
|
|
miguelc++
Desconectado
Mensajes: 5
some mistakes get made
|
Hola, logré arreglar lo de las columnas y ya me da las matrices de la dimensión que quiera. ¿Cómo implemento lo de la diagonal para que me de asteriscos(**)? //proyecto #include <stdio.h>
int main(){
int i, j, filas;
printf("Ingrese dimension de matriz: "); scanf("%i",&filas);
for(i=1;i<=filas;i++) { for(j=1;j<=filas;j++)
printf("%02d ", j);
printf("\n"); }
return 0; }
|
|
« Última modificación: 22 Noviembre 2021, 19:58 pm por miguelc++ »
|
En línea
|
|
|
|
BloodSharp
Desconectado
Mensajes: 812
¡ Hiperfoco !
|
Hola, logré arreglar lo de las columnas y ya me da las matrices de la dimensión que quiera. ¿Cómo implemento lo de la diagonal para que me de asteriscos(**)? Bien, añadiste el for que te mencioné para las columnas ahora solo falta la condición ( if else ) que verifica si el elemento de la matriz pertenece a la diagonal principal, prestá mucha atención a la tabla de 5x5 que mostraste hace un momento, si te fijás bien hay una operación matemática elemental que se cumple si encaja justo en la posición de la tabla por filas y columnas y dicha operación equivale a la dimensión total de las filas o columnas ingresadas al principio, vale aclarar que a la operación matemática se le tiene que restar 1 porque el primer elemento de la matriz comienzan con el valor 01... B#
|
|
« Última modificación: 22 Noviembre 2021, 21:57 pm por BloodSharp »
|
En línea
|
|
|
|
miguelc++
Desconectado
Mensajes: 5
some mistakes get made
|
Lo he intentado se todas las formas que se me ocurre, pero todavía no consigo entender bien.
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Sabiendo que los asteriscos van se colocan en (hablamos de una matriz de 5x5): Fila 1, columna 5; Fila 2, columna 4; Fila 3, columna 3; Fila 4, columna 2; Fila 5, columna 1.
¿Qué podrían tener en común los pares (5, 1) (4, 2) (3, 3) (2, 4) (1, 5)?
Esa respuesta es la que necesita el if para dibujar el número o los asteriscos.
|
|
|
En línea
|
|
|
|
fzp
Desconectado
Mensajes: 130
|
MAFUS y BloodSharp: creo que vuestras indicaciones van en el sentido de relacionar -calcular- la posicion de los asteriscos (para el if de la j) a partir de n y de i; con una fórmula ciertamente sencilla. Pero quizá eso despiste un poco a miguelc++.
Otra forma de verlo (quizá más asequible a miguelc++) sería no buscar la posición de los astericos en función del valor de n y de i, sino con una variable distinta: esa variable empieza en n para i=1 y disminuye en 1 en cada fila (cada ciclo de i). Es menos elegante quizá pero vale igual. ---------------------------------------------------------------------- También creo que la forma de representar la matriz no es adecuada al concepto matemático de los elementos de una matriz. Lo suyo sería imprimir las parejas i-j que representarían los subíndices de los distintos elementos de la matriz. Aunque claro si lo que le piden es que lo haga de esa manera, pues es lo que hay. Supongo que el ejercicio está pensado para lo de los asteriscos mayormente.
|
|
« Última modificación: 23 Noviembre 2021, 11:20 am por fzp »
|
En línea
|
|
|
|
miguelc++
Desconectado
Mensajes: 5
some mistakes get made
|
Siento que no puedo lograr lo que se me pidió. Mi cabeza no logra comprender sus explicaciones para la implementación de esos asteriscos. Igualmente agradezco por el tiempo que se tomaron en responder mis dudas.
Como pudieron notar no soy muy avanzado en programación, pero se hace lo que se puede . Intentaré buscar ejercicios mas básicos y acordes a mi nivel para entonces ir subiendo el nivel progresivamente.
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Te lo explico para el ejemplo de 5x5. Dije: ¿Qué podrían tener en común los pares (5, 1) (4, 2) (3, 3) (2, 4) (1, 5)? Si te das cuenta: 5+1 = 6 4+2 = 6 3+3 = 6 2+4 = 6 1+5 = 6 Sabiendo que tu vas desde 1 hasta 5, siendo este caso filas = 5 en tu if, dentro del for de j debería poner: if(i+j == filas+1) { printf("** "); } else { printf("%02d ", j); }
|
|
|
En línea
|
|
|
|
BloodSharp
Desconectado
Mensajes: 812
¡ Hiperfoco !
|
Ya que MAFUS puso su solución muestro mi solución al problema, mi solución también controla que la dimensión ingresada sea una matriz cuadrada como puede verse en la imagen: #include <stdio.h> int main() { int i, j, filas, columnas; do { printf("Ingrese la dimension de matriz: "); scanf("%i*%i", &filas , &columnas ); } while (filas != columnas); for(i = 1; i <= filas; i++) { for(j = 1; j <= columnas; j++) { if ((i + j -1) == columnas) else } } return 0; }
B#
|
|
« Última modificación: 24 Noviembre 2021, 15:56 pm por BloodSharp »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Duda - Buscar si existe una matriz dentro de otra matriz
Programación Visual Basic
|
EddyW
|
2
|
6,014
|
14 Agosto 2010, 06:18 am
por EddyW
|
|
|
MATRIZ que imprima como una matriz en forma de cuadrado... ayudaaaaa!! help
Programación C/C++
|
oscarpy
|
3
|
8,791
|
9 Abril 2012, 16:23 pm
por Xandrete
|
|
|
Juego con matriz dinámica en c++, función para rrecorrer matriz
Programación C/C++
|
jajaimess
|
1
|
3,881
|
21 Junio 2014, 05:21 am
por .:UND3R:.
|
|
|
Punteros creacion de matriz
Programación C/C++
|
Ja_90
|
5
|
2,922
|
8 Septiembre 2015, 14:08 pm
por someRandomCode
|
|
|
Creacion de matriz
Programación C/C++
|
nonokario
|
5
|
2,906
|
8 Marzo 2018, 23:42 pm
por nonokario
|
|