En esta entrada de tutoriales en C aprenderemos a programar funciones conjuntamente con matrices, las mismas que son enviadas por el método de paso por dirección; es decir, los cambios realizadas en las funciones a estas matrices se vera reflejada en el punto de invocación (main) alterando así la información que estas matrices mantienen.
Enunciado del problema a resolver
Ejercicio realizado en C, el cual permite ingresar una matriz de M x N elemenos y multiplicar por un Vector, para este ejercicio se utilizan funciones las cuales van a invocarse varias veces para aprovechar su re-utilización.
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<time.h>
#include<stdlib.h>
int leer_entero(char mensaje[50], int min, int max)
{
int dato;
do
{
printf("%s",mensaje);
scanf("%d",&dato);
}
while(dato<min||dato>max);
return dato;
}
void leer_matriz(int m[50][50],int f,int c)
{
srand(time(NULL));
for(int i=0;i<f;i++)
{
for(int j=0;j<c;j++)
{
m[i][j]=1+rand()%(100);
}
}
}
void leer_arreglo(int v[50], int numero)
{
srand(time(NULL));
for(int i=0;i<numero;i++)
{
v[i]=1+rand()%(10);
}
}
void multiplicar(int m[50][50], int f, int c, int v[50], int numero, int resultado[50])
{
int acumulador;
for(int i=0;i<f;i++)
{
acumulador=0;
for(int j=0;j<c;j++)
{
acumulador=acumulador+(m[i][j]*v[j]);
}
resultado[i]=acumulador;
}
}
void imprimir_matriz(int m[50][50], int f, int c)
{
printf("\n\n----Matriz---\n\n");
for(int i=0;i<f;i++)
{
for(int j=0;j<c;j++)
{
printf("%3d\t",m[i][j]);
}
printf("\n");
}
}
void imprimir_arreglo(int v[50], int numero)
{
printf("\n\n----Vector---\n\n");
for(int i=0;i<numero;i++)
{
printf("%3d\t",v[i]);
}
}
int main()
{
int matriz[50][50];
int vector[50];
int resultado[50];
int filas=leer_entero("Ingrese el numero de filas: ",1,50);
int columnas=leer_entero("Ingrese el numero de columnas :",1,50);
int tamano_vector=leer_entero("Ingrese el tamaño del vector: ",1,50);
leer_matriz(matriz,filas,columnas);
imprimir_matriz(matriz,filas,columnas);
leer_arreglo(vector,tamano_vector);
imprimir_arreglo(vector,tamano_vector);
if(columnas==tamano_vector)
{
multiplicar(matriz,filas,columnas,vector,tamano_vector,resultado);
imprimir_arreglo(resultado,filas);
}
else
{
printf("\n\nNo se puede multiplicar, no sea ignorante.");
}
getch();
return 0;
}
Cualquier duda escriba un comentario para poder despejarla,