/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Invertir una matriz y decir el numero mas alto

 
      Índice del Foro elrincondelc.com -> Dev-C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
Stormfight



Registrado: 12 Nov 2012
Mensajes: 3

MensajePublicado: 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 Very Happy



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

MensajePublicado: 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

MensajePublicado: 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
      Índice del Foro elrincondelc.com -> Dev-C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com