You are on page 1of 8

UNIVERSIDAD DE EL SALVADOR

FACULTAD DE INGENIERIA Y ARQUITECTURA


ESCUELA DE INGENIERA DE SISTEMAS INFORMATICOS
PROGRAMACION I Ciclo II 2015
GUIA 3: MATRICES
Objetivo: Aprender a utilizar matrices en C, aplicar sus conceptos, analizar y programar.
Contenido:
Parte I:
Parte II:

Ejemplos de uso de matrices


Ejercicios Propuestos

Metodologa de Trabajo:
Semana 1:
De la Parte I: Digitar, compilar, depurar y ejecutar 3 de los ejemplos y un
ejercicio
Semana 2:
De la Parte II, Ejercicios Propuestos, el instructor deber escoger 1 enunciado,
para que el estudiante ejercite el uso de Matrices.
PARTE I. Aplicacin de Matrices
1. Digitar el siguiente programa: e1g3.cpp
// Lee el tipo de boletos que compran en un estadio 5 aficionados
// Hay boletos de tres precios diferentes: General $3.50, Tribuna: $5.50 y Platea: $7.00
// Despliega cuntos boletos de cada tipo compra cada aficionado y el total a cancelar
// Guardarlo en USB como e21g2.cpp
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#define fil 2
#define col 3
void Imprimir(int V[][col])
{
int fi, ci;
float Tp;
for(fi=0;fi<fil;fi++)
{
Tp=0;
printf("\n\n Las cantidades de cada tipo de boleto para el aficionado %i son: \n",fi+1);
for(ci=0;ci<col;ci++)
{
printf("\n\n\t La cantidad de boletos del tipo %i es :\t%i \n",ci+1,V[fi][ci]);

}
Tp=3.50*V[fi][0]+5.50*V[fi][1]+7.00*V[fi][2];
printf("\n\nEl total a pagar por el aficionado %i es de:$ %.2f \n\n\n\n",fi+1,Tp);
system("pause"); system("cls"); getch();
}
}
main()
{
int f, c;
float Tp;
int V[fil][col];
int cant[fil][col];
for(f=0;f<fil;f++)
{
printf("\n Digite la cantidad de boletos del aficionado \t%i: ",f+1);
for(c=0;c<col;c++)
{
printf("\n\t Digite la cantidad de boletos del tipo \t%i: ",c+1);
scanf("%i",&cant[f][c]);
while(cant[f][c]<0)
{
puts("\nError!!\n");
printf("\n\t Digite la cantidad de boletos del tipo \t %i: ",c+1);
scanf("%i",&cant[f][c]); }
}
}
system("cls");
Imprimir(cant) getch();
}
2. Digitar el siguiente programa: e2g3.cpp
//Permite capturar los datos de 5 alumnos. Los datos que se solicitarn sern su cdigo
//y 4 notas.
//Calcula el promedio de cada alumno y luego ordena los registros de los alumnos en
// base a su promedio de mayor a menor. Finalmente, muestra nombre, notas y
//promedio de los alumnos.
//Guardarlo en USB como e2g3.cpp
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
main()
{
system("cls");
int i,j,Codigo[5],aux_codigo,b=1;
float notas[5][5],auxiliar,promedio;
char nombre[5][25],nombre_auxiliar[25];
for(i=0;i<5;i++)

{
printf("\n\nDigite notas del alumno %i: ",i+1);
Codigo[i]=i+1;
promedio=0;
for(j=0;j<4;j++)
{
printf("\nDigite la nota %i: ",j+1);
scanf("%f",&notas[i][j]);
while(notas[i][j]<0 || notas[i][j]>10)
{
printf("\nError!!!Digite la nota %i: ",j+1);
scanf("%f",&notas[i][j]);
}
promedio = promedio + notas[i][j];
}
system("cls");
notas[i][4]= promedio / 4;
//La ltima posicin de cada fila de la matriz notas sera el promedio del alumno
}
system("cls");
while(b!=0)
{
//Ordena a los alumnos en base al promedio ms alto
b=0;
for(i=0;i<4;i++)
{
if(notas[i][4] < notas[i+1][4])
{
//Debido a que se desea ordenar de mayor a menor, en la condicin se
//pregunta si el promedio del alumno actual (notas[i][4]) es menor que el
//promedio del siguiente alumno (notas[i+1][4]).
//De ser cierto, se intercambiarn de posicin y para ello se utilizar
//variable auxiliar
for(j=0;j<5;j++)
{
auxiliar=notas[i][j];
notas[i][j]=notas[i+1][j];
notas[i+1][j]=auxiliar;
//Con lo anterior, solo se ha cambiado la posicin de las notas
//tambin se debe cambiar la posicin del Codigo del alumno para
//que las notas sigan coincidiendo
aux_codigo=Codigo[i];
Codigo[i]=Codigo[i+1];
Codigo[i+1]=aux_codigo;
}
b++;
}
}
}
//Finalmente se mostrar el nombre de los alumnos con sus respectivas notas y
//promedio

system("cls");
printf(" ****** Notas de Alumnos Ordenados en Base a Promedio mas Alto******\n\n");
for(i=0;i<5;i++)
{
printf("\nAlumno %i:\n\n",Codigo[i]);
printf("Nota 1: %.2f", notas[i][0]);
printf(" Nota 2: %.2f", notas[i][1]);
printf(" Nota 3: %.2f", notas[i][2]);
printf(" Nota 4: %.2f", notas[i][3]);
printf(" Promedio: %.2f\n",notas[i][4]);
}
getch();
}
3.

Digitar el siguiente programa: e3g3.cpp

//Permite capturar una matriz de 4 x 4 cuyos elementos sern nmeros enteros.


//Permite tambien capturar un numero, el cual se buscara secuencialmente en la matriz,
//en caso de encontrarse, se mostrar un mensaje indicando que el numero ha sido
//encontrado.
//Ademas se pide imprimir la posicin en la que el numero fue encontrado.
//En el caso de no encontrarse debe mostrar un mensaje indicando que el nmero no fue
//encontrado.
//Guardarlo en USB como e3g3.cpp
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define fil 4
#define col 4
void valorBuscado(int mat[][col],int bus)
{
int cj,fi,c=0;
for(fi=0;fi<fil;fi++)
{
for(cj=0;cj<col;cj++)
{
if(mat[fi][cj]==bus)
{
printf("\n\n\nEl numero ha sido encontrado!!!");
printf("\n\nPosicion que ocupa: matriz[%d][%d]",fi,cj);
c=1;
}
}
}
if (c==0) printf("\n\n\nEl numero no fue encontrado!!!");
getch();
return;
}
main()
{

int matriz[fil][col],i,j;
int mat[fil][col];
int buscar,c,bus;
system("cls");
for(i=0;i<fil;i++)
{
for(j=0;j<col;j++){
printf("\nMatriz[%i][%i] = ",i,j);
scanf("%i",&matriz[i][j]);
}
system("cls");
}
system("cls"); printf("\nDigite el numero a buscar: ");
scanf("%d",&buscar);
valorBuscado(matriz,buscar);
getch();
}
4 Digitar el siguiente programa: e4g3.cpp
//Lee una matriz de 4 x 3 y la muestra
//Si el valor almacenado es menor que 3, lo multiplica por 5
//Al final, se despliega la matriz final.
//Guardarlo en USB como e4g3.cpp
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#define f 4
#define c 3
main()
{
int K[f][c];
int S[f][c];
int i,j;
puts(" LECTURA DE LA MATRIZ FILA POR FILA");
for(i=0;i<f;i++)
{
for(j=0;j<c;j++)
{
printf("\n Introduzca el dato:\t [%i][%i]\t\t",i+1,j+1);
scanf("%i",&K[i][j]);
}
system("cls");
puts(" LECTURA DE LA MATRIZ FILA POR FILA");
}
system("cls");
for(i=0;i<f;i++)
{
for(j=0;j<c;j++){
if(K[i][j]<3)

S[i][j]=5*K[i][j];
else
S[i][j]=K[i][j];
}
}
puts("\n MATRIZ ORIGINAL\n");
for(i=0;i<f;i++){
for(j=0;j<c;j++){
printf("%i\t",K[i][j]);
}
puts("\n");
}
puts("\n MATRIZ MODIFICADA\n");
for(i=0;i<f;i++)
{
for(j=0;j<c;j++)
{
printf("%i\t",S[i][j]);
}
puts("\n");
}
getch();
return 0;
}

3.5 Digitar el siguiente programa: e5g3.cpp


//Lee una matriz de 4x5 y la imprime como tabla.
//Lee un numero cualquiera y l o busca dentro de la matriz de datos, imprimiendo
su ubicacin: //fila y columna donde se encuentra. Imprime todas las apariciones
del nmero buscado.
//Guardarlo en USB como e5g3.cpp
#include <stdio.h>
#include
<conio.h>
main()
{
int mat[4][5];
int dato,fila, col, i, j,
c=0;
for (i=0;i<4;i++)
{
for (j=0; j<5;j++)
{
printf("\n digite el elemento %i \t %i \t", i,j); scanf("%i", &mat[i][j]);
}
}
puts("digite el nmero a buscar");
scanf("%i",&dato);

printf("\n\n\n La matriz en forma de tabla:\n\n\n");


for (i=0;i<4;i++)
{
for (j=0; j<5;j++) printf(" %i \t ", mat[i][j]); printf("\n");
}
//Buscando dato
for(i=0;i<4;i++)
{
for (j=0; j<5;j++)
{
if (mat[i][j] == dato)
{
fila=i; col=j;
printf("\n\n el numero se encuentra en: %i\t%i", fila, col); c=1;
i=4;
}
}
}
if(c==0) puts("no se encuentra el dato");
getch();
return 0;
}
EJERCICIO 1: Tomando como base el programa anterior y haciendo uso de modularidad,
codifique una funcin para desplegar nicamente la ubicacin de la primera aparicin
del dato buscado, almacnelo en USB con el nombre: e6g3.cpp
EJERCICIO 2: Tomando como base el programa: e5g3.cpp y haciendo uso de
modularidad, codifique una funcin para desplegar nicamente la ubicacin de la ltima
aparicin del dato buscado, almacnelo en USB con el nombre: e7g3.cpp
EJERCICIO 3: Disee y codifique una solucin que permita leer 9 datos enteros, que
despliegue los datos pares, y los datos impares los muestre en forma inversa al orden en
que fueron ledos, almacnelo en USB con el nombre: e8g3.cpp
PARTE II. Resolver los siguientes ejercicios propuestos haciendo uso de arreglos y
aplicando la tcnica de Modularidad, cuando sea conveniente o le sea indicado
explcitamente:

INDICACIONES: Guardar en su USB los archivos de la siguiente manera: g3p1.cpp,


en el caso de que se trate del primer problema y as sucesivamente.

1.

Se tienen las 4 calificaciones de cada uno de 5 alumnos, se necesita conocer: el


promedio de cada estudiante y el promedio de todos.

2.

Disee un programa que llene de ceros una matriz cuadrada de nxn, excepto la
diagonal principal donde debe asignar 1. Por ejemplo, si n=4 la matriz resultante,
que se debe de imprimir es:
1

3.

Dada una matriz de nxm elementos, disee un programa que permita calcular
cuntos elementos son mltiplos de 5.

4.

Dada una matriz cuadrada nxn, cuyos elementos enteros deben estar entre 10 y
60, disear un programa que determine si dicha matriz el simtrica.
Se considera que una matriz es simtrica, si a[i][j] == a[j][i]

5.

En una universidad se conoce el nmero de alumnos que ingresaron en sus 7


diferentes carreras, en los ltimos 12 aos. Disee un programa que pueda
proporcionar la siguiente informacin:
Total de alumnos por ao
Porcentaje de alumnos ingresados en el ao X de la carrera Y
En qu ao y en qu carrera se dio el menor ingreso de alumnos
Ao en el cual la carrera T tuvo mayor ingreso de alumnos.

6.

En un almacn se requiere consolidar la informacin mensual de la cantidad de


productos en existencia. Se tienen 5 diferentes tipos. Disee un programa que
muestre lo siguiente:
Total de productos de todos los tipos en el mes.
Promedio de productos de tipo 2 en existencia.
Total de productos por tipo.

7.

Se tienen las 6 calificaciones de 25 alumnos de Programacin I, se necesita


calcular lo siguiente:
La nota promedio de cada examen
El promedio final de cada alumno
El mayor promedio final de los alumnos.
DEBE TRABAJAR CON MATRICES Y VECTORES.

8.

Se tiene una matriz cuadrada de 25 filas y columnas. Se necesita un programa


que genere dos vectores vec1 y vec2 a partir de la matriz, de la siguiente manera:
Si el elemento de la matriz es un nmero par, se almacenar en vec1 en caso
contrario el elemento formar parte de vec2.
El programa debe de imprimir adems la suma de todos los elementos de vec1 y
el nmero de elementos que forman vec2.

You might also like