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
Publicar un comentario