Ejercicios Matrices

 Consigna

Dada  una matriz nxn de Enteros indicar si es simétrica.


Puntos a tener en cuenta

    La primera diagonal no es necesaria.

    No hay que recorrer todo.

    No hay que recorrer las dos mitades.


Seudocódigo

para cada fila de i=1 a n-1
    para cada columna de j=i+1 a n-1
        Si M[i,j]=M[j,i] responder false (y se corta)
    fin
fin
responder true


#include <stdio.h>
#include <stdbool.h>

#define MAX 100

bool esSimetrica(int matriz[MAX][MAX], int n) {
    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < n; j++) {
            if (matriz[i][j] != matriz[j][i]) {
                return false; // corta inmediatamente
            }
        }
    }
    return true;
}

int main() {
    int n;
    int matriz[MAX][MAX];

    printf("Ingrese el tamaño de la matriz (n): ");
    scanf("%d", &n);

    printf("Ingrese los elementos de la matriz %dx%d:\n", n, n);
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            scanf("%d", &matriz[i][j]);
        }
    }

    if (esSimetrica(matriz, n)) {
        printf("La matriz es simétrica.\n");
    } else {
        printf("La matriz NO es simétrica.\n");
    }

    return 0;
}


Consigna

Dada una matriz mxn, de Enteros, devolver la suma de sus elementos.

#include <stdio.h>

#define MAX 100

int main() {
    int m, n;
    int matriz[MAX][MAX];
    int suma = 0;

    printf("Ingrese el número de filas (m): ");
    scanf("%d", &m);

    printf("Ingrese el número de columnas (n): ");
    scanf("%d", &n);

    printf("Ingrese los elementos de la matriz %dx%d:\n", m, n);
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            scanf("%d", &matriz[i][j]);
            suma += matriz[i][j]; // acumulamos directamente
        }
    }

    printf("La suma de todos los elementos es: %d\n", suma);

    return 0;
}

 
Consigna

Dada una matriz mxn, devolver el máximo de la matriz.

#include <stdio.h>

#define MAX 100

int main() {
    int m, n;
    int matriz[MAX][MAX];
    int maximo;

    printf("Ingrese el número de filas (m): ");
    scanf("%d", &m);

    printf("Ingrese el número de columnas (n): ");
    scanf("%d", &n);

    printf("Ingrese los elementos de la matriz %dx%d:\n", m, n);
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            scanf("%d", &matriz[i][j]);
            if (i == 0 && j == 0) {
                maximo = matriz[i][j]; // inicializamos con el primer elemento
            } else if (matriz[i][j] > maximo) {
                maximo = matriz[i][j]; // actualizamos si encontramos uno mayor
            }
        }
    }

    printf("El máximo elemento de la matriz es: %d\n", maximo);

    return 0;
}

Consigna

Dadas dos matrices mxn devolver si son iguales.

#include <stdio.h>
#include <stdbool.h>

#define MAX 100

bool sonIguales(int A[MAX][MAX], int B[MAX][MAX], int m, int n) {
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            if (A[i][j] != B[i][j]) {
                return false; // corta en cuanto encuentra una diferencia
            }
        }
    }
    return true;
}

int main() {
    int m, n;
    int A[MAX][MAX], B[MAX][MAX];

    printf("Ingrese el número de filas (m): ");
    scanf("%d", &m);

    printf("Ingrese el número de columnas (n): ");
    scanf("%d", &n);

    printf("Ingrese los elementos de la primera matriz %dx%d:\n", m, n);
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            scanf("%d", &A[i][j]);
        }
    }

    printf("Ingrese los elementos de la segunda matriz %dx%d:\n", m, n);
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            scanf("%d", &B[i][j]);
        }
    }

    if (sonIguales(A, B, m, n)) {
        printf("Las matrices son iguales.\n");
    } else {
        printf("Las matrices NO son iguales.\n");
    }

    return 0;
}



Consigna:

Dadas dos matrices mxn devolver su suma.

#include <stdio.h>

#define MAX 100

int main() {
    int m, n;
    int A[MAX][MAX], B[MAX][MAX], S[MAX][MAX];

    printf("Ingrese el número de filas (m): ");
    scanf("%d", &m);

    printf("Ingrese el número de columnas (n): ");
    scanf("%d", &n);

    printf("Ingrese los elementos de la primera matriz %dx%d:\n", m, n);
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            scanf("%d", &A[i][j]);
        }
    }

    printf("Ingrese los elementos de la segunda matriz %dx%d:\n", m, n);
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            scanf("%d", &B[i][j]);
        }
    }

    // Calculamos la suma elemento por elemento
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            S[i][j] = A[i][j] + B[i][j];
        }
    }

    printf("La matriz suma es:\n");
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            printf("%d ", S[i][j]);
        }
        printf("\n");
    }

    return 0;
}


Consigna:

Dadas dos matrices multiplicables, devolver su producto.


#include <stdio.h>

#define MAX 100

// Función para leer una matriz
void leerMatriz(int matriz[MAX][MAX], int filas, int columnas) {
    for (int i = 0; i < filas; i++) {
        for (int j = 0; j < columnas; j++) {
            scanf("%d", &matriz[i][j]);
        }
    }
}

// Función para mostrar una matriz
void mostrarMatriz(int matriz[MAX][MAX], int filas, int columnas) {
    for (int i = 0; i < filas; i++) {
        for (int j = 0; j < columnas; j++) {
            printf("%d ", matriz[i][j]);
        }
        printf("\n");
    }
}

// Función para multiplicar dos matrices
void multiplicarMatriz(int A[MAX][MAX], int B[MAX][MAX], int P[MAX][MAX],
                       int m1, int n1, int m2, int n2) {
    // Inicializamos la matriz producto
    for (int i = 0; i < m1; i++) {
        for (int j = 0; j < n2; j++) {
            P[i][j] = 0;
        }
    }

    // Calculamos el producto: P = A * B
    for (int i = 0; i < m1; i++) {
        for (int j = 0; j < n2; j++) {
            for (int k = 0; k < n1; k++) {
                P[i][j] += A[i][k] * B[k][j];
            }
        }
    }
}

int main() {
    int m1, n1, m2, n2;
    int A[MAX][MAX], B[MAX][MAX], P[MAX][MAX];

    // Lectura de dimensiones
    printf("Ingrese filas y columnas de la primera matriz (m1 n1): ");
    scanf("%d %d", &m1, &n1);

    printf("Ingrese filas y columnas de la segunda matriz (m2 n2): ");
    scanf("%d %d", &m2, &n2);

    // Verificamos condición de multiplicabilidad
    if (n1 != m2) {
        printf("Las matrices NO son multiplicables (n1 != m2).\n");
        return 1;
    }

    // Lectura de matrices
    printf("Ingrese los elementos de la primera matriz %dx%d:\n", m1, n1);
    leerMatriz(A, m1, n1);

    printf("Ingrese los elementos de la segunda matriz %dx%d:\n", m2, n2);
    leerMatriz(B, m2, n2);

    // Multiplicación
    multiplicarMatriz(A, B, P, m1, n1, m2, n2);

    // Mostrar resultado
    printf("La matriz producto es:\n");
    mostrarMatriz(P, m1, n2);

    return 0;
}


Consigna:

Dada una matriz de letras, contar las vocales.

#include <stdio.h>
#include <ctype.h>  // para tolower()

#define MAX 100

// Función para leer una matriz de caracteres
void leerMatriz(char matriz[MAX][MAX], int filas, int columnas) {
    for (int i = 0; i < filas; i++) {
        for (int j = 0; j < columnas; j++) {
            scanf(" %c", &matriz[i][j]); // espacio antes de %c evita problemas con saltos de línea
        }
    }
}

// Función para mostrar una matriz de caracteres
void mostrarMatriz(char matriz[MAX][MAX], int filas, int columnas) {
    for (int i = 0; i < filas; i++) {
        for (int j = 0; j < columnas; j++) {
            printf("%c ", matriz[i][j]);
        }
        printf("\n");
    }
}

// Función para contar vocales en la matriz
int contarVocales(char matriz[MAX][MAX], int filas, int columnas) {
    int contador = 0;
    for (int i = 0; i < filas; i++) {
        for (int j = 0; j < columnas; j++) {
            char c = tolower(matriz[i][j]); // pasamos a minúscula para simplificar
            if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') {
                contador++;
            }
        }
    }
    return contador;
}

int main() {
    int m, n;
    char matriz[MAX][MAX];

    printf("Ingrese el número de filas (m): ");
    scanf("%d", &m);

    printf("Ingrese el número de columnas (n): ");
    scanf("%d", &n);

    printf("Ingrese los caracteres de la matriz %dx%d:\n", m, n);
    leerMatriz(matriz, m, n);

    printf("La matriz ingresada es:\n");
    mostrarMatriz(matriz, m, n);

    int totalVocales = contarVocales(matriz, m, n);
    printf("La matriz contiene %d vocal(es).\n", totalVocales);

    return 0;
}


NUMEROS PSEUDOALEATORIOS

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

// Función que devuelve un número aleatorio entre 0 y 36
int tirarRuleta() {
    srand(time(NULL)); // inicializa la semilla cada vez
    return rand() % 37; // valores entre 0 y 36
}

int main() {
    int resultado = tirarRuleta();

    printf("La bola cayó en: %d\n", resultado);

    // Opcional: mostrar color típico de la ruleta
    if (resultado == 0) {
        printf("Color: Verde\n");
    } else if ((resultado >= 1 && resultado <= 10) || (resultado >= 19 && resultado <= 28)) {
        if (resultado % 2 == 0)
            printf("Color: Negro\n");
        else
            printf("Color: Rojo\n");
    } else {
        if (resultado % 2 == 0)
            printf("Color: Rojo\n");
        else
            printf("Color: Negro\n");
    }

    return 0;
}


Comentarios

Entradas populares de este blog