Mathematics">
Nothing Special   »   [go: up one dir, main page]

Reporte Practica3

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 30

INSTITUTO POLITECNICO NACIONAL

“UNIDAD PROFESIONAL INTERDISCIPLINARIA EN


INGENIERÍA Y TECNOLOGÍAS AVANZADAS”

Unidad de Aprendizaje:
Introducción a la programación

Práctica No. 3
“Manejo de arreglos unidimensionales y multidimensionales”

REPORTE
Práctica 3

ALUMNO:
Torres Cervantes Ángel Aarón

Docente:
MAZA CASAS LAMBERTO

Grupo: 1MV1

Fecha: 07/10/2018
REPORTE DE LA PRACTICA 3
“MANEJO DE ARREGLOS UNIDIMENSIONALES Y
MULTIDIMENSIONALES”
EJERCICIO 1:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char *argv[])
{
int i, numero[100], j, c[10]={0};
srand(time(NULL));
printf ("Histograma:\n");
for (i=0;i<100;i++){
numero[i] = 1 + rand ()% ((10+1)-1) ;
printf ("%i\t",numero[i]);
if (numero[i]==1){c[0]++;}
if (numero[i]==2){c[1]++;}
if (numero[i]==3){c[2]++;}
if (numero[i]==4){c[3]++;}
if (numero[i]==5){c[4]++;}
if (numero[i]==6){c[5]++;}
if (numero[i]==7){c[6]++;}
if (numero[i]==8){c[7]++;}
if (numero[i]==9){c[8]++;}
if (numero[i]==10){c[9]++;}
}
printf("\n\nLa frecuencia de los numeros es: \n");
for (j=0;j<10;j++){
printf("%d==>%3d\n",j+1,c[j]);
}
system ("PAUSE");
return 0;
}
En este ejercicio lo que se debía realizar primeramente era generar un vector de 100 elemento, pero
este se tenía que producir automáticamente aplicando el uso de la función srand la cual nos ayuda a
generar números aleatorios en un determinado rango que nosotros determinemos.

Lo difícil de esto fue una vez con eso realizado buscar la forma de cómo hacer el conteo de su
frecuencia que fue la parte quemas trabajo me costó de comprender y con la cual después pude
entender que existen variadas formas de realizarlo, pero además que se tenía que generar un nuevo
vector de 10 elementos el cual requería de expresar las sumas que se obtenían de la frecuencia,
una vez que entendí y descubrí un modo para hacerlo ya resulto más fácil realizar este ejercicio.
EJERCICIO 2:

#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int vec[10]={0},i=0;
printf("Introduzaca el vector de 10 elementos: \n\n");
for (i=0;i<10;i++){
printf("Introduzca el valor %d del vector: ",i+1);
scanf("%d",&vec[i]);
int j=0;
for (j=0;j<i;j++){
if (vec[j]==vec[i]&&vec[j]!=0){
vec[i]=0;
}
}
}
printf("\n");
printf("El vector resultante sin repeticion de elementos es: \n\n");
i=0;
for(i=0;i<10;i++){
printf("%d\t",vec[i]);
}
printf ("\n\n");
system ("PAUSE");
return 0;
}
En este ejercicio lo que se tenía que realizar era eliminar valores repetidos en un vector y
suplantarlos con un 0, para esto primero se necesitaba declarar el vector de 10 elementos que fue
introducido por el usuario para después con una secuencia de condiciones evaluar que no se
repitieran valores y en su caso remplazarlo con un 0.

En si el ejercicio me resulto sencillo de realizar no resulto tan complicado uy fue sencillo ya que solo
era necesario declarar algunas sentencias y hacer que se evaluaran los casos para finalizar ya
imprimir un vector con los valores que se querían.
EJERCICIO 3:
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int fil,col, horizontal[12], hor2[12],vertical[10], fila,columna, suma=0, i, menor=1000, mayor=0,
mayor2=0;
int tabla[10][12]={{90,90,40,60,20,80,10,10,30,70,50,25},{100,80,50,10,60,40,100,40,80,70,100,56},
{70,90,60,20,80,50,20,60,30,70,110,60},{50,60,50,30,20,80,50,40,20,70,200,70},
{90,90,60,40,80,70,60,40,30,50,10,40},{40,10,50,40,30,90,30,80,80,60,90,86},{100,40,20,50,10,100
90,80,100,70,130,120},{70,10,90,70,50,30,70,60,20,50,40,89},
{40,30,40,70,10,100,20,20,70,20,90,66},{10,60,100,50,60,40,50,100,90,20,15,30}};
printf("Registro mensual de lluvias en centimetros,en 10 estados de Mexico,durante 12 meses:
(Sonora, Ags, Oaxaca, Colima, chihuahua, San luis Potosi, Durango, Veracruz, Yucatan Y
Tabasco)\n");
printf("\nFilas: Estados \nColumnas:Meses\n\n");
for (fil=0;fil<10;fil++){
for (col=0;col<12;col++){
printf("%d\t",tabla[fil][col]);
}
printf("\n");
}
for(fila=0;fila<10;fila++)
{ suma=0;
for(columna=0;columna<12;columna++)
{
suma+=tabla[fila][columna];
}
vertical[fila]=suma;
}
printf("\nLa suma de cada estado es: \n");
for(i=0;i<10;i++)
{
printf("%d\t",vertical[i]);
if (vertical[i]>mayor){
mayor= vertical[i];
}
if (vertical[i]<menor){
menor=vertical[i];
}
}
printf("\n\nEl estado con mayor registro de precipitacion pluvial es: \n");
if (mayor==vertical[0]){printf("\nSonora:");}
if (mayor==vertical[1]){printf("\nAguascalientes:");}
if (mayor==vertical[2]){printf("\nOaxaca:");}
if (mayor==vertical[3]){printf("\nColima:");}
if (mayor==vertical[4]){printf("\nChihuahua:");}
if (mayor==vertical[5]){printf("\nSan Luis Potosi:");}
if (mayor==vertical[6]){printf("\nDurango:");}
if (mayor==vertical[7]){printf("\nVeracruz:");}
if (mayor==vertical[8]){printf("\nYucatan:");}
if (mayor==vertical[9]){printf("\nTabasco:");}
printf("%d",mayor);
printf("\n\nEl estado con menor registro de precipitacion pluvial es: \n");
if (menor==vertical[0]){printf("\nSonora:");}
if (menor==vertical[1]){printf("\nAguascalientes:");}
if (menor==vertical[2]){printf("\nOaxaca:");}
if (menor==vertical[3]){printf("\nColima:");}
if (menor==vertical[4]){printf("\nChihuahua:");}
if (menor==vertical[5]){printf("\nSan Luis Potosi:");}
if (menor==vertical[6]){printf("\nDurango:");}
if (menor==vertical[7]){printf("\nVeracruz:");}
if (menor==vertical[8]){printf("\nYucatan:");}
if (menor==vertical[9]){printf("\nTabasco:");}
printf("%d\n\n",menor);
for(i=0;i<12;i++){
hor2[i]=tabla[1][i];
// printf("%d\t",hor2[i]);
if (hor2[i]>mayor2){
mayor2= hor2[i];
}
}
printf("\nEl mayor registro que se tuvo en aguascalientes fue: \n%d",mayor2);
printf("\nQue se presento en los meses de: \n");
if (mayor2==hor2[0]){printf(" Enero");}
if (mayor2==hor2[1]){printf(" Febrero");}
if (mayor2==hor2[2]){printf(" Marzo");}
if (mayor2==hor2[3]){printf(" Abril");}
if (mayor2==hor2[4]){printf(" Mayo");}
if (mayor2==hor2[5]){printf(" Junio");}
if (mayor2==hor2[6]){printf(" Julio");}
if (mayor2==hor2[7]){printf(" Agosto");}
if (mayor2==hor2[8]){printf(" Septiembre");}
if (mayor2==hor2[9]){printf(" Octubre");}
if (mayor2==hor2[10]){printf(" Noviembre");}
if (mayor2==hor2[11]){printf(" Diciembre");}
printf("\n");
system ("PAUSE");
return 0;
}
Este ejercicio en lo particular me pareció muy completo y a la vez muy laborioso ya que requería de
utilizar muchas funciones para responder a cada inciso planteado en el problema.

Lo primero fue definir e imprimir en pantalla la matriz con los valores proporcionados, ya una vez
hecho esto procedí a realizar las sumas de renglones para dar solución al problema aquí fue donde
se me dificulto un poco debido que al principio no encontraba la forma correcta de hacer esto debido
a que no usaba correctamente las condiciones, una vez hecho esto los definí en un nuevo vector del
cual procedí a evaluar que se estuvieran cumpliendo para llevar a cabo la solución a cuál era el valor
máximo y el mínimo, de este modo obtener las respuestas a inciso a y b.

Por ultimo tome el vector del inciso c para resolver ese estado y usando ciertas condiciones
dictamine que fuera el máximo y nos proporcionara el mes en que ese valor máximo se presentaba.

Más que nada lo complejo fue realizar todas las sumas y los vectores necesarios.
EJERCICIO 4:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int i, j, lab[5][6]={{1,2,1,1,0,0},{1,0,1,1,0,1},{1,0,1,1,0,1},{1,0,0,0,0,1},{1,1,0,1,1,1}};
printf("El siguiente programa es un juego de laberinto, donde el cursor del usuario esta indicado con
el numero 2\nSe inicia en la posicion\
[0][1]\nPara terminar el recorrido debe hacer llegar el cursor a la posicion [0][5]\n\n");
for (i=0;i<5;i++)
{
for (j=0;j<6;j++)
{
printf ("%d\t",lab[i][j]);
}
printf ("\n");
}
do{
char pos;
printf ("\n A ) Arriba\n\n B ) Abajo\n\n I ) Izquierda\n\n D ) Derecha\n\nIntroduce la letra del menú
que indique la direccion a la que deseas avanzar:\n");
scanf (" %c",&pos);
switch (pos){
case 'A':
for (i=0;i<5;i++)
{
for (j=0;j<6;j++)
{
if (lab[i][j]==2 && lab[(i-1)][j]!=1)
{
lab [i][j]=0;
lab [i-1][j]=2;
goto brake;
}
}
}
break;
case 'B':
for (i=0;i<5;i++)
{
for (j=0;j<6;j++)
{
if (lab[i][j]==2 && lab[(i+1)][j]!=1)
{
lab [i][j]=0;
lab [(i+1)][j]=2;
goto brake;
}
}
}
break;
case 'I':
for (i=0;i<5;i++)
{
for (j=0;j<6;j++)
{
if (lab[i][j]==2 && lab[i][(j-1)]!=1)
{
lab [i][j]=0;
lab [i][j-1]=2;
goto brake;
}
}
}
break;
case 'D':
for (i=0;i<5;i++)
{
for (j=0;j<6;j++)
{
if (lab[i][j]==2 && lab[i][(j+1)]!=1)
{

lab [i][j]=0;
lab [i][(j+1)]=2;
goto brake;
}
}
}
break;
default: printf("\nLetra ingresada invalida\n");
break;
}
brake:
printf ("\n");
for (i=0;i<5;i++)
{
for (j=0;j<6;j++)
{
printf ("%d\t",lab[i][j]);
}
printf ("\n");
}
}while (lab[0][5]!=2);
printf("\n!!FELICIDADES¡¡\nHaz concluido el laberinto...\n");
system("PAUSE");
return 0;
}
Este ejercicio me resultó muy complejo ya que la aplicación que se le quería dar es muy completa al
intentar llevar a cabo una simulación de un laberinto.

Lo difícil al principio fue que requería de implementar una matriz inicial y de aquí partir en una
determinada posición y que el usuario con una tecla definiera el movimiento que quería realizar, para
lo cual fue necesario de establecer una serie de condiciones y proporcionarle al usuario las
instrucciones que debería seguir para realizar su recorrido.

Lo complicado fue al momento de que ya se introducía un carácter por el usuario volver a interpretar
la matriz y escribirla de nuevo donde se observara la nueva posición que llevaría el usuario.

Pero una vez que pude hacerlo para un movimiento ya solo establecía las condiciones para los
diferentes casos y poder realizar todo el recorrido y que se fuese imprimiendo en pantalla para la
apreciación del usuario.
EJERCICIO 5: Método de la burbuja
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int vec[10]={0},j=0,i=0,aux;
printf("Introduzaca el vector de 10 elementos: \n\n");
for (i=0;i<10;i++){
printf("Introduzca el valor %d del vector: ",i+1);
scanf("%d",&vec[i]);
}
printf("\n\nEl vector es: \n");
for(i=0;i<10;i++){
printf("%d\t",vec[i]);
}
for (i=0;i<10;i++){
for(j=0;j<10;j++){
if(vec[j]>vec[j+1]){
aux=vec[j];
vec[j]=vec[j+1];
vec[j+1]=aux;
}
}
}
printf("\n\nEl vector ordenado por el metodo burbuja es: \n");
for (i=0;i<10;i++){
printf("%d\t",vec[i]);
}
printf("\n");
system ("PAUSE");
return 0;
}
Este ejercicio más que nada solo fue para realizar la comprobación y utilización de este metodo
conocido como el “método de la burbuja”-

El cual simplemente consistía en que se introduciría un vector de 10 elementos para el ejemplo y


que a través de una secuencia de evaluaciones y comprobaciones con sentencias el programa lo
ordenara de mayor a menor y nos imprimiera este nuevo vector para observar como era el acomodo
final.

Fue sencillo de comprobarlo ya que el código ya era proporcionado por la práctica solo era cuestión
de acomodarlo y comprobarlo nosotros mismos.
EJERCICIO 5: Traspuesta de una matriz nxn
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int i,j, n;
printf("Escriba la dimension de la matriz nxn :\n");
scanf("%d",&n);
int matrix_a[n][n];
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf("Numero %d,%d: ", i + 1, j + 1);
scanf("%d", &matrix_a[i][j]);
}
}
printf("\nMatriz:\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf("%3d", matrix_a[i][j]);
}
printf("\n");
}

int matrix_aT[n][n];
for (i=0;i<n;i++){
for(j=0;j<n;j++){
matrix_aT[i][j] = matrix_a[j][i];
}
}
// /* Imprime la matriz traspuesta. *///
printf("\nMatriz traspuesta:\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf("%3d", matrix_aT[i][j]);
}
printf("\n");
}
system ("PAUSE");
return 0;

Este ejercicio lo que se solicitaba era realizar la impresión de la traspuesta de una matriz
previamente introducida por el usuario.

Lo cual en si era muy sencillo solo se necesitó que primeramente pedir el tamaño de la matriz que
obviamente debería ser cuadrada para luego de esta que el usuario introdujera cada valor y con una
sentencia que determine le di la orden al programa de imprimirla en la forma de su transpuesta
cambiando las posiciones de todos los valores.
EJERCICIO 5: Determinante de una matriz 3x3
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int determinante;
int i,j;
printf("programa para calcular el determinante de matrices 3x3 de numero enteros, por el metodo de
esquema de sarrus\n");
int matrix_a[3][3];
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf("Numero %d,%d: ", i + 1, j + 1);
scanf("%d", &matrix_a[i][j]);
}

}
printf("\nMatriz:\n");
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf("%3d", matrix_a[i][j]);
}
printf("\n");
}
determinante= (matrix_a[0][0]*matrix_a[1][1] *matrix_a[2][2])+(matrix_a[2][0]*matrix_a[0]
[1]*matrix_a[1][2])+(matrix_a[0][2] *matrix_a[1][0] *matrix_a[2][1])-(matrix_a[2][0]*matrix_a[1]
[1]*matrix_a[0][2])-(matrix_a[0][0] *matrix_a[1][2] *matrix_a[2][1])-(matrix_a[0][1] *matrix_a[1][0]
*matrix_a[2][2]);
printf("\nEl determinante es: %d\n", determinante);
system ("PAUSE");
return 0;
}

Este ejercicio de igual forma consistía en la realización de una operación de una matriz para la
obtención de su determinante el cual era en este caso el resultado que se quería obtener por lo cual.

El método que se uso fue el de sarus el cual con la declaración de la matriz solamente fue necesario
declarar las operaciones a llevar acabo para solucionar el problema.

Lo difícil fue declarar cada operación para obtener su determinante de ahí en fuera lo demás solo fue
la declaración de la matriz inicial y el resultado del determinante.
EJERCICIO 5: Inversa de una matriz 3x3
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int i=0,j=0;
float determinante;
printf("programa para calcular la inversa de matrices 3x3: \n");
int matrix_a[3][3];
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf("Numero %d,%d: ", i + 1, j + 1);
scanf("%d",&matrix_a[i][j]);
}
}
printf("\nMatriz:\n");
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {

printf("%3d", matrix_a[i][j]);
}
printf("\n");
}

determinante= (matrix_a[0][0]*matrix_a[1][1] *matrix_a[2][2])+(matrix_a[2][0]*matrix_a[0]


[1]*matrix_a[1][2])+(matrix_a[0][2] *matrix_a[1][0] *matrix_a[2][1])-(matrix_a[2][0]*matrix_a[1]
[1]*matrix_a[0][2])-(matrix_a[0][0] *matrix_a[1][2] *matrix_a[2][1])-(matrix_a[0][1] *matrix_a[1][0]
*matrix_a[2][2]);
printf("\nEl determinante es: %f\n", determinante);
int matrix_aAdj[3][3]={

(1*(matrix_a[1][1] * matrix_a[2][2] - matrix_a[2][1] * matrix_a[1][2])),


(-1*(matrix_a[1][0] * matrix_a[2][2] - matrix_a[2][0] * matrix_a[1][2])),
(1*(matrix_a[1][0] * matrix_a[2][1] - matrix_a[2][0] * matrix_a[1][1])),
(-1*(matrix_a[0][1] * matrix_a[2][2] - matrix_a[2][1] * matrix_a[0][2])),
(1*(matrix_a[0][0] * matrix_a[2][2] - matrix_a[2][0] * matrix_a[0][2])),
(-1*(matrix_a[0][0] * matrix_a[2][1] - matrix_a[2][0] * matrix_a[0][1])),
(1*(matrix_a[0][1] * matrix_a[1][2] - matrix_a[1][1] * matrix_a[0][2])),
(-1*(matrix_a[0][0] * matrix_a[1][2] - matrix_a[1][0] * matrix_a[0][2])),
(1*(matrix_a[0][0] * matrix_a[1][1] - matrix_a[1][0] * matrix_a[0][1]))};
printf("\nMatriz de cofactores: \n");
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("%3d",matrix_aAdj[i][j]);
}
printf("\n");
}
printf("\nMatriz adj(a), transpuesta de la matriz de cofactores:\n");
int matrix_aT[3][3]= {(matrix_aT[0][0]=matrix_aAdj[0][0]),(matrix_aT[0][1]=matrix_aAdj[1][0]),
(matrix_aT[0][2]=matrix_aAdj[2][0]), (matrix_aT[1][0]=matrix_aAdj[0][1]), (matrix_aT[1]
[1]=matrix_aAdj[1][1]),(matrix_aT[1][2]=matrix_aAdj[2][1]),(matrix_aT[2][0]=matrix_aAdj[0][2]),
(matrix_aT[2][1]=matrix_aAdj[1][2]),(matrix_aT[2][2]=matrix_aAdj[2][2]),};
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("%3d",matrix_aT[i][j]);
}

printf("\n");
}
float det=1/determinante;
//printf("%f",det);

printf("\nMatriz inversa: \n");

if (determinante!=0){

float matrix_inv[3][3]={

(matrix_inv[0][0]=((matrix_aT[0][0])*(det))),(matrix_inv[0][1]=((matrix_aT[0][1])*(det))),(matrix_inv[0]
[2]=((matrix_aT[0][2])*(det))), (matrix_inv[1][0]=((matrix_aT[1][0])*(det))), (matrix_inv[1]
[1]=((matrix_aT[1][1])*(det))),(matrix_inv[1][2]=((matrix_aT[1][2])*(det))),(matrix_inv[2]
[0]=((matrix_aT[2][0])*(det))), (matrix_inv[2][1]=((matrix_aT[2][1])*(det))),
(matrix_inv[2][2]=((matrix_aT[2][2])*(det))),};
for(i=0;i<3;i++){

for(j=0;j<3;j++){
printf("%f\t",matrix_inv[i][j]);
}
printf("\n");
}
}
else{
printf("La matriz no tiene inversa porque el determinante es 0\n0")
}

system ("PAUSE");
return 0;
}
Este ejercicio fue uno de los más complejos de realizar ya que para la resolución del ejercicio de
matriz inversa fue necesario la aplicación de un método en especial el cual era necesario
primeramente obtener el determínate al resolverla por cofactores sacar esta matriz generada por los
cofactores una vez hecho esto ahora era necesario sacar la traspuesta de esta matriz para que una
vez sacada esto tener la matriz adjunta que al ser multiplicada por la inversa del determinante
produciría la matriz inversa todo esto se hizo con la declaración de varias situaciones que algunas
siendo repetitivas el método nos daría los resultados y pasos necesarios para la obtención de la
inversa y además aclarando que esto fue hecho para una de 3x3 ya que para mayor extensión sería
mucho más extenso y complejo todo el código.
PROYECTO OPCIONAL
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int n,j=0,i=0,aux;
printf("Introduzaca el numero de elementos del vector: \n");
scanf("%d",&n);
int vec[n];
for (i=0;i<n;i++){
printf("Introduzca el valor %d del vector: ",i+1);
scanf("%d",&vec[i]);
}
printf("\n\nEl vector es: \n");
for(i=0;i<n;i++){
printf("%d\t",vec[i]);
}
for (i=0;i<n;i++){
for(j=0;j<n;j++){
if(vec[j]>vec[j+1]){
aux=vec[j];
vec[j]=vec[j+1];
vec[j+1]=aux;
}
}
}
printf("\n\nEl vector ordenado por el metodo burbuja es: \n");
for (i=0;i<n;i++){
printf("%d\t",vec[i]); }
printf("\n");
system ("PAUSE");
return 0; }
Este ejercicio fue uno de los más fáciles ya que era realizar la aplicación del método de la burbuja,
pero esta vez era realizarlo para un vector de n elementos en donde el usuario determinaría el
tamaño e introducirá los valores de su vector para que el programa haciendo aplicación del método
de la burbuja se los ordenara en forma ascendente es decir de menor a mayor.
PROBLEMA DE APLICACIÓN

#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int i,j;
int oficinas[6][7]={{00,01,02,03,04,05,06},{10,11,12,13,14,15,16},{20,21,22,23,24,25,26},
{30,31,32,33,34,35,36},{40,41,42,43,44,45,46},{50,51,52,53,54,55,56}};
printf("Las oficionas estan ordenadas de la siguiente forma: \nFilas el primer digito\nColumnas el
segundo digito\n");
for (i=0;i<6;i++){
for(j=0;j<7;j++){
printf("%3d",oficinas[i][j]);
}
printf("\n");
}
int n,m;
printf("Que oficina se esta incendiando: ");
printf("\nFILA: \n");
scanf("%d",&m);
printf("\nCOLUMNA:\n");
scanf("%d",&n);
printf("Oficina: %d",oficinas[m][n]);
printf("\nSe activan los rociadores en las oficinas: \n");
for (i=0;i<6;i++){
for (j=0;j<7;j++){
if (m==i&&n==j&&m-1>=0&&n-1>=0){
printf("%d\n",oficinas[m-1][n-1]);}
if (m==i&&n==j&&n-1>=0){
printf("%d\n",oficinas[m][n-1]);}
if (m==i&&n==j&&m+1<6&&n-1>=0){
printf("%d\n",oficinas[m+1][n-1]);}
if (m==i&&n==j&&m-1>=0){
printf("%d\n",oficinas[m-1][n]);}
if (m==i&&n==j){
printf("%d\n",oficinas[m][n]);}
if (m==i&&n==j&&m+1<7){
printf("%d\n",oficinas[m+1][n]);}
if (m==i&&n==j&&m-1>=0&&n+1<7){
printf("%d\n",oficinas[m-1][n+1]);}
if (m==i&&n==j&&n+1<7){
printf("%d\n",oficinas[m][n+1]);}
if (m==i&&n==j&&m+1<6&&n+1<7){
printf("%d\n",oficinas[m+1][n+1]);}
}
}
printf("\nSe activan las alarmas en las oficinas: \n");
for (i=0;i<6;i++){
for (j=0;j<7;j++){
if (m==i&&n==j&&m-2>=0&&n-2>=0){
printf("%d\n",oficinas[m-2][n-2]);}
if (m==i&&n==j&&m-2>=0&&n-1>=0){
printf("%d\n",oficinas[m-2][n-1]);}
if (m==i&&n==j&&m-2>=0){
printf("%d\n",oficinas[m-2][n]);}
if (m==i&&n==j&&m-1>=0&&n-2>=0){
printf("%d\n",oficinas[m-1][n-2]);}
if (m==i&&n==j&&n-2>=0){
printf("%d\n",oficinas[m][n-2]);}
if (m==i&&n==j&&m+1<6&&n-2>=0){
printf("%d\n",oficinas[m+1][n-2]);}
if (m==i&&n==j&&m+2<6&&n-2>=0){
printf("%d\n",oficinas[m+2][n-2]);}
if (m==i&&n==j&&m+2<6&&n-1>=0){
printf("%d\n",oficinas[m+2][n-1]);}
if (m==i&&n==j&&m+2<6){
printf("%d\n",oficinas[m+2][n]);}
if (m==i&&n==j&&m-2>=0&&n+1<7){
printf("%d\n",oficinas[m-2][n+1]);}
if (m==i&&n==j&&m-2>=0&&n+2<7){
printf("%d\n",oficinas[m-2][n+2]);}
if (m==i&&n==j&&m-1>=0&&n+2<7){
printf("%d\n",oficinas[m-1][n+2]);}
if (m==i&&n==j&&n+2<7){
printf("%d\n",oficinas[m][n+2]);}
if (m==i&&n==j&&m+1<6&&n+2<7){
printf("%d\n",oficinas[m+1][n+2]);}
if (m==i&&n==j&&m+2<6&&n+2<7){
printf("%d\n",oficinas[m+2][n+2]);}
if (m==i&&n==j&&m+2<6&&n+1<7){
printf("%d\n",oficinas[m+2][n+1]);}
}
}
system ("PAUSE");
return 0;
}

Comentario sobre el problema de aplicación realizado para la práctica numero 3:


Este problema que elabore como parte final de la práctica número 3, fue el que más trabajo me
costó de comprender como es que funcionaba y como podía yo plantear una solución a este
utilizando los arreglos.

Primeramente, me tuve que repasar muy bien las indicaciones de este ejercicio obedeciendo las
instrucciones del mismo para lo cual era importante ya que de este punto partí a plantear las
diferentes situaciones posibles para la solución.

Lo primero que hice fue declarar la matriz de las oficinas donde proporcioné un valor numérico a
cada una para así llamarla después cuando fuese necesario.

Una vez hecho esto procedí realizar la pregunta al usuario de donde se detectaba el incendio, o la
señal de humo, una vez que realizaba esto el problema proponía que tenía que realizar la impresión
en pantalla de las oficinas donde se encendían los rociadores y las oficinas donde se prendían las
alarmas.

Aquí fue la parte difícil ya que al principio no lograba establecer como iba a hacer esto sino ya hasta
que después de un análisis plante ciertas condiciones con las cuales hice las pruebas necesarias y
pude determinar que en efecto estaba realizando lo que se pedía, ya solamente para complementar
tuve que definir las condiciones para cada caso y así de este modo logre realizar este problema de
aplicación el cual me resulto en lo particular muy interesante y curioso de realizar ya que abarco un
amplio desarrollo y finalmente con esto pude lograr entender a la perfección el tema que
corresponde a esta práctica número 3.

También podría gustarte