Autor
|
Tema: Ayuda S.O.S Programacion en C Arreglos!! (Leído 3,565 veces)
|
smdiegoarmando
Desconectado
Mensajes: 12
|
Muy buenas noches Foro ahora es que estoy empezando en el entorno C y necesito que me ayuden con el siguiente programa: Programa en C que determine si una matriz, cuyos datos son ingresados por el usuario es o no cuadrado magico dado lo siguiente: 8 1 6 =15 3 5 7 =15 4 9 2 =15 = = = 15 15 15 Por lo tanto la matriz es cuadrado magico!! ________________________________________________________ Necesito ayuda este tema de arreglo se me hace muy complicado
|
|
|
En línea
|
|
|
|
naderST
|
Qué problema tienes?
|
|
|
En línea
|
|
|
|
smdiegoarmando
Desconectado
Mensajes: 12
|
Sinceramente no se como desenvolver el programa
|
|
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
Sinceramente no se como desenvolver el programa
¿No sabes resolverlo manualmente? madre es una suma y tal cual lo harías manual se hace en C solo que con "coordenadas"... Mira EstoDulces Lunas!¡.
|
|
|
En línea
|
The Dark Shadow is my passion.
|
|
|
smdiegoarmando
Desconectado
Mensajes: 12
|
¿No sabes resolverlo manualmente? madre es una suma y tal cual lo harías manual se hace en C solo que con "coordenadas"... Mira EstoDulces Lunas!¡. Cierto pero no se que metodologia usar en el entorno C
|
|
|
En línea
|
|
|
|
naderST
|
Básicamente debes pedir al usuario las dimensiones de la matriz, recorrer dicha matriz pidiéndole al usuario el valor de cada elemento, sumar los elementos de cada fila y columna respectivamente y luego validar que todas las sumas sean iguales (puedes utilizar arreglos para almacenar la suma, tanto de las filas como de las columnas).
EDIT:
Además creo que debes validar la suma de la diagonal principal y que la matriz sea cuadrada.
|
|
« Última modificación: 4 Febrero 2013, 04:05 am por naderST »
|
En línea
|
|
|
|
TopoJunior
Desconectado
Mensajes: 40
|
Bueno, llevo casi una hora haciendo esto, que no sabía como hacerlo.. Es una matriz de 2 filas, y 2 columnas obvio... Lo siento por no hacerla de más columnas... Pero era ya un codigo de la hostia, si me permitís la expresión xD. Es para que te hagas una idea... Yo no sabía ni lo que eran las matrices, tengo 12 años. Las busqué en internet y bueno me puse a " programarlo " Me han dicho, que es mucho más fácil con vectores, asique, mirate la estructura, entiendela y hazlo con vectores:D #include <stdio.h> /* Como saber si una matriz es perfecta */ main() { int filas; int columnas; int eleccion1; int primernumero, segundonumero; int primernumero1, segundonumero1; int primernumero2, segundonumero2; int primernumero3, segundonumero3; printf("Inserta el numero de filas.\n"); scanf("%d", &filas); printf("Inserta el numero de columnas.\n"); scanf("%d", &columnas); if(filas == columnas) { printf("Vamos bien...\n"); } else { printf("Para que sea perfecta, tiene que tener los mismos numeros de filas y columnas\n"); } printf("Escribe 2 porque es de dos filas y dos columnas.\n"); scanf("%d", &eleccion1); switch(eleccion1) { case 2: printf("Introduce, seguidos, los numeros de la primera fila.\n"); scanf("%d %d", &primernumero, &segundonumero); printf("Introduce, seguidos los numeros de la segunda fila\n"); scanf("%d %d", &primernumero1, &segundonumero1); printf("Introduce, seguidos los numeros de la primera columna.\n"); scanf("%d %d", &primernumero2 , &segundonumero2); printf("Introduce, seguidos los numeros de la segunda columna.\n"); scanf("%d %d", &primernumero3, &segundonumero3); if(primernumero + segundonumero == primernumero1 + segundonumero1) { if(primernumero2 + segundonumero2 == primernumero3 + segundonumero3) { printf("Es una matriz magica\n"); } } else { printf("No es una matriz magica."); } break; } while(1); }
|
|
|
En línea
|
|
|
|
amchacon
Desconectado
Mensajes: 1.211
|
Un detalle: if(primernumero + segundonumero == primernumero1 + segundonumero1) { if(primernumero2 + segundonumero2 == primernumero3 + segundonumero3)
Tienes que ponerlo entre parentesis las sumas para que te coja el valor entero. Además puedes concatenar 2 ifs con un &&: if((primernumero + segundonumero) == (primernumero1 + (segundonumero1) && (primernumero2 + segundonumero2) == (primernumero3 + segundonumero3))
Y en cuanto al código, es muy bonito el intento (se nota que entiendes algunos conceptos) pero te faltan algunos otros... Yo que tu me miraría estos videotutoriales: http://minidosis.org/C++/Las mejoras que se le podrían meter al código son varias, como hacerlo más general y usar matrices y vectores. Esta es mi versión: #include <stdio.h> #include <stdlib.h> // Averiguar si una matriz es magica int ComprobarMagica(int** Matriz,unsigned int Tamanyo); int main() { unsigned int Tamanyo; // He puesto unsigned porque no vamos a usar valores negativos printf("Inserte el tamanyo de la matriz: "); int Matriz[Tamanyo][Tamanyo]; // Creamos una matriz con el tamanyo que nos han dado for (unsigned int j = 0; j < Tamanyo;j++) for (unsigned int i = 0; i < Tamanyo;i++) { printf("\n Inserte un valor para la posicion (%d,%d)",i ,j ); scanf("%d",Matriz [i ][j ]); } if (ComprobarMagica(Matriz,Tamanyo) == 1) printf("La matriz es magica \n"); else printf("La matriz no es magica :( \n"); return 0; } int ComprobarMagica(int** Matriz,unsigned int Tamanyo) { int aux[Tamanyo*2]= {0}; // Filas for (unsigned int j = 0; j < Tamanyo;j++) { for (unsigned int i = 0; i < Tamanyo;i++) aux[j] += Matriz[i][j]; if (aux[j] != aux[j-1]) return 0; } // Columnas for (unsigned int j = 0; j < Tamanyo;j++) { for (unsigned int i = 0; i < Tamanyo;i++) aux[j+Tamanyo] += Matriz[j][i]; if (aux[j+Tamanyo] != aux[j+Tamanyo-1]) return 0; } return 1; }
No la he probado, asi que puede que tenga algun error (además lo mío es C++ no C )
|
|
« Última modificación: 4 Febrero 2013, 21:03 pm por amchacon »
|
En línea
|
|
|
|
TopoJunior
Desconectado
Mensajes: 40
|
Bueno, yo hago eso a medida de lo que yo se, como se poco, muy poquito lo he intentado hacer así, y me ha salido Gracias por preocuparte también en mirarlo y eso! Y bueno, el caso es que yo empezé por C y cuando sepa de C más, seguiré con C++!
|
|
|
En línea
|
|
|
|
durasno
Desconectado
Mensajes: 373
|
No la he probado, asi que puede que tenga algun error Si, en la funcion ComprobarMagica la declaracion de Matriz debe ser: int ComprobarMagica(int Matriz[FILA][COLUMNA],unsigned int Tamanyo); // donde FILA y COLUMNAS son dos constantes
tambien se puede omitir las filas: int ComprobarMagica(int Matriz[][COLUMNA],unsigned int Tamanyo);
Saludos
|
|
|
En línea
|
Ahorrate una pregunta, lee el man
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda arreglos
Java
|
iChris
|
2
|
2,822
|
22 Septiembre 2012, 09:07 am
por horny3
|
|
|
Programacion Ayuda en C ARREGLOS
Programación General
|
smdiegoarmando
|
3
|
2,384
|
6 Enero 2015, 00:51 am
por Eleкtro
|
|
|
Ayuda con Arreglos y Menu programacion en C
Programación C/C++
|
smdiegoarmando
|
1
|
6,235
|
7 Febrero 2013, 14:48 pm
por amchacon
|
|
|
Ayuda: Programación con arreglos
Programación C/C++
|
furciorifa
|
1
|
1,568
|
6 Enero 2015, 02:18 am
por Yoel Alejandro
|
|
|
Ayuda con c# y arreglos
.NET (C#, VB.NET, ASP)
|
Extravagan
|
1
|
2,292
|
8 Febrero 2016, 08:53 am
por Eleкtro
|
|