You are on page 1of 25

Cdigo

Cartula para entrega de


prcticas

FODO-42

Versin

01

Pgina

1/1

Seccin ISO
Fecha de emisin
Secretara/Divisin: Divisin de Ingeniera Elctrica

Profesor:

Asignatura:
Grupo:
No de Prctica(s):
Integrante(s):

Laboratorio de Programacin Avanzada y Mtodos Numricos.

1
Cruz Castillo Laura Esperanza
Pantoja Ramrez Maximiliano

Semestre:
Fecha de entrega:
Observaciones:

CALIFICACIN
:

rea/Departamento: Laboratorios de computacin salas A y B

Rodrguez Gmez Juan ngel

11

2016-1
Domingo 23/08/2015

25 de junio de 2014

Resumen.
El propsito de la prctica 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 ms 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 matemticas con ellos.
En esta prctica se nos ensea algo ms de lo que vimos el curso pasado, ahora siendo la materia un paso ms avanzado al curso de C que
tuvimos tiempo atrs, podemos entender mejor las estructuras, trmino 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.ao.
En cuanto a los arreglos, que es algo de lo que ya tenamos nocin, se nos ense a usarlos ahora cuando stos estn contenidos en una
estructura, lo cual hace el trabajo ms agradable, tanto al programador como a la vista, ahora mismo mostramos varios ejemplos (10) de lo
que estoy hablando, y tanto yo como mi compaera 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 didnt 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, its something we already have the notion of, but now weve 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.

DESARROLLO.

Objetivo.
El alumno conocer y aplicar los conceptos de arreglo y estructura en la realizacin de programas que resuelvan problemas de tipo numrico.
Al final de esta prctica el alumno podr:
1. Manejar arreglos de varias dimensiones.
2. Manipular estructuras.
3.
Realizar
correctamente
programas
que
utilicen
arreglos
y
estructuras.

Introduccin.
El arreglo.
Un arreglo es un conjunto de datos del mismo tipo, que estn organizados secuencialmente en memoria principal, y que dichos datos se
acceden a travs del nombre del arreglo. Cada uno de los componentes del arreglo es llamado elemento, y cada elemento ocupa una direccin
contigua en memoria. Los arreglos pueden ser de una, dos o ms dimensiones. La complejidad de su uso aumenta de acuerdo al nmero de
dimensiones en que se haya definido el arreglo. As un arreglo de una dimensin 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 travs 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:

/* 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 rengln*/
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 lnea para imprimir el siguiente rengln*/
}
system ("PAUSE");
}

PROGRAMA 2:

/* 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(){
/*Declaracin 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:
/* 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");
}

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 despus 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;
}

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 nmeros 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;
}

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 posicin[rengln, columna] del valor
mximo en la matriz. En caso de que el valor mximo 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");
}

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");
}

/
5 x

int
int
int
for
for

}
}
printf(" La primera matriz es:\n");
for(i=0; i<5; i++){
printf("\n");
for(j=0; j<5; j++){

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, y que imprima la matriz
transpuesta*/
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
main (){
L[5][5];
i,j;
(i=0; i<5; i++){
(j=0; j<5; j++){
printf ("Deme los valores [%d,%d]:",i+1,j+1);
scanf ("%d",&L[i][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:

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; adems 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 mdulo 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 mdulo 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 CRUZARN EN EL ORIGEN EN FORMA DE EQUIS X*/
getch();
return0; }

OTRO EJEMPLO:

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 calificacin de varios alumnos, que obtenga el
promedio de las calificaciones, y que diga el nombre del alumno con la calificacin ms alta. Si se repiten las calificaciones altas, deber indicar
todos los alumnos con esa calificacin.*/

#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 lnea siguiente hay un if, que dice que si el nombre no fue introducido o no tiene espacio ocupado en memoria, que rompa toda la operacin*/
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;

CONCLUSIONES.
Maximiliano Pantoja Ramrez.
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 dems, claro que he entendido mejor el tema de las estructuras, ya que nunca lo haba visto en mi vida, as que claro
que aprend y me facilitar la vida de ahora en adelante.
Laura Esperanza Cruz Castillo.
En esta prctica, aprendimos a utilizar arreglos y estructuras para poder plantear de manera ms 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 tena y pienso que esto me facilitar
ms la programacin.

BIBLIOGRAFIA.
Cair, Osvaldo. (2006). Fundamentos de programacin. Piensa en C. Mxico: Pearson

Educacin.
Efran M. Oviedo Regino. (2004). Lgica de Programacin. Bogot: Ecoe Ediciones.

Rodrigo Snachez. (2013). Arreglos. 23/08/2015, de Universidad Tcnica Federico Santa Mara
Sitio web: http://progra.usm.cl/apunte/materia/arreglos.html

You might also like