Sei sulla pagina 1di 26

UNIVERSIDAD NACIONAL AUTNOMA DE MXICO

FACULTAD DE INGENIERA
COMPUTACIN PARA INGENIEROS (LABORATORIO)

PRACTICA 9: INTRODUCCION A LA PROGRAMACION EN C

FECHA: MARTES 25 DE OCTUBRE DEL 2011

ALAN SAID ALAVEZ SALAZAR 309072135 MALDONADO FERNNDEZ GUSTAVO ADOLFO 412001112 EQUIPO : 15

Arreglos unidimensionales y multidimensionales

Los arreglos son una coleccin de variables del mismo tipo que se referencian utilizando un nombre comn. Un arreglo consta de posiciones de memoria contigua. La direccin ms baja corresponde al primer elemento y la ms alta al ltimo. Un arreglo puede tener una o varias dimensiones. Para acceder a un elemento en particular de un arreglo se usa un ndice. El formato para declarar un arreglo unidimensional es:
tipo nombre_arr [

tamao ]

Por ejemplo, para declarar un arreglo de enteros llamado listanum con diez elementos se hace de la siguiente forma:
int listanum[10];

En C, todos los arreglos usan cero como ndice para el primer elemento. Por tanto, el ejemplo anterior declara un arreglo de enteros con diez elementos desde listanum[0] hasta listanum[9]. La forma como pueden ser accesados los elementos de un arreglo, es de la siguiente forma:
listanum[2] = 15; /* Asigna 15 al 3er elemento del arreglo listanum*/ num = listanum[2]; /* Asigna el contenido del 3er elemento a la variable num */

El lenguaje C no realiza comprobacin de contornos en los arreglos. En el caso de que sobrepase el final durante una operacin de asignacin, entonces se asignarn valores a otra variable o a un trozo del cdigo, esto es, si se dimensiona un arreglo de tamao N, se puede referenciar el arreglo por encima de N sin provocar ningn mensaje de error en tiempo de compilacin o ejecucin, incluso aunque probablemente se provoque el fallo del programa. Como programador se es responsable de asegurar que todos los arreglos sean lo suficientemente grandes para guardar lo que pondr en ellos el programa. C permite arreglos con ms de una dimensin , el formato general es:
tipo nombre_arr [

tam1 ][ tam2 ] ... [ tamN];

Por ejemplo un arreglo de enteros bidimensionales se escribir como:


int tabladenums[50][50];

Observar que para declarar cada dimensin lleva sus propios parntesis cuadrados. Para acceder los elementos se procede de forma similar al ejemplo del arreglo unidimensional, esto es,
tabladenums[2][3] = 15; /* Asigna 15 al elemento de la 3 fila y la 4 columna*/ num = tabladenums[25][16];

A continuacin se muestra un ejemplo que asigna al primer elemento de un arreglo bidimensional cero, al siguiente 1, y as sucesivamente.
main() { int t,i,num[3][4]; for(t=0; t<3; ++t) for(i=0; i<4; ++i) num[t][i]=(t*4)+i*1; for(t=0; t<3; ++t) { for(i=0; i<4; ++i) printf("num[%d][%d]=%d ", t,i,num[t][i]); printf("\n"); } }

En C se permite la inicializacin de arreglos, debiendo seguir el siguiente formato:


tipo nombre_arr[

tam1 ][ tam2 ] ... [ tamN] = {lista-valores};

Por ejemplo:
int i[10] = {1,2,3,4,5,6,7,8,9,10}; int num[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};

//1.-programa para obtener el producto cruz de dos vectores en plano x,y,z #include<conio.h> #include<stdio.h> main () { int a[3],b[3],c,d=0; int j; printf("Introduzca el vector mediante un enter:\n"); printf("Vector a:\n"); for (j=0;j<3;j++) { scanf("%d",&a[j]); } printf("Vector b:\n"); for (j=0;j<3;j++) { scanf("%d",&b[j]); } printf("El valor resultante es:\n"); for(j=0;j<3;j++) { c = a[j] * b[j]; d=c+d; } printf("%d",d); getch(); return 0; }

//3.-Programa para obtener el modulo de un vector en el plano x,y #include<conio.h> #include<stdio.h> #include<math.h> main () { #define P printf #define S scanf int i; float a[2],b=0,c;

P("Introduzca el vector:\n"); for(i=0;i<2;i++) { S("%f",&a[i]); c=a[i]*a[i]; b=b+c; } b=sqrt(b); P("%f",b); getch(); return 0; }

//5.-Programa para obtener el modulo de un vector en 6 planos #include<conio.h> #include<stdio.h> #include<math.h> main () { #define P printf #define S scanf int i; float a[6],b=0,c;

P("Introduzca el vector:\n"); for(i=0;i<6;i++) { S("%f",&a[i]); c=a[i]*a[i]; b=b+c; } b=sqrt(b); P("%f",b); getch(); return 0; }

//7.-Programa para obtener la resistencia equivalente #include<conio.h> #include<stdio.h> main () { #define P printf #define S scanf int i,a[20],b=0; for(i=0;i<20;i++)

{ P("Introduzca la resistencia %d :\n",i+1); S("%d",&a[i]); b=b+a[i]; } P("La resistencia equivalente es: %d",b); getch(); return 0; }

//9.-Impresion del promedio de los numeros en las pocisiones pares #include<conio.h> #include<stdio.h> main () { #define P printf #define S scanf int i,a[20],h; float b=0; P("Introduce 20 numeros\n\n"); for(i=1;i<21;i++) { scanf("%d",&a[i]); h=i%2; if (h==0) b = b+a[i]; } P("El promedio de los numeros en pocisiones pares es: %.2f",b/10); getch(); return 0; }

//11.-obetener matricula y calificacion de los alumnos e imprimirlos #include<conio.h> #include<stdio.h> main () { #define P printf #define S scanf int alu,i,mat[100],calif[100]; P("Introduzca el numero de alumnos:\n");

S("%d",&alu); P("\n\n"); for(i=0;i<alu;i++) { P("Introduzca la matricula del alumno [%d]:\n",i+1); S("%d",&mat[i]); P("Introduzca la calificacion del alumno:\n"); S("%d",&calif[i]); P("\n\n"); } P("Los calificaciones de cada alumno con su matricula son:\n\n\n"); for(i=0;i<alu;i++) { P("Alumno[%d]:\tCalificacion: %d \t matricula: %d\n",i+1,calif[i],mat[i]); } getch(); }

//13.-Ordenar de mayor a menos 20 numeros metodo usado - de la burbuja //13.-Ordenar de mayor a menos 20 numeros metodo usado - de la burbuja #include<conio.h> #include<stdio.h> main () { #define P printf #define S scanf int i,a[20],x=0,j,k,n;

P("Introduce 20 numeros\n\n"); for(n=0;n<20;n++) { //* S("%d",&a[n]); } //* P("\n\n\n"); for(i=1;i<n;i++) //establece el limite n*j de cambios posibles { //** para for(j=0;j<(n-i);j++) // establece cambios en j veces { //*** para if(a[j]<a[j+1]) //evalua cada elemento y hace cambios { //**** si x=a[j]; //cont toma valor de arreglo de pocision j a[j]=a[j+1]; //j toma pocision de j+a a[j+1]=x; //j+1 toma el valor de cont } //**** fin si //extra /* k=j; //se ve los procesos que se hacen for(k=0;k<n;k++) { P("%d\n",a[k]); } P("\n"); */ //fin vista de proceso // fin extra } //*** fin para //P("\n\n\n"); } P("\nlos elementos ordenados de mayor a menor son:\n"); //** fin para for(j=0;j<n;j++) P("[%d] = %d\n",j+1,a[j]); getch(); }

//15.- Obtencion de la moda de un conjunto de numeros #include <conio.h> #include <stdio.h> main() { #define P printf #define S scanf int valor[50],n,i,moda[50],j,k,l,x;

P("Teclee el numero de elementos que introducira (menor a 50):\n"); S("%d",&n); P("Introduza los valores:\n"); for(i=0;i<n;i++) S("%d",&valor[i]); moda[50]=0; for(i=0;i<n;i++) { for(j=0;j<n;j++) { if(valor[i]==valor[j]) { moda[j]++; } } } valor[j]=moda[j]; for(k=1;k<n;k++) { for(l=0;l<(n-k);l++) { if(valor[k] < valor[l]) { x=valor[l]; valor[l]=valor[l+1]; valor[l+1]=x; } } } //uso de for1 //cierre del for1

P("La moda del conjunto de elementos fue : %d", valor[0]); getch(); return 0; }

//17.-programa para sumar los elementos en pocisiones pares #include <conio.h> #include <stdio.h> #include <stdlib.h> main() { #define P printf #define S scanf int n,i,num[30],suma=0,x; P("Teclee el numero de elementos que introducira (menor a 30):\n"); S("%d",&n); P("Introduza los valores:\n"); for(i=0;i<n;i++) S("%d",& num[i]); for(i=0;i<n;i++) { x=i%2; if(x==1) { suma = suma + num[i]; } } P("La suma de los elementos en posicion impar es: %d\n",suma); system("pause"); }

//19.-Calcular el centro de masas #include <conio.h> #include <stdio.h> #include <stdlib.h> main() { int n,cont=0,cont2=0,cont3=0,cont4=0; int p,s,i,s2,s1,s3,x[20],y[20],m[20]; #define P printf

#define S scanf P("Introduzca el numero de masas que desea introducir:\n"); S("%d",&n); for(i=0;i<n;i++) { P("Introduzca la coordenada del valor x[%d]:\n",i+1); S("%d",&x[i]); } for(i=0;i<n;i++) { P("Introduzca la coordenada del valor y[%d]:\n",i+1); S("%d",&y[i]); } for(i=0;i<n;i++) { P("Introduzca la masa del valor m[%d]:\n",i+1); S("%d",&m[i]); } //sumatoria de x for(i=0;i<n;i++) { s=m[i]*x[i]; cont=cont+s; } for(i=0;i<n;i++) { s1=m[i]; cont2=cont2+s1; } p=cont/cont2; P("La coordenada del centro de masas en x es: %d\n\n",p); //sumatoria de y for(i=0;i<n;i++) { s2=m[i]*y[i]; cont3=cont3+s2; } p=cont3/cont2; P("La coordenada del centro de masas en y es: %d",p);

getch(); return 0; }

//21.-obtener promedio y generar vector 10 #include<conio.h> #include<stdio.h> main() {

int elemento[10],suma=0,i,cont=0,cont2=0; #define P printf #define S scanf P("Introduzca los 10 elementos del vector:\n"); for(i=0;i<10;i++) S("%d",&elemento[i]); for(i=0;i<10;i++) { suma = suma + elemento[i]; } suma=suma/10; for(i=0;i<10;i++) { if(elemento[i]<= suma) { cont++; } else { cont2++; } } P("Hubo %d vectores menores o iguales al promedio y %d vectores mayores al promedio",cont,cont2); getch(); return 0; }

//23.-suma de arreglos #include<conio.h> #include<stdio.h> main() { int array[10],array2[10],array3[10],array_suma[10],n,i; #define P printf #define S scanf P("Introduzca el numero de elementos de los 3 conjuntos(menor a 11):\n");

S("%d",&n); P("\n\n"); P("Introduzca los elementos del 1 arreglo:\n\n"); for(i=0;i<n;i++) S("%d",&array[i]); P("\n\n"); P("Introduzca los elementos del 2 arreglo:\n\n"); for(i=0;i<n;i++) S("%d",&array2[i]); P("\n\n"); P("Introduzca los elementos del 3 arreglo:\n\n"); for(i=0;i<n;i++) S("%d",&array3[i]); P("\n\n"); for(i=0;i<n;i++) array_suma[i]=array[i]+array2[i]+array3[i]; P("La suma de cada uno de los elementos es: \n\n"); for(i=0;i<n;i++) P("[%d] \t %d\n",i+1,array_suma[i]); getch(); return 0; }

CONCLUSIONES El uso de arreglos es muy importante, pues ahorra y evita la acumulacin de variables almacenadas en forma de listas lineales, evitando el uso de la declaracin de muchas variables, dentro de una misma dimensin. Las diferentes aplicaciones de ellos son para comparar listas y ejecutarlas en cierta operacin, ordenarlas, obtener valores comunes y operarlos, o simplemente hacer relaciones entre varias listas MESOGRAFIA http://www.fismat.umich.mx/mn1/manual/node6.html

Potrebbero piacerti anche