Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 3

#include <stdio.

h>
#include <stdlib.h>
#define TAM 5

void rellenarMatriz(int mat [TAM][TAM])


{
int i = 0, j = 0;
for (i=0; i<TAM; i++)
{
for (j=0; j<TAM; j++)
{
mat[i][j] = rand()%51 -10;
}
}
}
/*Funci n q simula la pedida en el parcial
int comprobarMaximoMinimo(int mat [TAM][TAM], int x, int y)
{
int resultado = rand()%3 -1;
return resultado;
}
*/
int comprobarMaximoMinimo (int matriz[TAM][TAM], int posX, int posY)
{
int esMaximo = 1;
int esMinimo = 1;

if (matriz[posX][posY]<matriz[posX-1][posY-1] && posX-1>=0 && posY-1>=0)


esMaximo = 0;
else if (matriz[posX][posY]<matriz[posX-1][posY] && posX-1>=0)esMaximo = 0;
else if (matriz[posX][posY]<matriz[posX-1][posY+1] && posX-1>=0 &&
posY+1<TAM)esMaximo = 0;
else if (matriz[posX][posY]<matriz[posX][posY-1] && posY-1>=0 )esMaximo = 0;
else if (matriz[posX][posY]<matriz[posX][posY+1] && posY+1<TAM)esMaximo = 0;
else if (matriz[posX][posY]<matriz[posX+1][posY-1] && posX+1<TAM && posY-1>=0)
esMaximo = 0;
else if (matriz[posX][posY]<matriz[posX+1][posY] && posX+1<TAM) esMaximo = 0;
else if (matriz[posX][posY]<matriz[posX+1][posY+1] && posX+1<TAM &&
posY+1<TAM)esMaximo = 0;

if (matriz[posX][posY]>matriz[posX-1][posY-1] && posX-1>=0 && posY-1>=0)


esMinimo = 0;
else if (matriz[posX][posY]>matriz[posX-1][posY] && posX-1>=0)esMinimo = 0;
else if (matriz[posX][posY]>matriz[posX-1][posY+1] && posX-1>=0 &&
posY+1<TAM)esMinimo = 0;
else if (matriz[posX][posY]>matriz[posX][posY-1] && posY-1>=0 )esMinimo = 0;
else if (matriz[posX][posY]>matriz[posX][posY+1] && posY+1<TAM)esMinimo = 0;
else if (matriz[posX][posY]>matriz[posX+1][posY-1] && posX+1<TAM && posY-1>=0)
esMinimo = 0;
else if (matriz[posX][posY]>matriz[posX+1][posY] && posX+1<TAM) esMinimo = 0;
else if (matriz[posX][posY]>matriz[posX+1][posY+1] && posX+1<TAM &&
posY+1<TAM)esMinimo = 0;

if (esMaximo) return 1;
else if (esMinimo) return -1;
else return 0;

}
void actualizarMaximoMinimo(int mat [TAM][TAM], int * numMin, int * numMax)
{
int i = 0, j = 0;
for(i=0; i<TAM; i++)
{
for(j=0; j<TAM; j++)
{
if (1 == comprobarMaximoMinimo(mat,i,j)) (*numMax)++;
else if (-1 == comprobarMaximoMinimo(mat,i,j)) (*numMin)++;
}
}

void mostrarMatriz(int mat[TAM][TAM])


{

int i = 0, j =0;
for (i=0; i<TAM; i++)
{
for (j=0; j<TAM; j++)
{
if (1 == comprobarMaximoMinimo(mat,i,j)) printf("\tX");
else if (-1 == comprobarMaximoMinimo(mat,i,j)) printf("\tY");
else printf("\t%d",mat[i][j]);
}
printf("\n");
}
}

int sumaMinimosLocales(int mat [TAM][TAM])


{
int i = 0, j =0, sumaMinimos = 0;
for (i=0; i<TAM; i++)
{
for (j=0; j<TAM; j++)
{
if (-1 == comprobarMaximoMinimo(mat,i,j)) sumaMinimos += mat[i][j];
}
}
return sumaMinimos;
}
int mostrarMatrizOriginal(int mat [TAM][TAM])
{
int i = 0, j =0;
printf("\n");
for (i=0; i<TAM; i++)
{
for (j=0; j<TAM; j++)
{
printf("\t%d",mat[i][j]);
}
printf("\n");
}
printf("\n");
}
int main()
{
int matriz[TAM][TAM], numeroMaximos = 0, numeroMinimos = 0;
rellenarMatriz(matriz);
actualizarMaximoMinimo(matriz,&numeroMinimos, &numeroMaximos);
mostrarMatriz(matriz);
mostrarMatrizOriginal(matriz);
printf("\nEl n mero de m nimos es %d y el de m ximos es %d",numeroMinimos,
numeroMaximos);
printf("\nLa suma de m nimos es: %d",sumaMinimosLocales(matriz));
return 0;
}

You might also like