| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
Stormfight
Registrado: 12 Nov 2012 Mensajes: 3
| Publicado: 19/06/2013 7:03 am | | | Título: Invertir una matriz y decir el numero mas alto |
| Hola buenas,tengo problemas con un ejercicio de matrices y estoy un poco perdio. La primera parte del programa, se basa en insertar y que muestre una matriz 4x4.(hasta aqui bien), el problema esque, necesito que me muestre el valor mas alto de la matriz (que no se porque no me lo da). Y la otra parte es invertir la matriz tal que asi (que para que engañarnos, no lo se hacer):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
Muchas gracias de antemano 
Aqui esta el codigo:
#include <stdio.h> //printf scanf #include <stdlib.h> //pause #define M 4
int max(int *a); void desplacament(int a[M][M]); int i,j;
int main()
{ int matriu [M][M];
for(i=0; i<M;i++) { for (j=0; j<M; j++) { printf("Introdueix el valor de la posicio (%d,%d):", i,j); scanf("%d", &matriu[i][j]); } }
for(i=0; i<M;i++) { for (j=0; j<M; j++) { printf("%4d\t", matriu[i][j]); } printf("\n"); } printf("\n Valor maxim: %d", max); }
int max(int *a) {
int max=0;
for (i=0;i<4;i++) for(j=0;j<4;j++) { if (a[i][j]>max) { max=a[i][j]; } } } |
| | Volver arriba | |  | rir3760

Registrado: 01 Oct 2004 Mensajes: 7517 Ubicación: Mexico
| Publicado: 19/06/2013 9:05 am | | | Título: |
| Te piden que intercambies tanto la fila como la columna, por ejemplo el elemento en la primera fila y primera columna se intercambia con el elemento en la ultima fila y ultima columna, el elemento en la segunda fila y segunda columna con el elemento en la penúltima fila y penúltima columna, etc.
Un programa de ejemplo donde se realiza la operación:
| Código: | #include <stdio.h> #include <stdlib.h>
#define N 5
void swap(int *a, int * b);
int main(void) { int m[N][N]; int i; int j; for (i = 0; i < N; i++){ for (j = 0; j < N; j++){ m[i][j] = i * N + j; printf(" %2d", m[i][j]); } putchar('\n'); } for (i = 0; i < N / 2; i++) for (j = 0; j < N; j++) swap(&m[i][j], &m[N - 1 - i][N - 1 - j]); if (N % 2 == 1) for (j = 0; j < N / 2; j++) swap(&m[N / 2][j], &m[N / 2][N - 1 - j]); putchar('\n'); for (i = 0; i < N; i++){ for (j = 0; j < N; j++) printf(" %2d", m[i][j]); putchar('\n'); } return EXIT_SUCCESS; }
void swap(int *a, int * b) { int aux; aux = *a; *a = *b; *b = aux; } |
----
Tu programa no imprime el máximo porque hay errores en la declaración, uso y definición de la función. Cuando se llama a la función debes utilizar paréntesis y en la definición debes indicar que se pasa un puntero, la forma mas fácil es utilizando la notación de array.
Y la función debe, de forma explicita, retornar indicando su valor de retorno mediante una sentencia "return N;".
De esta forma:
| Código: | #include <stdio.h>
/* ... */
/* Declaracion de la funcion */ int max(int a[][M]);
/* ... */
/* Uso de (llamada a) la funcion */ printf("Valor maximo: %d\n", max(matriu));
/* ... */
/* Definicion de la funcion */ int max(int a[][M]) { int rv = a[0][0]; for (i = 0; i < M; i++) for (j = 0; j < M; j++) if (a[i][j] > rv) rv = a[i][j]; return rv; } |
Un saludo _________________ C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language |
| | Volver arriba | |  | Stormfight
Registrado: 12 Nov 2012 Mensajes: 3
| Publicado: 19/06/2013 1:25 pm | | | Título: |
| Muchas gracias por la ayuda, se me habia pasado por alta la anotacion array. y respecto a lo de invertir la matriz, decir-te que me ha servido a la perfeccion. Muchas gracais de nuevo. |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |