MATRICES Y VECTORES

36
FACULTAD DE CIENCIAS HUMANAS Y DE LA EDUCACIÓN CARRERA DE DOCENCIA EN INFORMÁTICA TEMA: ARRAYS UNIDIMENSIONAL Y BIDIMENSIONAL NOMBRE: WILMA CAÑAR ASIGANTURA: PROGRAMACIÓN II NOVIEMBRE, 2011 UNIVERSIDAD TÉCNICA DE AMBATO

description

CUADERNO DIGITAL

Transcript of MATRICES Y VECTORES

FACULTAD DE CIENCIAS HUMANAS Y DE LA EDUCACIÓN

CARRERA DE DOCENCIA EN INFORMÁTICA

TEMA:

ARRAYS UNIDIMENSIONAL Y BIDIMENSIONAL

NOMBRE:

WILMA CAÑAR

ASIGANTURA:

PROGRAMACIÓN II

NOVIEMBRE, 2011

UNIVERSIDAD TÉCNICA DE AMBATO

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 2 de 36

A R R A Y S

( V E C T O R E S Y M A T R I C E S )

INTRODUCCIÓN. Los vectores y matrices son uno de los medios principales mediante los cuales se almacenan los datos en un programa. En esta práctica veremos todos los conceptos relativos a la creación y manejo en C de vectores, matrices y cadenas de caracteres. En programación, un vector o matriz (llamados en inglésarrays) es una estructura de datos que almacena bajo el mismo nombre (variable) a una colección de datos del mismo tipo. Independiente de su dimensionalidad, los arrays deben cumplir con ciertas características Almacenan los elementos en posiciones contiguas de memoria Tienen un mismo nombre de variable que representa a todos los

elementos. Para hacer referencia a esos elementos es necesario utilizar un índice que especifica el lugar que ocupa cada elemento dentro del archivo.

Acceso directo o aleatorio a los elementos individuales del arreglo. Ej: Notas[5]=15;

Los arreglos pueden ser unidimensionales o bidimensionales. Los primeros en la programación son conocidos como vectores, y los segundos como matrices.

TODO ARRAY ESTA FORMADO POR:

1.- NOMBRE:Todo array debe tener un nombre, el cual debe cumplir con las mismas características de los nombres de variable, o sea, debe ser único, no debe ser una palabra reservada del lenguaje, ni empezar con números, guiones o underscores (pueden llevar alguno de los 3 últimos entremedio).

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 3 de 36

2.- TIPO: Todo array debe tener un tipo, que corresponde al tipo de valores que se podrán almacenar en él. Pueden ser los mismos tipos que para las variables vistas hasta ahora.

3.- POSICIÓN:Aquí entra la diferencia. Para facilitar la visualización, imaginémonos que una variable común y corriente es un cajón en el que guardamos algo. Ahora, cuando pensamos en un array, pensemos que es una cajonera, con un número de cajones, dentro de los cuales se pueden almacenar varias cosas. Cada uno de estos cajones corresponde a una “posición del array”. Cada posición es como si fuera una variable dentro del array y almacena un valor. Después cuando queramos rescatar ese valor, se accede a la posición necesaria.

TIPOS DE ARRAY

Unidimensionales, también llamados Vectores o listas

Bidimensionales, denominados tablas o Matrices

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 4 de 36

VECTOR Un arreglo de una dimensión (vector o lista) es un tipo de datos estructurado compuesto de un número de elementos finitos, consecutivos de tamaño fijo y elementos homogéneos. Finito indica que el arreglo tiene un número determinado de elementos. Consecutivo que se almacena en posiciones consecutivas de memoria, Tamaño Fijo significa que el tamaño del arreglo debe ser conocido en tiempo de compilación, Homogéneo significa que todos los elementos son del mismo tipo. Como hemos dicho, el vector es un arreglo de “N” elementos organizados en una dimensión donde “N” recibe el nombre de longitud o tamaño del vector.

Cadena de longitud 14

Índice 0 1 2 3 4 5 6 7 8 9 10 11 12 13

Componente 'U' 'N' 'A' ' '

'C' 'A' 'D' 'E' 'N' 'A' 0x0 ? 'Z' ?

Para hacer referencia a un elemento del vector se usa el nombre del mismo, seguido del índice (entre corchetes), el cual indica una posición en particular del vector. Tipo_De_DatoNombre_Del_Vector [número_Elementos] Vec[N] Dónde: Vec………… Nombre del arreglo N…………… Numero de datos que constituyen el arreglo

FORMATO PARA DECLARAR UN VECTOR

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 5 de 36

ejemplo: int notas[43]; charcodigo[4];

Para almacenar valores en un vector los asignamos de la misma forma que a una variable común y corriente, a diferencia de que ahora debemos indicar el índice correspondiente a la posición donde almacenaremos el valor, por ejemplo, si queremos almacenar el valor 2 en la tercera posición de un vector de 5 posiciones:

Vec[2]=2;

Significa que el computador ejecuta un ciclo while o for y con lainstrucción scanf o cin el programa almacena los valores en lasvariables. Ejemplos: El siguiente ciclo muestra cómo se pueden almacenar datos en unvector de n posiciones, usando la instrucción cin: for (i=0;i<=n;i++)

LECTURA DE UN VECTOR

INICIALIZACIÓN EN EL TIEMPO DE EJECUCUCIÓN

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 6 de 36

{ Printf(“Ingreseelementos %d”,i); Scanf(%formato”,&vector[i]); } Para manejar cualquiera de los elementos de un vector se utilizan los subíndices. Por ejemplo para asignar un valor al primer elemento de un vector se utiliza la siguiente sentencia: Números [0] = 20; El valor del subíndice puede variar entre 0 y N-1, siendo N el tamañodel vector, es decir, el número de elementos que tiene el vector. El subíndice puede ser construido utilizando expresiones aritméticas enteras. Por ejemplo: notas[x-y+1] = 18; En general para tener acceso al i-ésimo elemento de un vector se utiliza: vector[i-1]

El subíndice también puede estar conformado por contadores, este caso se puede dar cuando los encontramos dentro de lazos. Porejemplo:

for (i=0; i<N; i++)

{

notas[i] = 18;

}

for (i=0; i<N; i++){

scanf(“%i”, num[i]);

}

Tanto para ingresar datos, como para leerlos, una operación común es recorrerlos mediante ciclos, ya sea con un ciclo de tipo Mientras o uno

ACCESO A LOS ELEMENTOS DE UN VECTOR

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 7 de 36

de tipo Para. Al hacer esto, declaramos una variable para utilizar como índice, la cual se irá moviendo a lo largo del vector. Por ejemplo, si quisiéramos llenar un vector con números iguales a su índice, haríamos algo como esto, asumiendo que el vector es de largo 5:

i=0;

Mientras (i<5) { vector[i] =i; i++; }

Si en vez de ingresar datos, quisiéramos leerlos, lo hacemos de la misma forma.

Para resumir, veamos un ejemplo. En este caso lo que haremos será declarar un vector, decirle al usuario que llene los valores para sus posiciones y luego las mostraremos por pantalla.

Inicio

Damos inicio al programa

Numero vector[5];

Numero i=0;

Declaramos el vector y la variable que utilizaremos como índice para recorrerlo.

principal()

mientras(i<5) {

Mediante un ciclo mientras, le mostramos un mensaje al usuario para que ingrese el valor correspondiente a la posición del vector y luego leemos el dato.

mostrar(“Ingrese el valor %número del vector”, i);

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 8 de 36

leer(vector[i], &numero);

i++; i=0; } mostrar(“Los valores ingresados fueron: “);

Mostramos el mensaje avisando que desplegaremos los valores.

mientras(i<5) {

Dentro de un ciclo mientras, mostramos todos los valores almacenados en el vector.

mostrar(“%numero”, vector[i]);

i++; }

Fin

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 9 de 36

EJERCICIOS CON VECTORES

ENUNCIADO: //Diseñe un programa que me permita generar n elementos de la serie del fibonacci, recorrer el vector// // Y encontrar todos aquellos valores que sean múltiplos de 3, guardarlos en un nuevo vector y presentarlos// // En forma ascendente y descendente //

Para el siguiente programa utilizaremos funciones de entrada y salida, declaramos el tipo de variables y vector, luego indicamos el cuerpo del programa en donde ingresamos el límite del vector utilizando scanf para la lectura, también utilizando sentencia o estructuras WHILE para elegir opciones y finalizamos con impresiones en pantalla utilizando printf.

CODIFICACION: #include<stdio.h>//PARA USAR FUNCIONES DE ENTRADA/SALIDA ESTANDAR// #include<conio.h>//ARCHIVO DE CABEZERA// void main() //INDICA EN SI EL CUERPO DEL PROGRAMA// { //SEÑALA EL PRINCIPIO DEL CUERPO (MAIN)// int i,j,a,b,c,l,op,f,col,m; //DECLARACION DE VARIABLES// intvm[20],v1[20],v2[20],v3[20]; do{ j=1; clrscr(); for(i=2;i<=78;i++)//DISEÑO DEL BORDE// { gotoxy(i,2);printf("*"); gotoxy(i,24);printf("*"); } gotoxy(5,7);printf("**********************************************************************"); for(i=2;i<=24;i++) { gotoxy(2,i);printf("*"); gotoxy(78,i);printf("*"); } textcolor(9); gotoxy(30,3);cprintf("**VECTORES**"); gotoxy(25,5);cprintf("SERIE DE FIBONACCI"); textcolor(6); gotoxy(10,8);cprintf("INGRESE UN LIMITE ==> ");cscanf("%d",&l); //INGRESO DE DATOS POR TECLADO// a=0; b=1; c=0;

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 10 de 36

col=14; f=11; for(i=1;i<=l;i++) { a=b; b=c; c=a+b; v1[i]=c; gotoxy(11,11);printf("VEC_FIB"); gotoxy(col,f);printf("%d",v1[i]); f=f+1; } f=9; col=12;j=1; for(i=1;i<=l;i++) { if(v1[i]%3==0) { vm[j]= v1[i]; gotoxy(20,11);printf("VEC_MUL3"); gotoxy(col+10,f+4);printf("%d", vm[j]); f=f+1;j++; } } f=9; col=33; j=j-1; for(i=j;i>=1;i--) { gotoxy(30,11);printf("VEC_INVER"); gotoxy(col,f+4);printf("%d", vm[i]); //MUESTRA EN PANTALLA EL RESULTADO// f=f+1; } textcolor(12); gotoxy(53,23);cprintf("WILMA CA¥AR"); textcolor(10); gotoxy(5,22);cprintf("Presione 1 para continuar,0 para salir");scanf("%d",&op); } while(op==1); getch(); } //SEÑALA EL FIN DEL CUERPO (MAIN)//

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 11 de 36

EJECUCIÓN:

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 12 de 36

ENUNCIADO: /* Se ingresa n elementos dentros de un vector los mismos que se encuentran entre 6 y 33, encuentra todas las posiciones impares del vector, guárdelos en un nuevo vector y presente ordenado dicho vector*/

Para el siguiente programa utilizaremos funciones de entrada y salida, declaramos el tipo de variables y vector, luego indicamos el cuerpo del programa en donde ingresamos el límite del vector, utilizamos sentencia o estructuras WHILE para dicha validación luego procedemos a ingresar datos utilizando scanf , continuamos con los procesos matemáticos, realizamos la impresión de pantalla utilizando prinf y finalizamos con una expresión lógica.

CODIFICACION: #include<stdio.h>//PARA USAR FUNCIONES DE ENTRADA/SALIDA ESTANDAR// #include<conio.h>//ARCHIVO DE CABEZERA// void main() //INDICA EN SI EL CUERPO DEL PROGRAMA// { //SEÑALA EL PRINCIPIO DEL CUERPO (MAIN)// int vector[20];//DECLARACION DE VECTORES// int vector1[20]; int lim,op,i,j,aux,n,fil,col,c,k;//DECLARACION DE VARIABLES// do{ j=1; clrscr(); for(i=2;i<=78;i++) { gotoxy(i,2);printf("*"); gotoxy(i,24);printf("*"); } gotoxy(5,7);printf("******************************************************"); for(i=2;i<=24;i++) { gotoxy(2,i);printf("*"); gotoxy(78,i);printf("*"); } textcolor(9); gotoxy(30,3);cprintf("**VECTORES**"); c=1; aux=0; fil=18; col=12; gotoxy(25,5);printf ("*LIMITE DEL VECTOR ==> ");scanf("%d",&lim);//INGRESO DEL LIMITE// fil=13; col=12; for(i=1;i<=lim;i++) { do { gotoxy(8,10);printf("vector[i]: ");

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 13 de 36

gotoxy(col,fil);scanf("%d",&vector[i]);//INGRESO DE DATOS POR TECLADO// } while(vector[i]<6||vector[i]>33);//ESTRUCTURA LOGICA O VALIDACION DEL VECTOR/ fil=fil+2; } fil=13; for (i=1;i<=lim;i++) { if (i%2==1) { vector1[j]=vector[i]; gotoxy(24,10);printf("VEC_POSICIONES IMPARES "); gotoxy(30,fil);printf ("%d",vector1[j]); //MUESTRA EN PANTALLA EL RESULTADO// j=j+1; fil=fil+2; } } for(i=1;i<j;i++) { for(k=1;k<j;k++) { if(vector1[i]<vector1[k]) { aux=vector1[i]; vector1[i]=vector1[k]; vector1[k]=aux; } } } fil=13; for(i=1;i<j;i++) { gotoxy(42,10);printf("VECTOR ORDENADO"); gotoxy(45,fil);printf("%d",vector1[i]); //MUESTRA EN PANTALLA EL RESULTADO// fil=fil+2; } textcolor(12); gotoxy(53,23);cprintf("WILMA CA¥AR"); textcolor(10); gotoxy(5,22);cprintf("Presione 1 para continuar,0 para salir");scanf("%d",&op); } while(op==1);/EXPRESION LOGICA// getch();//LEE UNA FUNCION SIN ECO,SIN ESPERAR UN RETORNO// }//SEÑALA EL FIN DEL CUERPO (MAIN)//

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 14 de 36

EJECUCIÓN:

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 15 de 36

MATRIZ

Al igual que los vectores, las matrices son arrays. Sin embargo, a diferencia de ellos, son bidimensionales, o sea operan en 2 dimensiones, a las cuales nos referiremos como filas y columnas, como si fueran una especie de tabla.

Un arreglo bidimensional o matriz se utiliza a menudo para representar tablas de valores, que consta de información ordenada en renglones y columnas. Este tipo de arreglos al igual que los vectores es un tipo de dato estructurado, finito ordenado y homogéneo. Para identificar un elemento específico de una tabla debemos manejar dos índices. Por convención, el primer índice identifica el renglón y el segundo la columna

Algo así:

Para declarar una matriz se hace igual que un vector, pero ahora en vez de indicar el largo, debemos indicar el número de filas y el número de columnas. Como ejemplo:

tipo_dato nombre_arreglo[][]

Numero matriz[4][4];

Matriz bidimensional

Elemento en Índice de columna

0 1 2 3 4

Índice de fila

0 a[0][0] a[0][1] a[0][2] a[0][3] a[0][4]

1 a[1][0] a[1][1] a[1][2] a[1][3] a[0][4]

2 a[2][0] a[2][1] a[2][2] a[2][3] a[0][4]

3 a[3][0] a[3][1] a[3][2] a[3][3] a[0][4]

FORMATO PARA DECLARAR UNA MATRIZ

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 16 de 36

Esa es una matriz cuadrada, de 4 filas y 4 columnas. No es necesario que siempre tengan el mismo número de filas y de columnas. Al igual que en el álgebra, pueden variar.

Para acceder a un elemento del array multidimensional: nombre[i][j];

dónde: 0 <= i < f ; 0 <= j < c;

Sin embargo, es mucho más conveniente anidar dos ciclos para inicializar un array de dos dimensiones:

for (i = 0; i< 3; i++) for (j = 0; j< 4; j++) A[i][j] = i+j;

LECTURA DE UNA MATRIZ

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 17 de 36

Para el proceso de ingreso de datos en una posición de la matriz, debemos indicar su posición relativa con respecto a filas y columnas. Por ejemplo, si quisiéramos almacenar el valor 8 en la segunda fila y primera columna, diríamos algo como esto:

matriz[1][0]=8;

Al igual que en los vectores, cuando queremos ingresar o leer múltiples datos, hacemos uso de ciclos. La diferencia ahora es que para las matrices debemos utilizar 2 ciclos, uno que recorra las filas y otro las columnas. Sería ejemplificado algo así, con una matriz de 4 x 4 y llenando todas sus posiciones con un 8:

i=0;

j=0;

mientras(i<4) {

mientras (j<4)

{

Matriz[i][j]=8; j++: } i++; }

Para recorrer sería el mismo proceso, pero en vez de ingresar datos, los leemos.

Veamos ahora un ejemplo, donde primero declararemos una matriz, luego le diremos a un usuario que ingrese valores y finalmente los mostraremos:

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 18 de 36

Inicio

Damos inicio al programa.

Numero matriz[4][4];

Numero i=0;

Numero j=0;

Declaramos la matriz y las variables que utilizaremos para recorrerlas.

Principal()

mientras(i<4) { mientras(j<4) {

Dentro de los 2 ciclos necesarios para recorrer filas y columnas en la matriz, mostramos un mensaje para que ingresen un valor a esa posición y luego lo leemos.

mostrar(“Ingrese el valor correspondiente a la fila %numero y la columna %numero”,i,j);

leer(%numero, &matriz[i][j]);

j++; } i++; }

i=0;

j=0;

mostrar(“Los valores ingresados son: “);

Avisaremos que mostraremos los valores

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 19 de 36

mientras(i<4) { mientras(j<4) {

Mostramos los valores recorriendo la matriz con los 2 ciclos necesarios.

mostrar(“%numero”,matriz[i][j]); j++; } i++; }

Fin

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 20 de 36

EJERCICIOS CON MATRICES

ENUNCIADO: //Diseñar un programa que me permita realizar las cuatro operaciones básicas, utilizando matrices//

Para el siguiente programa utilizaremos funciones de entrada y salida, declaramos el tipo de variables, dando paso asi a las diferentes estructuras de ingreso y salida de datos, en la cual inicializamos filas y columnas para realizar las operaciones sugueridas, utilizamos scanf para la lectura o ingreso de datos y printf para su impresión y finalizamos con una expresión lógica.

CODIFICACION: #include<stdio.h>//PARA USAR FUNCIONES DE ENTRADA/SALIDA ESTANDAR// #include<conio.h>//ARCHIVO DE CABEZERA// int matriz1[20][20],matriz2[20][20],matriz3[20][20],i,lim,fila,j,col,op,sal,rep;//DECLARACION DE MATRICES Y VARIABLES// void borde()//DISEÑO DEL BORDE// { int i; textcolor(5); for(i=2;i<=24;i++) { gotoxy(2,i);cprintf("*"); gotoxy(78,i);cprintf("*"); } for(i=2;i<=78;i++) { gotoxy(i,2);cprintf("*"); gotoxy(i,24);cprintf("*"); } } void ingreso(int lim)//IESTRUCTURA DE INGRESO// { col=9;fila=10; for(i=1;i<=lim;i++)//INDICE DE FILAS// { for(j=1;j<=lim;j++)//INDICE DE COLUMNAS// { gotoxy(7,8);printf(" MATRIZ 1 "); gotoxy(col,fila);scanf("%d",&matriz1[i][j]); //INGRESO DE DATOS POR TECLADO// col=col+2;

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 21 de 36

} fila=fila+2; col=9; } textcolor(10); col=25;fila=10; for(i=1;i<=lim;i++) { for(j=1;j<=lim;j++) { gotoxy(22,8);printf(" MATRIZ 2 "); gotoxy(col,fila);scanf("%d",&matriz2[i][j]);//INGRESO DE MATRIZ2// col=col+2; } fila=fila+2; col=25; } } void suma(int lim) { fila=10; col=45; for(i=1;i<=lim;i++) { for(j=1;j<=lim;j++) { textcolor(8); gotoxy(43,8);cprintf(" RESPUESTAS "); matriz3[i][j]=matriz1[i][j]+matriz2[i][j]; gotoxy(col,fila);cprintf("%d",matriz3[i][j]);//MUESTRA EN PANTALLA EL RESULTADO// col=col+3; } fila=fila+3; col=45; } } void resta(int lim) { col=45;fila=10; for(i=1;i<=lim;i++) { for(j=1;j<=lim;j++) { gotoxy(43,8);printf("RESPUESTA "); matriz3[i][j]=matriz1[i][j]-matriz2[i][j]; gotoxy(col,fila);printf("%d",matriz3[i][j]);//MUESTRA EN PANTALLA EL RESULTADO//

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 22 de 36

col=col+3; } fila=fila+3; col=45; } } voidmultiplicacion(lim) { col=45;fila=10; for(i=1;i<=lim;i++) { for(j=1;j<=lim;j++) { gotoxy(43,8);printf("RESPUESTAS"); matriz3[i][j]=matriz1[i][j]*matriz2[i][j]; gotoxy(col,fila);printf("%d",matriz3[i][j]);//MUESTRA EN PANTALLA EL RESULTADO// col=col+3; } fila=fila+3; col=45; } } void main() { intlim,i,j; do{ do{ clrscr(); borde(); gotoxy(20,6);cprintf(" MENU DE OPCIONES "); gotoxy(10,8);cprintf(" 1.- SUMA "); gotoxy(10,10);cprintf(" 2ú- RESTA "); gotoxy(10,12);cprintf(" 3ú- MULTILICACION "); gotoxy(10,14);cprintf(" 4ú- SALIR "); gotoxy(10,16);printf(" INGRESE EL LIMITE "); scanf("%d",&lim );//INGRESO DEL LIMITE// gotoxy(4,18);cprintf(" Ingrese la opcion que desee: ");scanf("%d",&op); switch (op) { //suma case 1: clrscr(); borde(); textcolor(9); gotoxy(35,3);cprintf(" **MATRICES** "); gotoxy(28,5);printf("SUMA DE DOS MATRICES "); gotoxy(44,20);cprintf(" WILMA CA¥AR "); ingreso(lim); suma(lim); break;

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 23 de 36

//resta case 2: clrscr(); borde(); gotoxy(30,5);printf(" RESTA "); gotoxy(25,26);cprintf(" WILMA CA¥AR "); ingreso(lim); resta(lim); break; //multiplicacion case 3: clrscr(); borde(); gotoxy(30,5);printf(" MULTIPLICACION"); gotoxy(25,26);cprintf(" WILMA CA¥AR "); ingreso(lim); multiplicacion(lim); break; //salir case4: clrscr(); exit(); break; } textcolor(7); gotoxy(5,23);cprintf("Ingrese 0 para elegir una nueva opcion 1 para salir: ");cscanf("%d",&rep); } while(rep==0); textcolor(2); gotoxy(5,24);cprintf(" Ingrese 1 para continuar 0 para salir: "); cscanf("%d",&sal); textcolor(3); } while(sal==1);//EXPRESION LOGICA// getch();//LEE UNA FUNCION SIN ECO,SIN ESPERAR UN RETORNO// }//SEÑALA EL FIN DEL CUERPO (MAIN)//

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 24 de 36

EJECUCIÓN:

ENUNCIADO: /**Dise¤e un diagrama en C que me permita ingresar datos enteros en una matriz entre 8 y 58 presente el resultado de la matriz solo de sus diagonales principales y secundarias**/

Para el siguiente programa utilizaremos funciones de entrada y salida, declaramos el tipo de variables, luego indicamos el cuerpo del programa en donde inicializamos filas y columnas para realizar las operaciones sugueridas, utilizando asiscanf para su ingreso de datos y printf para su impresion y finalizamos con una expresión lógica.

CODIFICACION: #include<stdio.h>//PARA USAR FUNCIONES DE ENTRADA/SALIDA ESTANDAR// #include<conio.h>//ARCHIVO DE CABEZERA// void main() //INDICA EN SI EL CUERPO DEL PROGRAMA// { //SEÑALA EL PRINCIPIO DEL CUERPO (MAIN)// int matriz[10][10],matriz1[10][10];//DECLARACION DE MATRICES Y VARIABLES// intaux,b,op,i,j,limite,col=10,fil=10; do{ clrscr(); textcolor(11); clrscr(); for(i=1; i<=80;i++)/DISEÑO DE BORDE// { gotoxy(i,1);cprintf("*"); gotoxy(i,4);cprintf("*"); gotoxy(i,20);cprintf("*"); } for(i=1; i<=20;i++) {

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 25 de 36

gotoxy(1,i);cprintf("*"); gotoxy(80,i);cprintf("*"); } textcolor(10); gotoxy(33,3);cprintf("**MATRIZ DIAGONAL**"); textcolor(27); gotoxy(19,6);cprintf("INGRESE EL LIMITE :==> ");scanf("%d",&limite);//INGRESO DEL LIMITE DE LA MATRIZ// textcolor(14); gotoxy(10,9);cprintf("MATRIZ ENTRANTE"); gotoxy(30,9);cprintf("MATRIZ DE SALIDA"); gotoxy(53,9);cprintf("D.PRINCIPAL/SECUNDARIA"); fil=11; col=10; for(i=1;i<=limite;i++)//INDICE DE FILAS// { for(j=1;j<=limite;j++)//INDICE DE COLUMNAS// { do{ gotoxy(col,fil); scanf(" "); gotoxy(col,fil);scanf("%d",&matriz[i][j]);//INGRESO DE DATOS POR TECLADO// } while(matriz[i][j]<8 || matriz[i][j]>58);//EXPRESION LOGICA/ col=col+5; } col=10; fil=fil+1; } col=35; fil=11; for(i=1;i<=limite;i++)//INDICE DE FILAS// { for(j=1;j<=limite;j++)//INDICE DE COLUMNAS// { gotoxy(col,fil);printf("%d",matriz[i][j]); col=col+5; } fil=fil+1; col=35; } col=60; fil=11;

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 26 de 36

textcolor(5); for(i=1;i<=limite;i++) { for(j=1;j<=limite;j++) { if (i==j) { gotoxy(col,fil);cprintf("%d",matriz[i][j]);/MUESTRA EN PANTALLA EL RESULTADO// } } fil=fil+1; col=col+5; } col=75; fil=11; aux=limite; textcolor(25); for(i=1;i<=limite;i++) { gotoxy(col-=5,fil);cprintf("%d",matriz[i][aux]);/MUESTRA EN PANTALLA EL RESULTADO// aux=aux-1; fil=fil+1; } textcolor(12); gotoxy(53,24);cprintf("WILMA CA¥AR"); textcolor(7); gotoxy(5,23);cprintf("Presione 1 para continuar,0 para salir");scanf("%d",&op); } while(op==1);//EXPRESION LOGICO// getch();//LEE UNA FUNCION SIN ECO,SIN ESPERAR UN RETORNO// }//SEÑALA EL FIN DEL CUERPO (MAIN)//

EJECUCIÓN:

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 27 de 36

ENUNCIADO: //Diseñar un programa con matrices que me permita realizar el producto de las matrices//

Para el siguiente programa utilizaremos funciones de entrada y salida, declaramos el tipo de variables, luego indicamos el cuerpo del programa en donde inicializamos filas y columnas para realizar las operaciones sugueridas, utilizando scanf para la lectura de datos y printf para su impresión y finalizamos con una expresión lógica.

CODIFICACION: #include<stdio.h>//PARA USAR FUNCIONES DE ENTRADA/SALIDA ESTANDAR// #include<conio.h>//ARCHIVO DE CABEZERA// int l,c,c1,c2,f,f1,f2,k,i,j,op,a; int matriz1[10][10],matriz2[10][10],matriz3[10][10];//DECLARACION DE MATRICES Y VARIABLES// void borde()//ESTRUCTURA DE BORDE// { for(i=1;i<=25;i++) { textcolor(11); for(i=2;i<=24;i++) { gotoxy(2,i);cprintf("*"); gotoxy(78,i);cprintf("*"); } for(i=2;i<=78;i++) { gotoxy(i,2);cprintf("*"); gotoxy(i,24);cprintf("*"); }}} void ingreso()//FUNCION DE INGRESO// { for(i=1;i<=l;i++)//INDICE DE FILAS// { for(j=1;j<=l;j++)//INDICE DE COLUMNAS// { gotoxy(c,f);cscanf("%d",&matriz1[i][j]);//INGRESO DE DATOS POR TECLADO// c=c+5; } c=5;

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 28 de 36

f=f+1; } for(i=1;i<=l;i++)//INDICE DE FILAS// { for(j=1;j<=l;j++)//INDICE DE COLUMNAS// { gotoxy(c1,f1);cscanf("%d",&matriz2[i][j]);//INGRESO DE DATOS POR TECLADO// c1=c1+5; } c1=25; f1=f1+1; } } void producto()//FUNCION DE CALCULOS MATEMATICOS// { for(i=1;i<=l;i++)/INDICE DE FILAS// { for(j=1;j<=l;j++)//INDICE DE COLUMNAS// { matriz3[i][j]=0; for(k=1;k<=l;k++) { matriz3[i][j]=matriz3[i][j]+matriz1[i][k]*matriz2[k][j]; // } } } for(i=1;i<=l;i++) { for(k=1;k<=l;k++) { gotoxy(c2,f2);printf("%d",matriz3[i][k]);//MUESTRA EN PANTALLA EL RESULTADO// c2=c2+4; } c2=42; f2=f2+1; } textcolor(2); gotoxy(58,22);cprintf(" WILMA CA¥AR "); } void main() { do

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 29 de 36

{ clrscr(); borde(); c=5; c1=25; c2=42; f=10; f1=10; f2=10; textcolor(12); gotoxy(25,3);cprintf("**PRODUCTO DE UNA MATRIZ**"); textcolor(2); gotoxy(10,5);cprintf("**INGRESE EL LIMITE DE LA MATRIZ ==> ");cscanf("%d",&l);//INGRESO DEL LIMITE DE LA MATRIZ// textcolor(5); gotoxy(4,7);cprintf("*MATRIZ 1"); gotoxy(24,7);cprintf("*MATRIZ 2"); gotoxy(38,7);cprintf("PRODUCTO MATRIZ"); ingreso(); producto(); textcolor(5); gotoxy(8,20);cprintf("1 para continuar y 0 para salir ");scanf("%d",&op); } while(op==1);//EXPRESION LOGICO// getch();//LEE UNA FUNCION SIN ECO,SIN ESPERAR UN RETORNO// }//SEÑALA EL FIN DEL CUERPO (MAIN)/

EJECUCIÓN:

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 30 de 36

ENUNCIADO: //Diseñar un programa que me permita encontrar sus diagonales tanto principal como secundaria y que el resto de la matriz se llene con 0//

Para el siguiente programa utilizaremos funciones de entrada y salida, declaramos el tipo de variables, luego indicamos el cuerpo del programa en donde inicializamos filas y columnas para realizar las operaciones sugeridas, utilizando sentencia o estructuras IF Y WHILE en el cual tomamos decisiones en cuanto a filas y columnas, también utilizamos scanf para leer datos y printf para su impresión y finalizamos con una expresión lógica.

CODIFICACION: #include<stdio.h>//PARA USAR FUNCIONES DE ENTRADA/SALIDA ESTANDAR// #include<conio.h>//ARCHIVO DE CABEZERA// intf,c,l,mat[10][10],x,y,op,i;//DECLARACION DE MATRICES Y VARIABLES// void ingreso() { do { clrscr(); textcolor(11); clrscr(); for(i=1; i<=80;i++) { gotoxy(i,1);cprintf("*"); gotoxy(i,4);cprintf("*"); gotoxy(i,20);cprintf("*"); } for(i=1; i<=20;i++) { gotoxy(1,i);cprintf("*"); gotoxy(80,i);cprintf("*"); } textcolor(9); gotoxy(30,2);cprintf("*MATRICES*"); gotoxy(25,3);printf("*INGRESE EL LIMITE ==> : ");scanf("%d",&l);//INGRESO DEL LIMITE DE LA MATRIZ// gotoxy(6,7);printf("Matriz resultante"); for (f=1;f<=l;f++)//INDICE DE FILAS// { for (c=1;c<=l;c++)//INDICE DE COLUMNAS// { mat[f][c]=0; textcolor(8); gotoxy(f*3+8,c*2+8);cprintf("%d",mat[f][c]);//MUESTRA EN PANTALLA EL RESULTADO// } } x=2; for (f=1;f<=l;f++)//INDICE DE FILAS//

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 31 de 36

{ for (c=1;c<=l;c++)//INDICE DE COLUMNAS// { if (f==c) { mat[f][c]=x; x=x+2; } textcolor(2); gotoxy(f*3+8,c*2+8);cprintf("%d",mat[f][c]);//MUESTRA EN PANTALLA EL RESULTADO// } } x=1; y=l; for(f=1;f<=l;f++)//INDICE DE FILAS// { mat[y][f]=x; textcolor(5); gotoxy(y*3+8,f*2+8);cprintf("%d",mat[y][f]); x=x+2; y=y-1; } textcolor(5); gotoxy(58,23);cprintf("*WILMA CA¥AR*"); gotoxy(20,24);printf("Presione 1 para continuar o 0 para salir: ");scanf("%d",&op); } while(op==1); while(op==1); //EXPRESION LOGICO// } void main() //INDICA EN SI EL CUERPO DEL PROGRAMA// { //SEÑALA EL PRINCIPIO DEL CUERPO (MAIN)// clrscr(); ingreso(); }//SEÑALA EL FIN DEL CUERPO (MAIN)/

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 32 de 36

EJECUCIÓN:

ENUNCIADO: //Dise¤ar un programa utilizndo matrices con datos entre 5 y 35 excluyendo las diagonales principal y secundaria en donde la diagonal principal se llene de la serie de fibonacci y la diagonal secundaria con el factorial iniciando en 3. Recorra la matriz y guarde los datos de la diagonal principal y secundaria en un vector y presentelos en forma ascendente//

Para el siguiente programa utilizaremos funciones de entrada y salida, declaramos el tipo de variables, luego indicamos el cuerpo del programa en donde inicializamos filas y columnas para realizar las operaciones sugeridas, en la cual hacemos uso del scanf para leer datos y printf para imprimir, también utilizando sentencia o estructuras IF Y WHILE en el cual tomamos decisiones en cuanto a filas y columnas, asi como también hacemos un ciclo para almacenar datos en un vector y finalizamos con una expresión lógica.

CODIFICACION: #include<stdio.h>//PARA USAR FUNCIONES DE ENTRADA/SALIDA ESTANDAR// #include<conio.h>//ARCHIVO DE CABEZERA// int vector[10],d,a,b,c,vm1[10],matriz[10][10],matriz1[10][10];//DECLARACION DE MATRICES ,VECTORES Y VARIABLES// intaux,op,i,j,limite,col=10,fil=10; void borde()//ESTRUCTURA DEL BORDE// {

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 33 de 36

textcolor(11); for(i=2;i<=24;i++) { gotoxy(2,i);cprintf("*"); gotoxy(78,i);cprintf("*"); } for(i=2;i<=78;i++) { gotoxy(i,2);cprintf("*"); gotoxy(i,24);cprintf("*"); } } void matriz();//ESTRUCTURA DEL PROGRAMA// textcolor(10); gotoxy(33,3);cprintf("**MATRIZ DIAGONAL**"); textcolor(27); gotoxy(19,6);cprintf("INGRESE EL LIMITE :==> ");scanf("%d",&limite);//INGRESO DEL LIMITE DE LA MATRIZ// textcolor(14); gotoxy(10,9);cprintf("MATRIZ ENTRANTE"); gotoxy(35,9);cprintf("D.PRINCI/SEC"); fil=11; col=10; for(i=1;i<=limite;i++)//INDICE DE FILAS// { for(j=1;j<=limite;j++)//INDICE DE COLUMNAS// { do{ gotoxy(col,fil); scanf(" "); gotoxy(col,fil);scanf("%d",&matriz[i][j]); } while(matriz[i][j]<5|| matriz[i][j]>35);//EXPRESION LOGICA VALIDACION DE LAS MATRICES// col=col+5; } col=10; fil=fil+1; } col=35; fil=11; for(i=1;i<=limite;i++)//INDICE DE FILAS// { for(j=1;j<=limite;j++)//INDICE DE COLUMNAS// { textcolor(8); gotoxy(col,fil);cprintf("%d",matriz[i][j]);//MUESTRA EN PANTALLA EL RESULTADO// col=col+5; } fil=fil+1; col=35;

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 34 de 36

} col=35; fil=11; textcolor(5); a=0; b=1; c=0; for(i=1;i<=limite;i++)//INDICE DE FILAS// { for(j=1;j<=limite;j++)//INDICE DE COLUMNAS// { if (i==j) { a=b; b=c; c=a+b; matriz[i][j]=c; textcolor(15); gotoxy(col,fil);cprintf("%d",matriz[i][j]); textcolor(25); gotoxy(55,9);printf("VEC_ORDENADO"); vm1[j]=matriz[i][j]; gotoxy(57,fil);cprintf("%d",vm1[j]);//MUESTRA EN PANTALLA EL RESULTADO// } } fil=fil+1; col=col+5; } col=55; fil=11; aux=limite; textcolor(25); d=3; for(i=1;i<=limite;i++)//INDICE DE FILAS// { d=d*i; gotoxy(col-=5,fil);cprintf("%d",d);//MUESTRA EN PANTALLA EL RESULTADO// textcolor(25); vm1[j]=d; gotoxy(57,fil+4);cprintf("%d",vm1[j]);//MUESTRA EN PANTALLA EL RESULTADO// aux=aux-1; fil=fil+1; } void main() //INDICA EN SI EL CUERPO DEL PROGRAMA// { //SEÑALA EL PRINCIPIO DEL CUERPO (MAIN)// intl,i,j;

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 35 de 36

do{ clrscr(); borde(); matriz(); textcolor(12); gotoxy(53,24);cprintf("WILMA CA¥AR"); textcolor(7); gotoxy(5,23);cprintf("Presione 1 para continuar,0 para salir");scanf("%d",&op); } while(op==1);//EXPRESION LOGICO// getch();//LEE UNA FUNCION SIN ECO,SIN ESPERAR UN RETORNO// }//SEÑALA EL FIN DEL CUERPO (MAIN)/

EJECUCIÓN:

TERCERO INFORMÁTICA TIPOS DE ARRAYS WILMA CAÑAR

Página 36 de 36

BIBLIOGRAFÍA: http://codigomaldito.blogspot.com/2005/11/arreglos-o-arrays-

en-c.html http://www.uco.es/grupos/eatco/informatica/metodologia/cade

nasyarrays.pdf http://c.conclase.net/curso/?cap=010 http://foro.noticias3d.com/vbulletin/showthread.php?t=201833 http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/clas

es1/arays.htm http://webdelprofesor.ula.ve/ingenieria/gilberto/pr1/clase16.pd

f http://www.josedomingo.org/web/mod/resource/view.php?id=

835 http://es.wikipedia.org/wiki/Vector_%28inform%C3%A1tica

%29#Forma_de_acceso http://www.mitecnologico.com/Main/ArreglosVectoresYMatri

Ces