guia3 laboratorio informatica-matrices

8
Objetivo: Aprender a utilizar matrices en C, aplicar sus conceptos, analizar y programar. Contenido: Parte I: Ejemplos de uso de matrices Parte II: Ejercicios Propuestos Metodología 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. Aplicación 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 cuántos 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]); UNIVERSIDAD DE EL SALVADOR FACULTAD DE INGENIERIA Y ARQUITECTURA ESCUELA DE INGENIERÍA DE SISTEMAS INFORMATICOS PROGRAMACION I Ciclo II 2015 GUIA 3: MATRICES

Upload: cegarcia

Post on 03-Dec-2015

2 views

Category:

Documents


0 download

DESCRIPTION

Guia3 laboratorio informatica-Matrices

TRANSCRIPT

Page 1: Guia3 laboratorio informatica-Matrices

Objetivo: Aprender a utilizar matrices en C, aplicar sus conceptos, analizar y programar.

Contenido: Parte I: Ejemplos de uso de matrices Parte II: Ejercicios Propuestos Metodología 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. Aplicación 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 cuántos 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]);

UNIVERSIDAD DE EL SALVADOR

FACULTAD DE INGENIERIA Y ARQUITECTURA

ESCUELA DE INGENIERÍA DE SISTEMAS INFORMATICOS PROGRAMACION I – Ciclo II 2015

GUIA 3: MATRICES

Page 2: Guia3 laboratorio informatica-Matrices

} 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 solicitarán serán su código //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++)

Page 3: Guia3 laboratorio informatica-Matrices

{ 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 posición 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 más 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 condición 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 intercambiarán de posición 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 posición de las notas //también se debe cambiar la posición 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

Page 4: Guia3 laboratorio informatica-Matrices

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 serán números 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 posición en la que el numero fue encontrado. //En el caso de no encontrarse debe mostrar un mensaje indicando que el número 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() {

Page 5: Guia3 laboratorio informatica-Matrices

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)

Page 6: Guia3 laboratorio informatica-Matrices

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 ubicación: //fila y columna donde se encuentra. Imprime todas las apariciones del número 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 número a buscar"); scanf("%i",&dato);

Page 7: Guia3 laboratorio informatica-Matrices

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 función para desplegar únicamente la ubicación de la primera aparición del dato buscado, almacénelo en USB con el nombre: “e6g3.cpp” EJERCICIO 2: Tomando como base el programa: “e5g3.cpp” y haciendo uso de modularidad, codifique una función para desplegar únicamente la ubicación de la última aparición del dato buscado, almacénelo en USB con el nombre: “e7g3.cpp” EJERCICIO 3: Diseñe y codifique una solución 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 leídos, almacénelo en USB con el nombre: “e8g3.cpp”

PARTE II. Resolver los siguientes ejercicios propuestos haciendo uso de arreglos y

aplicando la técnica de Modularidad, cuando sea conveniente o le sea indicado

explícitamente:

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.

Page 8: Guia3 laboratorio informatica-Matrices

2. Diseñe 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 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

3. Dada una matriz de nxm elementos, diseñe un programa que permita calcular cuántos elementos son múltiplos de 5.

4. Dada una matriz cuadrada nxn, cuyos elementos enteros deben estar entre 10 y

60, diseñar un programa que determine si dicha matriz el simétrica. Se considera que una matriz es simétrica, si a[i][j] == a[j][i]

5. En una universidad se conoce el número de alumnos que ingresaron en sus 7 diferentes carreras, en los últimos 12 años. Diseñe un programa que pueda proporcionar la siguiente información:

Total de alumnos por año

Porcentaje de alumnos ingresados en el año X de la carrera Y

En qué año y en qué carrera se dio el menor ingreso de alumnos

Año en el cual la carrera T tuvo mayor ingreso de alumnos.

6. En un almacén se requiere consolidar la información mensual de la cantidad de productos en existencia. Se tienen 5 diferentes tipos. Diseñe 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 Programación 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 número par, se almacenará en vec1 en caso contrario el elemento formará parte de vec2. El programa debe de imprimir además la suma de todos los elementos de vec1 y el número de elementos que forman vec2.