elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Función que diga si dos columnas/filas de una matriz son iguales. en: 4 Diciembre 2018, 19:10 pm
Buenas tardes, estoy intentando realizar esta función en C, sin embargo no se me ocurre la manera correcta de llegar a ella. Concretamente mi ejercicio es:

"Escribe un programa, que en primer lugar, genere una matriz de NxM elementos enteros con números aleatorios comprendidos entre 1 y 20 (N y M constantes enteras globales).
El programa además de generar la matriz, deberá escribir sus valores y escribir un mensaje indicando si hay o no dos columnas iguales en la matriz, en caso de no haberlas, solo en ese caso, deberá escribir un mensaje indicando si hay o no dos filas iguales en la matriz. Si no hubiera ni dos filas iguales, ni dos columnas iguales escribirá un mensaje indicándolo.
También escribirá el valor máximo y la fila y columna en la que se encuentra la primera aparición del valor máximo (haciendo un recorrido por filas)."

Se trata de una función de NxM.
Si me podeis dar una idea de como seria el hacerla me ayudariais un monton. Porque en mi cabeza parece facil (y seguro que lo es) pero no llego a ello... un saludo y gracias por cualquier ayuda recibida.
Código:
#include<stdlib.h>
#include<time.h>
#include <stdio.h>
#define N 3
#define M 6

void escribirMat (int mat[N][M]);
void generaMat (int mat[N][M]);
void matrizMaxPos (int mat[N][M], int *max, int *fil, int *col);
int columnasIguales(int mat[N][M]);


int main()
{
    int mat[N][M];
    int *max=0,*fila=0,*columna=0;
    generaMat(mat);
    escribirMat(mat);
    matrizMaxPos(mat,&max,&fila,&columna);
    printf("\nMaximo: %d y aparece por primera vez en la fila %d y columna %d.\n",max,fila,columna);
    if(columnasIguales(mat)==1){
        printf("\nHay al menos dos columnas iguales.\n");
    }
    else printf("\nNinguna columna igual.\n");
    return 0;
}


void generaMat(int mat[N][M])
{
    int f,c;
    srand(time(NULL));
    for(f=0; f<N; f++)
        for(c=0; c<M; c++)
            mat[f][c]=rand()%20+1;
}

void matrizMaxPos (int mat[N][M], int *max, int *fil, int *col){
    int i,j,enc=0;
    for(i=0;i<N;i++){
        for(j=0;j<M;j++){
            if(*max<mat[i][j])
                *max=mat[i][j];
        }
    }
    for(i=0;i<N;i++){
        for(j=0;j<M;j++){
            if(*max==mat[i][j]&&!enc){
                *fil=i+1;
                *col=j+1;
                enc=1;
            }
        }
    }
}

int columnasIguales(int mat[N][M]){
    int i=0,j=0,iguales=0;
    if((mat[i][j]==mat[i][j+1]&&i<N-1&&j<M-1)&&(mat[i+1][j]==mat[i+1][j+1]&&i<N-1&&j<M-1)&&(mat[i+2][j]==mat[i+2][j+1]&&i<N-1&&j<M-1))
        iguales=1;
    else{
        i++;
        j++;
    }
    return iguales;
}

void escribirMat (int mat[N][M]){
    int i,j;
    for(i=0;i<N;i++){
        for(j=0;j<M;j++){
            printf("%d ", mat[i][j]);
        }
        printf("\n");
    }
}
2  Programación / Programación C/C++ / Tema para borrar en: 23 Diciembre 2017, 19:32 pm
...
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines