Está en la página 1de 43

SENA regional cauca

Programa ADSI
Matriz y vectores

Santander de Quilichao
23-3-2020
SENA 1

Matriz y vectores

SENA regional Cauca

23 de marzo del 2020

Ledibia Pechene Dagua

Nota del autor

WILIAN PENAGOS DAGUA, Instructor SENA

ledibiapechene5@gmail.com
SENA 2

EJERCICIO: 1.1
#include<conio.h>
#include<stdio.h>
#include<string.h>
main()
{
int n[4];
float sum=0;
for (int i=0; i<=3; i++)
{
printf("ingrese un numero\n");
scanf("%d",&n[i]);
sum=sum+n[i];
}
printf("\nla media es:\t%0.1f",sum/4);
printf("\nlos numeros ingresados son:\t%d %d %d %d",n[0],n[1],n[2],n[3]);
getch();
}
SENA 3

EJERCICIO: 1.2

#include<conio.h>
#include<stdio.h>
#include<string.h>
main()
{
float n[5];
for (int i=0; i<=4; i++)
{
printf("ingrese un nuemro\n");
scanf("%f",&n[i]);
}
printf("\n");
for (int i=4;i>=0;i--)
{
printf("%0.0f\t",n[i]);
}
getch();
}
SENA 4

EJERCICIO: 2.1

#include<stdio.h>
#include<conio.h>
main()
{
int nm,mes[12];
for (int i=0; i<=11; i++)
{
printf("ingrese el total de dias del mes %d ",i+1);
scanf("%d",&mes[i]);
}
printf("\ningeres el mes que desea saber cuántos días tiene\t");
scanf("%d",&nm);
printf("\nel mes tiene: %d dias",mes[nm]);
getch();
}
SENA 5

EJERCICIO: 2.2

#include <iostream>
#include <stdio.h>

using namespace std;

//Funciones
void pide_diaymes(); // Funcion para pedir lo datos en cada iteración del bucle
int calcula_DiaJuliano(int dia, int mes); // Calcula el día juliano y lo devuelve.
// Variables globales
int mes;
int dia;
// Cantidad de días por mes
int numDiasMeses[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
// Nombre de los meses.
char *nombreMeses[12] =
{ "Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","N
oviembre","Diciembre"};

int main()
{
do {
// Pedimos el día y mes al usuario.
pide_diaymes();

// si pones 0 en algun dato, salimos del bucle


if(dia ==0 || mes ==0) break;
SENA 6

// Control de errores.
if (dia < 0)
{
printf("\nEl numero de dia no es correcto.");
continue;
}
else if (mes > 12 || mes < 0)
{
printf("\nEl numero de mes no es correcto.");
continue;
}
else if (dia > numDiasMeses[mes-1])
{
printf("\n%s solo tiene %d dias.",nombreMeses[mes-1],numDiasMeses[mes-1]);
continue;
}

// Calculamos el día juliano


printf("\n El dia juliano es: %d",calcula_DiaJuliano(dia,mes));

// Si el día o mes es igual a 0, salimos del bucle.


} while(dia !=0 ||mes !=0);
printf("\nAdios!");
return 0;
}

void pide_diaymes()
{
SENA 7

printf("\n\nIntroduce el mes: (0 para salir): ");


scanf("%d",&mes);
printf("\nAhora introduce el dia de ese mes: (0 para salir): ");
scanf("%d",&dia);
}

int calcula_DiaJuliano(int dia, int mes)


{
int resultado = 0;
// Vamos sumando todos los días de cada mes, excepto el último...
for(int i = 0; i< (mes-1); i++)
{
resultado+=numDiasMeses[i];
}
// Al final le añadimos los días...
resultado+=dia;
// y devolvemos el resultado.
return resultado;
}
SENA 8

EJERCICIO: 3.1

#include <stdio.h>
main()
{
int i=0, d=0, m=0,suma=0;
int mes[12]={31,28,31,30,31,30,31,31,30,31,30,31};

printf("\n\n Escriba un numero del 1 al 12(mes)= ");

scanf("%d", &m);

for(i=0; i<(m-1); ++i) // m-1 en vez de m. suma += mes[i]; // i en vez de i-1.


printf("\n Escriba otro numero (dia)= ");
scanf("%d", &d);
suma += d; /*printf("\n Este es el dia numero %d del año\n", suma); */
printf(" Faltan %d dias para que finalice el año", 365-suma);
getchar();

getchar(); }
SENA 9

EJERCICIO: 3.2

#include <stdio.h>
main()
{
int i; float numeros[10];

printf("\n Escriba 10 numeros:\n");

for (i=0; i<10; i++)

scanf(" %g", &numeros[i]);

printf("\n Los numeros, en orden inverso\n");

printf(" al que fueron introducidos, son: ");

for (i=9; i>=0; i--)

printf(" %g", numeros[i]);

getchar();

getchar();
}
SENA 10

EJERCICIO: 3.3
#include <stdio.h>
#include <stdlib.h>

int main(){
int i;
int num;
int n;
int suma = 0;
double media = 0.0;

printf ("¿Cuantos numeros vas a sumar? ",n);


scanf ("%d", &n);

for(i=1; i<=n; i++){


scanf("%d\n", &num);
suma = suma + num;
}
media = suma / (double)n;
printf("La media es %lf\n", media);
}
SENA 11

EJERCICIO: 3.4
#include <stdio.h>

main()
{
int i, enteros[10], menor=0, mayor=0; /* Podría declarar mayor = -1000000
o el menor número que acepte la máquina, pero no me pareció muy técnico.*/

printf("\n Escriba diez numeros enteros:\n\n");


for (i=0; i<10; i++)
{ scanf("%d", &enteros[i]);
/*mayor = enteros[5]-1; Otra posible solución (cualquier numero entre
0 y 9 entre corchetes)*/
mayor = menor<enteros[i]? menor: enteros[i];
} /* Así me aseguro que mayor tome un valor igual
al menor de los datos introducidos. */
for (i=0; i<10; i++)

mayor = mayor>enteros[i]? mayor: enteros[i];

printf("\n El mayor de los numeros es: %d", mayor);


getchar();
getchar();

}
SENA 12

EJERCICIO: 3.5
6#include<stdio.h>
#include<conio.h>

int main ()
{
int a[40], lim, i, d, posma=0, posme=0, ma, me;

printf ("\n Digite el numero de posiciones del vector: ");


scanf ("%d", &lim);

for (i=0;i<lim;i++)
{
printf ("\n Digite el dato en la posicion (%d) del vector: ",i);
scanf ("%d", &d);
a[i]=d;
}

ma=a[0];
posma=0;

for (i=0;i<lim;i++)
{
if (a[i]>ma)
{
ma=a[i];
posma=i;
}
SENA 13

me=ma;
posme=0;

for (i=0;i<lim;i++)
{
if (a[i]<=me)
{
me=a[i];
posme=i;
}
}

printf ("\n La posicion del elemento mayor es: %d \n",posma);


printf ("\n La posicion del elemento menor es: %d \n",posme);

getch();

}
2
SENA 14

EJERCICIO: 3.6
#include <iostream>
#include"conio.h"
#include"stdlib.h"
#include"time.h"

using namespace std;

int main(){
srand(time(NULL));
int productoEscalar 0, n;

cout<<"favor ingresar el valor de n:";


cin >> n;

int v[n],w[n];

for(int i=0;i<n;i++){
v[i]=(int) (rand() / 3276.7)*101);
w[i]=(int) ((rand() / 3276.7)*101);
}
for(int i=0;i<n;i++)
cout << v[i] <<"\t";

cout << endl;

for(int i=0;i<n;i++)
cout<<w[i]<<"\t";
SENA 15

for(int i=0;i<n;i++)
productoEscalar=productoEscalar+ v[i}*w[i];
cout<<"\nel prodcto escalar entre los dos vctores es de:" <<productoEscalar;

getch();

}
SENA 16

EJERCICIO: 3.7

// Este programa calcula el producto vectorial de dos vectores mediante una función.
// Paso de argumentos por valor y por referencia.

#include <stdio.h>
#include <stdlib.h>
void prod_vec (float, float, float, float, float, float, float *, float *, float *);

int main ()
{
float x1, y1, z1, x2, y2, z2;
float x3, y3, z3;

printf ("Dame componentes de dos vectores: ");


scanf ("%f%f%f%f%f%f", &x1, &y1, &z1, &x2, &y2, &z2);

prod_vec (x1, y1, z1, x2, y2, z2, &x3, &y3, &z3);
printf ("El producto vectorial vale: (%f,%f,%f) n", x3, y3, z3);

system ("pause");
return 0;
}

void prod_vec (float x1, float y1, float z1, float x2, float y2, float z2, float *x3, float *y3, float
*z3)
{
*x3 = y1*z2-z1*y2;
*y3 = x1*z2-z1*x2;
SENA 17

*z3 = x1*y2-y1*x2;
}
SENA 18

EJERCICIO: 3.8
/*5. Realice un programa que lea una matriz de 2x2 y cree su matriz traspuesta.
La matriz traspuesta es aquella en la que la columna i era la fila i de la matriz
original.

|1 2 3| |1 4 7|
|4 5 6| --> |2 5 8|

*/

#include<iostream>
#include<conio.h>

using namespace std;

int main(){
int numeros[2][2];

for(int i=0;i<2;i++){
for(int j=0;j<2;j++){
cout<<"Digite un numero ["<<i<<"]["<<j<<"]: ";
cin>>numeros[i][j];
}
}

cout<<"\nMatriz Normal\n";
for(int i=0;i<2;i++){
for(int j=0;j<2;j++){
SENA 19

cout<<numeros[i][j]<<" ";
}
cout<<"\n";
}

cout<<"\nMatriz Transpuesta\n";
for(int i=0;i<2;i++){
for(int j=0;j<2;j++){
cout<<numeros[j][i]<<" ";
}
cout<<"\n";
}

getch();
return 0;
}
SENA 20

EJERCICIO 4.1
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])


{

int x,y,num=0, numeros[4][4];

for (x=0;x<2;x++)
{
for (y=0;y<2;y++)
{
numeros[x][y]=num;
num++;
}
}

printf("El array original es: \n\n\n");

for(x = 0;x < 2;x++)


{
for(y = 0;y < 2;y++)
{
printf(" %d ", numeros[x][y]);
}
printf("\n\n\n");
}
SENA 21

printf("La traspuesta es: \n\n\n");

for(x = 0;x < 2;x++)


{
for(y = 0;y < 2;y++)
{
printf(" %d ", numeros[y][x]);
}
printf("\n\n\n");
}

system("PAUSE");
return 0;
}
SENA 22

Ejercicio 4.2
#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>

using namespace std;


{
//los indices de la matriz
int i,j;

//estos valores se usan por prueba; el resultado es - 15


// matriz[0][0] = 1;matriz[0][1] = 2;matriz[0][2] =3;
//matriz[1][0] = 1;matriz[1][1] = 1;mtriz[1][2] = 1;
//matriz[2][0] = 2;matriz[2][1] = 0;matriz[2][2]= 5;

//inicializa el randon
{
srand(time(NULL))

{
cout << "generando una matriz de 3*3" << endl;
{
for(1=0;1<3;1++)
}
for (j=0; j<3; j++);
{
//cout<< "capture el elemento[" << 1 << "][" <<] <<"][" << endt;
SENA 23

//cin >> matriz(1)[j]=1 + rand()\(10-1);


}
cout << endl;
{

//deja una line


cout << endl;

cin.ignore return 0;

//calculando el determinante
int determinante=0;

cout <<"v alores del primer calculo,,," << endl;


determinante = determinante * matriz[0][0] * matriz[1][1]* matriz[2][2];
cout << matriz[0][0] * matriz[1][1] * matriz[2][2] <<endl;

determinante = derterminante + matriz[0][1] * matriz[1][2] * matriz[2][0];


cuot << matriz[0][1] * matriz[1][2] * matriz[2][0] << endl;

determinante = determinante * matriz[0][2] * matriz[2][1] << endl << endl;

cout << "valores del segundo calculo,,," << endl;


determinante = determinante- matriz[0][2] * matriz [1][1] * matriz[2][0];
cout << matriz[0][2] * matriz[1][1] * [2][0] << endl;

determinante= determinante - matriz[1][0] * matriz[1][0] * matriz[2][2];


cout << matriz[0][1] * matriz[0][1] * matriz[2][2] << endl;
SENA 24

determinante = determinante - matriz[1][0] * matriz[2][1] * matriz[1][2];


cout << matriz[1][0] * matriz[2][1] << endl << endl;

cuot << "el determinante es:" <<determinante;

cin.ignore return 0;
}
}
SENA 25

EJERCICIO 4.3
/* Determinante, Adjunta, Inversa de una matriz de 3x3 con valores "enteros" */
/* El ingreso de los valores de la matriz es de la siguiente forma */
/*
1 a-b-c->
2 d-e-f-> o {a,b,c,d,e,f,g,h,i}
3 g-h-i->
*/

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

main() {

system("cls");
int i,j,k;
int detm;
int a,s,d;
int **matri;
float **matre;

matri = (int **)malloc(3 * sizeof(int *));

for(i=0;i<3;i++) {
matri[i] = (int *)malloc(3 * sizeof(int));
}
SENA 26

matre = (float **)malloc(3 * sizeof(float *));

for(a=0;a<3;a++) {
matre[a] = (float *)malloc(3 * sizeof(float));
}

printf("Bienvenida Ledibia ! D:\n\n\a");

/* Ingresa los valores de la matriz */


for(i=0;i<3;i++){
for(j=0;j<3;j++) {

printf("Escriba el %d elemento de la %d fila :",j,i);


scanf("%d",&k);

matri[i][j]= k;
}
}

/* Imprime la matriz */
printf("Su matriz es :\n\n");

for(i=0;i<3;i++){
for(j=0;j<3;j++) {

if(j == 2) {
SENA 27

printf("%d \n",matri[i][j]);
}
else
{
printf(" %d\t",matri[i][j]);

}
}
}

/* Calculo del determinante */


detm = (matri[0][0]*matri[1][1]*matri[2][2]+matri[1][0]*matri[2][1]*matri[0][2]+
matri[2][0]*matri[0][1]*matri[1][2]-(matri[0][2]*matri[1][1]*matri[2][0])-
(matri[1][2]*matri[2][1]*matri[0][0])-(matri[2][2]*matri[1][0]*matri[0][1]));

printf("\nEl determinante de su matriz es %d\n\n",detm);

if (detm == 0) {
printf("No existe matriz inversa T_T.\n");
return -1;
}

/* Calculo matriz adjunta */


SENA 28

matre[0][0] = matri[1][1]*matri[2][2]-matri[2][1]*matri[1][2];
matre[0][1] = -(matri[1][0]*matri[2][2]-matri[2][0]*matri[1][2]);
matre[0][2] = matri[1][0]*matri[2][1]-matri[2][0]*matri[1][1];
matre[1][0] = -(matri[0][1]*matri[2][2]-matri[2][1]*matri[0][2]);
matre[1][1] = matri[0][0]*matri[2][2]-matri[2][0]*matri[0][2];
matre[1][2] = -(matri[0][0]*matri[2][1]-matri[2][0]*matri[0][1]);
matre[2][0] = matri[0][1]*matri[1][2]-matri[1][1]*matri[0][2];
matre[2][1] = -(matri[0][0]*matri[1][2]-matri[1][0]*matri[0][2]);
matre[2][2] = matri[0][0]*matri[1][1]-matri[1][0]*matri[0][1];

/* Imprime Matriz adjunta */

printf("La matriz adjunta es:\n\n");

for(a=0;a<3;a++){
for(s=0;s<3;s++) {

if(s == 2) {

printf("%.0f\n",matre[a][s]);
}
else
{
printf("%.0f\t",matre[a][s]);

}
}
SENA 29

/* Inicio de Matriz Inversa */

for(a=0;a<3;a++){
for(s=0;s<3;s++) {

matre[a][s]= (matre[a][s]/detm);

}
}

/* Imprime la inversa AaaAAzucaaa xD jugo matutino xD tengo sueño xD!*/

printf("\nLa matriz inversa es :\n\n");

for(a=0;a<3;a++){
for(s=0;s<3;s++) {

if(s == 2) {

printf("%.3f\n",matre[a][s]);
}
else
{
printf("%.3f\t",matre[a][s]);
SENA 30

}
}
}

/* Libera memoria de las celdas */


for(i=0;i<3;i++) {
free(matri[i]);
}

for(i=0;i<3;i++) {
free(matre[a]);
}

/* Libera memoria de la matriz */

free(matri);
free(matre);

}
SENA 31

EJERCICIO 4.3
#include<iostream>
using namespace std;
int main(){
int n=0,m=0;
cout<<"ingrese el tamanio de la matriz "<<endl;
cin >>n>> m;
int mat[n][m],cof[n][m],adj[n][m],cofaux[n][m],inv[n][m],aux_inv[n][m];
if(n==m && n>0 && m>0){
cout<<"es una matriz cuadrada "<<endl;
}
else{
cout<<"no se puede calcular la matriz. tiene que ser cuadrada "<<endl;
}
int i=0,j=0,det=0,det2=0,det3=0,det4=0,aux_cof=1,d=0,k=0,e=0;
float det5;
cout<<"ingrese valores de la matriz "<<endl;
for(i=0;i<n;i++){
for(j=0;j<m;j++){
cin >> mat[i][j];
}
}

det5 = det3 + det4;


if(det5==0){
cout<<"matriz no tiene inversa"<<endl;
}
else{
SENA 32

for(i=0;i<n;i++){
for(j=0;j<m;j++){
aux_inv[i][j]= (1/det5)*adj[i][j];
inv[i][j] = aux_inv[i][j];
}
}
}
cout<<"elementos de la matriz inversa "<<endl;
for(i=0;i<n;i++){
for(j=0;j<m;j++){
cout<< inv[i][j]<<" ";
}
cout << endl;
}
return 0;
}
SENA 33

EJERCICIO 4.4
#include<iostream>
using namespace std;
int main(){
int n=0,m=0;
cout<<"ingrese el tamanio de la matriz "<<endl;
cin >>n>> m;
int mat[n][m],cof[n][m],adj[n][m],cofaux[n][m],inv[n][m],aux_inv[n][m];
if(n==m && n>0 && m>0){
cout<<"es una matriz cuadrada "<<endl;
}
else{
cout<<"no se puede calcular la matriz. tiene que ser cuadrada "<<endl;
}
int i=0,j=0,det=0,det2=0,det3=0,det4=0,aux_cof=1,d=0,k=0,e=0;
float det5;
cout<<"ingrese valores de la matriz "<<endl;
for(i=0;i<n;i++){
for(j=0;j<m;j++){
cin >> mat[i][j];
}
}

det5 = det3 + det4;


if(det5==0){
cout<<"matriz no tiene inversa"<<endl;
}
else{
SENA 34

for(i=0;i<n;i++){
for(j=0;j<m;j++){
aux_inv[i][j]= (1/det5)*adj[i][j];
inv[i][j] = aux_inv[i][j];
}
}
}
cout<<"elementos de la matriz inversa "<<endl;
for(i=0;i<n;i++){
for(j=0;j<m;j++){
cout<< inv[i][j]<<" ";
}
cout << endl;
}
return 0;
}
SENA 35

Ejercicio 4.5
#include <iostream>
#define d 3
using std::cout;
using std::cin;
using std::endl;

int main(){
int i, j, k, a[d][d], b[d][d], c[d][d];
cout << "MATRIZ A." << endl; // Introduce los elementos de la matriz A
for(i = 0 ; i < d ; i++){
for(j = 0 ; j < d ; j++){
cout << "Introduzca el valor del elemento [" << i << "]["
<< j << "]: ";
cin >> a[i][j];
}
}
cout << endl;
for(i = 0 ; i < d ; i++){ // Imprime los elementos de la matriz A
for(j = 0 ; j < d ; j++){
cout << a[i][j] << " ";
if(j == 2)
cout << endl;
}
}
cout << endl;
cout << "MATRIZ B." << endl; // Introduce los elementos de la matriz B
for(i = 0 ; i < d ; i++){
SENA 36

for(j = 0 ; j < d ; j++){


cout << "Introduzca el valor del elemento [" << i << "]["
<< j << "]: ";
cin >> b[i][j];
}
}
cout << endl;
for(i = 0 ; i < d ; i++){ // Imprime los elementos de la matriz B
for(j = 0 ; j < d ; j++){
cout << b[i][j] << " ";
if(j == 2)
cout << endl;
}
}
for(i=0;i<d;i++){ /* Realiza el producto de matrices y guarda
el resultado en una tercera matriz*/
for(j=0;j<d;j++){
c[i][j]=0;
for(k=0;k<d;k++){
c[i][j]=c[i][j]+(a[i][k]*b[k][j]);
}
}
}
cout << endl << "MATRIZ C (Matriz A*B)." << endl;
cout << endl;
for(i=0;i<d;i++){ // Imprime la matriz resultado
for(j=0;j<d;j++){
cout << c[i][j] << " ";
SENA 37

if(j==2)
cout << endl;
}
}
system("PAUSE");
return
SENA 38

ejercicio 4.6
#include <stdio.h>

void datos(int *tam, float mat1[][102]);


void esc_data(int tam1, float mat2[][102]);
void solucion(int Dim, float Sist[][102]);

int main(void)
{
int i,tam;
float mat[101][102];
datos(&tam,mat);
printf("\n\n\nEcuacion: \n\n");
esc_data(tam,mat);
solucion(tam,mat);
printf("\n\n\nSolucion:\n");
for(i=1;i<=tam;i++)
printf("\n X%d=%f\n",i,mat[i][tam+1]);

scanf("");
return(0);
}

void datos(int *tam,float mat1[][102])


{
int j,k;
SENA 39

printf("\n\n SISTEMA DE ECUACIONES POR GAUS JORDAN");


printf("\n\n\n INCOGNITAS: ");
scanf("%d",&*tam);
printf("\n\n VARIABLES:");
printf("\n\n MATRIZ j:\n");
for(j=1;j<=*tam;j++)
for(k=1;k<=*tam;k++)
{
printf("\n VALORES MATRIZ(%d,%d):",j,k);
scanf("%f",&mat1[j][k]);
}
printf("\n\n\n RESULTADO:\n");
for(j=1;j<=*tam;j++){
printf("\n VECTOR(%d):",j);
scanf("%f",&mat1[j][*tam+1]);
}
}

void esc_data(int tamano, float mat2[][102])


{
int x,y;
for(x=1;x<=tamano;x++)
{
for(y=1;y<=(tamano+1);y++)
{
printf("%7.2f",mat2[x][y]);
if(y==tamano)
printf(" |");
SENA 40

}
printf("\n");
}
}

void solucion(int tam, float mat[][102])


{
int res,i,j,k,m;
float col_pivote,x;

for(i=1;i<=tam;i++)
{
res=0;m=i;
while(res==0)
{
if((mat[m][i]>0.0000001)||((mat[m][i]<-0.0000001)))
{
res=1;
}
else
m++;
}
col_pivote=mat[m][i];
for(j=1;j<=(tam+1);j++)
{
x=mat[m][j];
mat[m][j]=mat[i][j];
mat[i][j]=x/col_pivote;
SENA 41

}
for(k=i+1;k<=tam;k++)
{
x=mat[k][i];
for(j=i;j<=(tam+1);j++)
{
mat[k][j]=mat[k][j]-x*mat[i][j];
}
}
}

for(i=tam;i>=1;i--)
for(j=(i-1);j>=1;j--)
{
mat[j][tam+1]=mat[j][tam+1]-mat[j][i]*mat[i][tam+1];
mat[j][i]=0;
}
}
SENA 42

Ejercicio 5.2
#include<stdio.h>
#include<conio.h>
main()
{
int dia,c,mes[12];
int m,r=0;
for (c=0;c<=11;c++)
{
printf("ingrese la cantidad de dias del mes: %d ",c+1);
scanf("%d",&mes[c]);
}
printf("\ncant. de dias del mes diciembre %d",mes[11]);
while (r==0)
{
printf("\nindique un mes\t");
scanf("%d",&m);
printf("\nindique el dia\t");
scanf("%d",&dia);
r=1;
}
printf("el numero de dia dentro del año es: %d ",mes[m]+dia);
getch();
}

También podría gustarte