practica 1. arreglos y estructuras

17
Carátula para entrega de prácticas Código FODO-42 Versión 01 Página 1/1 Sección ISO Fecha de emisión 25 de junio de 2014 Secretaría/División: División de Ingeniería Eléctrica Área/Departamento: Laboratorios de computación salas A y B Profesor: Rodríguez Gómez Juan Ángel Asignatura: Laboratorio de Programación Avanzada y Métodos Numéricos. Grupo: 11 No de Práctica(s): 1 Integrante(s): Cruz Castillo Laura Esperanza Pantoja Ramírez Maximiliano Semestre: 2016-1 Fecha de entrega: Domingo 23/08/2015 Observaciones: CALIFICACIÓN:

Upload: laurix-kztillo

Post on 07-Dec-2015

225 views

Category:

Documents


5 download

DESCRIPTION

Práctica de laboratorio de programación avanzada y métodos númericos

TRANSCRIPT

Page 1: Practica 1. Arreglos y Estructuras

Resumen.

Carátula para entrega de prácticas

Código FODO-42

Versión 01

Página 1/1

Sección ISO

Fecha de emisión 25 de junio de 2014

Secretaría/División: División de Ingeniería Eléctrica Área/Departamento: Laboratorios de computación salas A y B

Profesor: Rodríguez Gómez Juan Ángel

Asignatura: Laboratorio de Programación Avanzada y Métodos Numéricos.

Grupo: 11

No de Práctica(s): 1

Integrante(s): Cruz Castillo Laura Esperanza

Pantoja Ramírez Maximiliano

Semestre: 2016-1

Fecha de entrega: Domingo 23/08/2015

Observaciones:

CALIFICACIÓN:

Page 2: Practica 1. Arreglos y Estructuras

El propósito de la práctica es la de reforzar conocimientos y por qué no, encontrarte con nuevos, justo ahora es el tema de arreglos y de estructuras, que no son más que conjuntos de datos que se pueden almacenar hasta ser llamados de nuevo, o modificados posteriormente.El arreglo puede almacenar únicamente elementos de un mismo tipo, mientras que una estructura puede almacenar elementos completamente diferentes el uno del otro, y luego cada uno de estos dos elementos de un programa, puede ser llamado posteriormente y usar sus valores contenidos para mostrarlos y/o realizar operaciones matemáticas con ellos.En esta práctica se nos enseña algo más de lo que vimos el curso pasado, ahora siendo la materia un paso más avanzado al curso de C que tuvimos tiempo atrás, podemos entender mejor las estructuras, término que para nosotros era desconocido hasta ahora, ahora es mejor comprendido, uno simplemente puede mandar a llamar cualquier elemento de dicha estructura, con un comando completamente sencillo y comprensible “nombreEstructura.año”.En cuanto a los arreglos, que es algo de lo que ya teníamos noción, se nos enseñó a usarlos ahora cuando éstos están contenidos en una estructura, lo cual hace el trabajo más agradable, tanto al programador como a la vista, ahora mismo mostramos varios ejemplos (10) de lo que estoy hablando, y tanto yo como mi compañera de trabajo, esperamos comprenda mejor el tema como nosotros lo hicimos.

Resume.

The purpose of this practice is to reinforce our knowledge and why not, find some new knowledge; right now, the subject is arrays and structures, which are more commonly known as a data set that can be stored in them until they are called again, of modified on some point.The array can store only elements of a single type, while the structure can store elements which are completely different from one another, and then each one of these two elements of a program, can be called later and we can use their content values to show them and/or use them in math operations.In this practice we are taught something more than what we already saw in the last course, now, being this one a more advanced C course, we can have a better understanding of the structures, which was a term we didn’t even know until now (my partner and me), it is now better understood, one could simply call any element of said structure, with a simple and easy command “StructureName.year”.As to the arrays, it’s something we already have the notion of, but now we’ve been taught to use them while they are contained in a structure, which makes our job a lot more nicer than ever before, both the programmer and the view of it, it gets nicer.Right ahead, my partner and I made a few examples (10) of that which we speak of, we are hoping that you understand this subject as well as we did.

Page 3: Practica 1. Arreglos y Estructuras

DESARROLLO.

Objetivo.

El alumno conocerá y aplicará los conceptos de arreglo y estructura en la realización de programas que resuelvan problemas de tipo numérico. Al final de esta práctica el alumno podrá: 1. Manejar arreglos de varias dimensiones. 2. Manipular estructuras. 3. Realizar correctamente programas que utilicen arreglos y estructuras.

Introducción.

El arreglo.

Un arreglo es un conjunto de datos del mismo tipo, que están organizados secuencialmente en memoria principal, y que dichos datos se acceden a través del nombre del arreglo. Cada uno de los componentes del arreglo es llamado elemento, y cada elemento ocupa una dirección contigua en memoria. Los arreglos pueden ser de una, dos o más dimensiones. La complejidad de su uso aumenta de acuerdo al número de dimensiones en que se haya definido el arreglo. Así un arreglo de una dimensión se puede ver como una lista lineal de datos, uno de dos dimensiones como una tabla, y uno de tres dimensiones como un conjunto de tablas

La estructura.

Una estructura es un conjunto de datos a los que se hace referencia a través de un mismo nombre. A diferencia de un arreglo, una estructura puede tener elementos de distintos tipos, por ejemplo de tipo int, float, double, char, etc.

PROGRAMA 1:

Page 4: Practica 1. Arreglos y Estructuras

/* Ejemplo1: Programa que lee y despliega en pantalla una matrizde 4 x 4 */

#include<stdio.h>#include<stdlib.h>main(){intM[4][4];inti,j;/* Ciclo para la lectura por renglón*/for(i=0;i<4;i++)for(j=0;j<4;j++){printf("Dame el elemento %d,%d: ",i,j);scanf("%d",&M[i][j]);}printf("\n");/*Ciclo para la escritura de la matriz en pantalla*/for(i=0;i<4;i++){for(j=0;j<4;j++)printf("%d\t",M[i][j]);printf("\n");/*nueva línea para imprimir el siguiente renglón*/ }system ("PAUSE"); }

PROGRAMA 2:

Page 5: Practica 1. Arreglos y Estructuras

/* Ejemplo 2: Programa que lee el nombre y la edad del alumno y los guarda en una estructura */

#include<stdio.h>#include<stdlib.h>main(){ /*Declaración de la estructura con el nombre alumno*/struct{charnombre[50];intedad; }alumno;printf("\n Introduce el nombre: ");/*Lee la cadena introducida utilizando el formato %s, y esalmacenada en la variable nombre de la estructura alumno*/scanf("%s",alumno.nombre);printf("\n Introduce la edad: ");scanf("%i",&alumno.edad);printf("\n\nEl nombre tecleado es %s",alumno.nombre);printf("\nLa edad es %i \n\n",alumno.edad);system ("PAUSE"); }

PROGRAMA 3:

Page 6: Practica 1. Arreglos y Estructuras

/* Ejemplo 1 en clase: Este programa pedirá el nombre del usuario y lo mostrará en vertical*/

#include<stdio.h>#include<stdlib.h>main (){charM[10];intj;printf("Introduce tu nombre: ");for(j=0;j<10;j++){scanf("%c",&M[j]); }printf("\n\t\t");for(j=0;j<10;j++){printf("%c\t",M[j]);printf("\n\n\t\t");}system ("PAUSE");}

Page 7: Practica 1. Arreglos y Estructuras

PROGRAMA 4:#include<stdio.h>void main(){struct{char mes[20];intdia;intanio;}alumno;do{printf("\n Introduce el dia (numer): ");scanf("%i",&alumno.dia);}while(alumno.dia>31 || alumno.dia<1);printf("\n Introduce el mes (texto): ");

/* Las peticiones o scanf, toman la variable de la estructura "alumno" agregando un punto para después referirse a la variable de la misma estructura. EJ. "alumno.mes" */

scanf("%s",alumno.mes);printf("\n Introduce el anio (numer): ");scanf("%i",&alumno.anio);printf("\n\nLa fecha introcida es: %i / %s / %i",alumno.dia,alumno.mes,alumno.anio);getch();return0;}

Page 8: Practica 1. Arreglos y Estructuras

PROGRAMA 5:ANALISIS DE DATOS:DATOS DE ENTRADA: entero= M[][];DATOS IMTERMEDIOS: entero= i, j;DATOS DE SALIDA: entero= total;/*Ejercicio 1: Hacer el algoritmo y programa que almacene números en una matriz de 5 x 6. Imprimir la matriz, así como la suma de todos sus elementos.*/#include<stdio.h>int main(){

int M[6][5];inti, j, total=0;for(i=0;i<6;i++){printf("\n\t%d%c FILA\n",i+1,166);

for(j=0;j<5;j++){ printf("Dame el elemento [ %d ]: ",j+1); scanf("%d",&M[i][j]);

} }

printf("\n");for(i=0;i<6;i++){for(j=0;j<5;j++){printf("%d\t",M[i][j]);total = total + M[i][j];

}printf("\n");}printf("\n\n\tEl resultado de su suma es: %d \n",total);

getch();return 0;

}

Page 9: Practica 1. Arreglos y Estructuras

PROGRAMA 6:ANALISIS DE DATOS:DATOS DE ENTRADA: entero= L[][];DATOS IMTERMEDIOS: entero= i, j, Max;DATOS DE SALIDA: entero= Max;/* Ejercicio 2: Hacer el algoritmo y programa que lea una matriz de 5 x 5 y determine la posición[renglón, columna] del valor máximo en la matriz. En caso de que el valor máximo se repita, determinar todas las posiciones en las que se encuentra*/

#include <stdio.h>#include <windows.h>main (){ intL[5][5];intMax=0;inti,j;for(i=0; i<5; i++){for(j=0; j<5; j++){printf("Deme los valores [%d,%d]: ",i+1,j+1);scanf("%d",&L[i][j]); } } printf("\n");for(i=0; i<5; i++){for(j=0; j<5; j++){if(Max < L[i][j]){ Max = L[i][j];} } } printf("El valor maximo es: %d \n",Max);system("PAUSE");}

Page 10: Practica 1. Arreglos y Estructuras

PGROGRAMA 7:ANALISIS DE DATOS:DATOS DE ENTRADA: entero= L[][], M[][], N[][];DATOS IMTERMEDIOS: entero= i, j;DATOS DE SALIDA: entero= L[][], M[][], N[][];/*Ejercicio 7: Hacer el algoritmo y programa que almacene en un arreglo de 3 dimensiones, dosmatrices cuadradas de 3 x 3, hacer la suma, y guardar la nueva matriz, dentro delmismo arreglo. Imprimir las tres matrices*/#include<stdio.h>#include<stdlib.h>#include <windows.h>intmain (){ intL[3][3];intM[3][3];intN[3][3];inti,j;for(i=0; i<3; i++){for(j=0; j<3; j++){printf("Deme los valores [%d,%d] de la primera matriz:",i+1,j+1);scanf("%d",&L[i][j]); } }for(i=0; i<3; i++){for(j=0; j<3; j++){printf("Deme los valores [%d,%d] de la segunda matriz:",i+1,j+1);scanf("%d",&M[i][j]); } }printf("La primera matriz es:\n"); for(i=0; i<3; i++){printf("\n");for(j=0; j<3; j++){printf("%6d ",L[i][j]);} }printf("\nLa segunda matriz es:\n"); for(i=0; i<3; i++){printf("\n");for(j=0; j<3; j++){printf("%6d ",M[i][j]); } }

for(i=0; i<3; i++){printf("\n");for(j=0; j<3; j++){ N[i][j]=L[i][j]+M[i][j];} }printf(" La suma de la matriz es:\n"); for(i=0; i<3; i++){printf("\n");for(j=0; j<3; j++){printf("%6d ",N[i][j]);} }printf("\n"); system("PAUSE");}

EJERCICIO 8:ANALISIS DE DATOS:DATOS DE ENTRADA: entero= L[][];PROGRAMA 8:DATOS IMTERMEDIOS: entero= i, j;DATOS DE SALIDA: entero= L[][];

/ *Ejercicio 8: Hacer el algoritmo y programa que lea una matriz de 5 x 5, y que imprima la matriztranspuesta*/

#include <stdio.h>#include <stdlib.h>#include <windows.h>intmain (){ intL[5][5];inti,j;for(i=0; i<5; i++){for(j=0; j<5; j++){printf ("Deme los valores [%d,%d]:",i+1,j+1); scanf ("%d",&L[i][j]);

} }

Page 11: Practica 1. Arreglos y Estructuras

printf(" La primera matriz es:\n"); for(i=0; i<5; i++){printf("\n");for(j=0; j<5; j++){printf("%6d ",L[i][j]);} }printf("\nLa transpuesta de la matriz es:\n"); for(i=0; i<5; i++){printf("\n");for(j=0; j<5; j++){printf("%6d ",L[j][i]);} }printf("\n"); system("PAUSE");}

EJERCICIO 14:

Page 12: Practica 1. Arreglos y Estructuras

PROGRAMA 9:ANALISIS DE DATOS:DATOS DE ENTRADA: entero= punto[];float= lon;DATOS IMTERMEDIOS: float=longitud[2],pendiente[2];DATOS DE SALIDA: entero= punto[]; float=longitud;/*Ejercicio 14: Hacer el algoritmo y programa que almacene en un arreglo de estructuras, los puntos extremos de dos rectas, y que determine la longitud de las mismas; además indicar si son perpendiculares. */#include <stdio.h>structrecta { int punto[4]; float lon; };structrecta segUno, segDos;intmain(){ floatlongitud[2],pendiente[2];/*SEGMENTO UNO:*/segUno.punto[0]= -3; segUno.punto[1]= 3; segUno.punto[2]= 3; segUno.punto[3]= -3;printf("\n PRIMER SEGMENTO DEL PUNTO A[%d,%d] AL PUNTO B[%d,%d]\n\n",segUno.punto[0], SegUno.punto[1], segUno.punto[2], segUno.punto[3]);longitud[0]=sqrt(pow((segUno.punto[2]-segUno.punto[0]),2)+pow((segUno.punto[3]-segUno.punto[1]),2));printf("\tLONGITUD= %.2f",longitud[0]);/*La longitud 1 se saca con el módulo de respectivos puntos*//*SEGMENTO DOS:*/segDos.punto[0]= 3; segDos.punto[1]= 3; segDos.punto[2]= -3; segDos.punto[3]= -3;printf("\n\n SEGUNDO SEGMENTO DEL PUNTO C[%d,%d] AL PUNTO D[%d,%d]\n\n",segDos.punto[0], segDos.punto[1], segDos.punto[2], segDos.punto[3]);longitud[1]=sqrt(pow((segDos.punto[2]-segDos.punto[0]),2)+pow((segDos.punto[3]-segDos.punto[1]),2));printf("\tLONGITUD= %.2f",longitud[1]);/*La longitud 2 se saca con el módulo de respectivos puntos*//*PERPENDICULAREIDAD:*/pendiente[0]=(segUno.punto[2]-segUno.punto[0])/(segUno.punto[3]-segUno.punto[1]);pendiente[1]=(segDos.punto[2]-segDos.punto[0]) / (segDos.punto[3]-segDos.punto[1]);if(pendiente[0]*pendiente[1]==-1){/*Si el producto de ambas pendientes da -1, es perpendicular*/printf("\n\n\tLOS SEGMENTOS SON PERPENDICULARES");}else{printf("\n\n\tLOS SEGMENTOS NO SE CRUZAN");}/*AMBOS SEGMENTOS SE CRUZARÁN EN EL ORIGEN EN FORMA DE EQUIS X*/getch();return0; }

OTRO EJEMPLO:

Page 13: Practica 1. Arreglos y Estructuras

PROGRAMA 10:ANALISIS DE DATOS:DATOS DE ENTRADA: entero= nota;char= nombre, apellido;DATOS IMTERMEDIOS: entero= i, j;DATOS DE SALIDA: entero= nota;char= nombre, apellido; float=promedio;/*Ejercicio 15: Hacer el algoritmo y programa que almacene en un arreglo de estructuras, el nombre y calificación de varios alumnos, que obtenga el promedio de las calificaciones, y que diga el nombre del alumno con la calificación más alta. Si se repiten las calificaciones altas, deberá indicar todos los alumnos con esa calificación.*/#include<stdio.h>inti, j; structalumno { charnombre[20]; charapellido[10]; floatpromedio;intnota[3]; }alu[3];

main(){ for(i=0; i<3; i=i+1){

printf("\nALUMNO [%d / 3]\n",i+1); fflush(stdin); printf("NOMBRE DEL ALUMNO: ",i+1);scanf("%s",&alu[i].nombre); fflush(stdin); if(alu[i].nombre[0]=='\0')break;printf("APELLIDO DEL ALUMNO: ",i+1); scanf("%s",&alu[i].apellido); fflush(stdin); for(j=0;j<3;j++){

printf("CALIFICACION DEL PARCIAL %d: ",j+1); scanf("%i", &alu[i].nota[j]); fflush(stdin);

} }/*En la línea siguiente hay un if, que dice que si el nombre no fue introducido o no tiene espacio ocupado en memoria, que rompa toda la operación*/printf("\n");for(i=0; i<3; i++){ if(alu[i].nombre[0]=='\n'|| alu[i].nombre[0]=='\x0') break;alu[i].promedio= (alu[i].nota[0]+ alu[i].nota[1]+ alu[i].nota[2])/3;printf("ALUMNO(A): %20s %10s; \nParciales: [%d, %d, %d] -- Promedio: %.2f\n\n", alu[i].nombre, alu[i].apellido, alu[i].nota[0], alu[i].nota[1], alu[i].nota[2], alu[i].promedio);}

if(alu[0].promedio==alu[1].promedio && alu[1].promedio==alu[2].promedio)printf("\nTodos tienen la misma calificacion: %.2f",alu[1].promedio); if(alu[0].promedio==alu[1].promedio && alu[1].promedio!=alu[2].promedio)printf("\n%20s y \n%20s \ntienen la mejor calificacion: %.2f", alu[0].nombre, alu[1].nombre, alu[1].promedio);if(alu[0].promedio==alu[2].promedio && alu[2].promedio!=alu[1].promedio)printf("\n%20s y \n%20s \ntienen la mejor calificacion: %.2f", alu[0].nombre, alu[2].nombre, alu[2].promedio);if(alu[1].promedio==alu[2].promedio && alu[2].promedio!=alu[0].promedio)printf("\n%20s y \n%20s \ntienen la mejor calificacion: %.2f", alu[1].nombre, alu[2].nombre, alu[2].promedio);if(alu[0].promedio>alu[1].promedio && alu[0].promedio>alu[2].promedio)printf("\n%20s y \n%20s \ntiene la mejor calificacion: %.2f", alu[0].nombre, alu[0].promedio);if(alu[1].promedio>alu[0].promedio && alu[1].promedio>alu[2].promedio)printf("\n%20s y \n%20s \ntiene la mejor calificacion: %.2f", alu[1].nombre, alu[1].promedio);if(alu[2].promedio>alu[0].promedio && alu[2].promedio>alu[1].promedio)printf("\n%20s y \n%20s \ntiene la mejor calificacion: %.2f", alu[0].nombre, alu[0].promedio);getch(); return0; }

Page 14: Practica 1. Arreglos y Estructuras

CONCLUSIONES.

Maximiliano Pantoja Ramírez.Los objetivos se han cumplido, para empezar, he logrado hacer programas con estructuras y arreglos a la vez, así que ya cubierto el último objetivo, comprendo los demás, claro que he entendido mejor el tema de las estructuras, ya que nunca lo había visto en mi vida, así que claro que aprendí y me facilitará la vida de ahora en adelante.

Laura Esperanza Cruz Castillo.En esta práctica, aprendimos a utilizar arreglos y estructuras para poder plantear de manera más sencilla los problemas que puede llegar a plantear un ingeniero.Entendí muy bien a utilizar los arreglos y estructuras, los ejercicios me ayudaron a resolver las dudas que tenía y pienso que esto me facilitará más la programación.

BIBLIOGRAFIA.

Cairó, Osvaldo. (2006). Fundamentos de programación. Piensa en C. México: Pearson Educación.

Efraín M. Oviedo Regino. (2004). Lógica de Programación. Bogotá: Ecoe Ediciones.

Rodrigo Snachez. (2013). Arreglos. 23/08/2015, de Universidad Técnica Federico Santa María Sitio web: http://progra.usm.cl/apunte/materia/arreglos.html