Luis Gamboa

984 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
984
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
18
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Luis Gamboa

  1. 1. Luis GamboaTercero InformáticaTarea de:
  2. 2. VECTORES Y MATRICES EN CVECTORESUn vector, también llamado array(arreglo) unidimensional, es una estructura de datosque permite agrupar elementos del mismo tipo y almacenarlos en un solo bloque dememoria juntos, uno despues de otro. A este grupo de elementos se les identifica porun mismo nombre y la posición en la que se encuentran. La primera posición del arrayes la posición 0.Podríamos agrupar en un array una serie de elementos de tipo enteros, flotantes,caracteres, objetos, etc. Crear un vector en c++ es sencillo, seguimos la siguienteSintaxis:Tipo nombre[tamanyo];MATRICESUna matriz es un vector de vectores o un también llamado array bidimensional. Lamanera de declarar una matriz es c++ es similar a un vector:Sintaxis: int matriz[fils][cols];int es el tipo de dato, matriz es el nombre del todo el conjunto de datos y debo deespecificar el número de filas y columnas. Las matrices también pueden ser dedistintos tipos de datos como char, float, double,etc.Las matrices en c++ se almacenan al igual que los vectores en posiciones consecutivasde memoria. Usualmente uno se hace la idea que una matriz es como un tablero. Perointernamente el manejo es como su definicion lo indica, un vector de vectores, esdecir, los vectores están uno detrás de los otros juntos.La forma de acceder a los elementos de la matriz es utilizando su nombre e indicandolos 2 subíndices que van en los corchetes. Si Coloco int matriz [2][3]=10; //estoyasignando al cuarto elemento de la tercera fila el valor 10. No olvidar que tanto filascomo columnas se enumeran a partir de 0.
  3. 3. EJERCICIOS 1. Diseñar un programa en c que me permita ingresar n elementos en una matriz cuadrática.Análisis:En el siguiente ejemplo vamos a realizar el ingreso de n elementos en una matriz.Primero el ingreso de las librerías. Utilizaremos una función “borde” para realizar undiseño para el borde, en el cual utilizamos dos ciclos for para los márgenes de lapantalla. En el programa principal realizamos el ejercicio que a continuación detalla.Ingresamos un límite para saber el tamaño de la matriz que vamos a ingresar.Utilizamos dos bucles “for” para el ingreso de la matriz, en el primer for controlamoslas filas, el segundo lazo for para las columnas. Para el ingreso de datos de una matrizutilizamos la sentencia “scanf”. Para recorrer una matriz utilizamos de igual forma doslazos “for” y en este caso utilizamos la sentencia printf para imprimir la matrizingresada. Antes de cerrar la llave del segundo lazo for incrementamos las columnas.Luego de cerrar el segundo lazo for la columna regresa a la misma posición, y las filasse incrementan. Declaramos las variables del tipo que utilizamos y cerramos elprograma. #include <conio.h> #include <stdio.h> void main() { int matriz[10][10]; int op,i,j,limite,col=10,fil=10; do{ clrscr(); gotoxy(19,4);printf("**MATRIZ DE ORDEN CUADRADA**"); gotoxy(19,5);printf("**INGRESE EL LIMITE**");scanf("%d",&limite); for(i=1;i<=limite;i++)
  4. 4. { for(j=1;j<=limite;j++) { gotoxy(col,fil);scanf("%d",&matriz[i][j]); col=col+5; } col=10; fil=fil+1; } col=25; fil=10;for(i=1;i<=limite;i++) { for(j=1;j<=limite;j++) { gotoxy(col,fil);printf("%d",matriz[i][j]); col=col+5; } fil=fil+1; col=25; }gotoxy(10,20);printf("Presione 1 para continuar,0 para salir");scanf("%d",&op);}while(op==1);getch();}
  5. 5. 2. Diseñe un programa que me permita ingresar N números enteros en una matriz cuadrática, recorra y encuentre los datos de su diagonal principal.Análisis:Ingresamos una matriz y obtendremos los datos de la diagonal principal para estorealizaremos lo siguiente. Primero el ingreso de las librerías. Utilizaremos una función“borde” para realizar un diseño para el borde, en el cual utilizamos dos lazos “for” paralos márgenes de la pantalla. En el programa principal realizamos el ejercicio que acontinuación detalla. Ingresamos también un límite es para saber el tamaño de lamatriz que ingresaremos. Utilizamos dos bucles “for” para el ingreso de la matriz, en elprimer laso for controlamos las filas, el segundo for para las columnas. Para el ingresode datos de una matriz utilizamos la sentencia “scanf”. Para recorrer una matrizutilizamos de igual forma dos lazos “for” y en este caso utilizamos la función “printf”para imprimir la matriz ingresada. Para la coger solo los datos de la diagonal principalutilizamos dos bucles “for” y una sentencia de condición con “if” , las filas deben serigual a las columnas, si es verdadero se guardamos en otra matriz los datos de ladiagonal principal. Imprime la matriz resultante y se cierra la llave de la condición.Antes de cerrar la llave de los bucles “for” incrementamos las columnas y filas.Declaramos las variables del tipo que utilizamos y cerramos el programa.#include<stdio.h>#include<conio.h>
  6. 6. #include<math.h>void main(){int m[10][10],i,j,f,c,n,op,p,l,g,x,g1,g2;do{clrscr();flushall();for(i=1;i<=80;i++){gotoxy(i,3);printf("*");gotoxy(i,50);printf("*");}for(i=1;i<=50;i++){gotoxy(1,i);printf("*");gotoxy(80,i);printf("*");}c=5;f=15;gotoxy(5,6);printf("Ingrese L¡mite :");scanf("%d",&l);gotoxy(8,13);printf("Ingreso"); for(i=1;i<l+1;i++){for(j=1;j<l+1;j++){do{gotoxy(c,f);scanf("%d",&m[i][j]);}while(m[i][j]<8 || m[i][j]>=58);c=c+3;}c=5;f=f+3;}c=35;f=15;gotoxy(37,13);printf("Diagonales");
  7. 7. textcolor(7); for(i=1;i<l+1;i++){for(j=1;j<l+1;j++){if(i==j){gotoxy(c,f);printf("%d",m[i][j]);c=c+3;f=f+3;}}}g1=c-3;g2=15;x=l;textcolor(27);for(i=1;i<l+1;i++){gotoxy(g1,g2);printf("%d",m[i][x]);x=x-1;g2=g2+3;g1=g1-3;}gotoxy(10,45);printf("Para continuar 1 para cerrar 0:");scanf("%d",&op);}while(op==1);getch();}
  8. 8. 3. Diseñe un programa que me permita generar n múltiplos de cualquier facto ingresado desde teclado que se encuentre dicho factor entre 2 y 9, la matriz de orden cuadrática se visualiza la entrada y la salida.Análisis:En este ejemplo vamos a generar n múltiplos de un factor ingresado desde teclado enuna matriz. Primero el ingreso de las librerías. Utilizaremos una función “borde” pararealizar un diseño para el borde, en el cual utilizamos dos lazos “for” para los márgenesde la pantalla. En el programa principal realizamos el ejercicio que a continuacióndetalla. Ingresamos un límite para saber el tamaño de la matriz que vamos a generar.Ingresamos el factor entre 2 y 9. Para el ingreso del factor utilizamos la instrucción “dowhile” este nos permite validar un valor, para que solo nos permita ingresar valoresentre 2 y 9. Utilizamos un contador que inicializamos en 1, luego dentro del lazo for seva incrementando de uno en uno. Utilizamos dos bucles “for” para generar la matriz,en el primer lazo for controlamos las filas, el segundo lazo for para las columnas.Realizamos el proceso de la multiplicación entre el factor ingresado y el contador, estoguardamos en una matriz e imprimimos dicha matriz. Para recorrer una matrizutilizamos de igual forma dos lazos “for” y utilizamos la sentencia “printf”.Declaramos globalmente las variables que utilizamos.#include <conio.h>#include <stdio.h>void main(){
  9. 9. int matriz1[10][10],matriz2[10][10];int fact,mul,op,i,j,limite,x=1,col=10,fil=10;do{clrscr();gotoxy(19,4);printf("**MATRIZ DE ORDEN CUADRATICA CON MULTIPLOS**");gotoxy(19,5);printf("**INGRESE EL LIMITE**");scanf("%d",&limite);do{gotoxy(36,10);printf(" ");gotoxy(19,7);printf("**INGRESE EL FACTOR**");scanf("%d",&fact);}while(fact<=2 || fact>=9);for(i=1;i<=limite;i++) { for(j=1;j<=limite;j++) { matriz1[i][j]=fact*x;gotoxy(col,fil);printf("%d",matriz1[i][j]);x=x+1; col=col+5; } col=10; fil=fil+1; } col=35; fil=10;for(i=1;i<=limite;i++) { for(j=1;j<=limite;j++) { gotoxy(col,fil);printf("%d",matriz1[i][j]); col=col+5; }
  10. 10. fil=fil+1; col=35; }gotoxy(10,20);printf("Presione 1 para continuar,0 para salir");scanf("%d",&op);}while(op==1);getch();}4.- Diseñe un programita que me permita ingresar N elementos enterosen una matrizcuadrática, los mismos q deben estar en un rango desde 5 hasta 45, recorra la matrizy encuentre todos los elementos impares de la matriz y guárdelos en un vector, elmismo que se debe presentar en forma ordenada.#include<stdio.h>#include<conio.h>void main(){int c,d,f,n,l,matriz[10][10],aux,vec1[50],b,i,j,au,v[20];clrscr();flushall();
  11. 11. gotoxy(4,3);printf("Ingrese el l¡mite: ");scanf("%d",&l);gotoxy(4,5);printf("Ingrese los n£meros: ");for(c=1;c<=l;c++){for(f=1;f<=l;f++){do{gotoxy(f*3+4,c*2+5);printf(" ");gotoxy(f*3+4,c*2+5);scanf("%d",&matriz[f][c]);}while(matriz[f][c]<5||matriz[f][c]>=46);}}aux=1;b=8;for(c=1;c<=l;c++){for(f=1;f<=l;f++){if(matriz[f][c]%2==1){vec1[aux]=matriz[f][c];gotoxy(28,b);printf("%d",vec1[aux]);
  12. 12. aux=aux+1;b=b+1;}}}getch();}Análisis:Debemos ingresar el límite de la matriz desde teclado, luego ingresamos los elementosde nuestra matriz que deben estar validados entre 5 y 45 para lo que se debe utilizarun Do While, luego de haber ingresado los datos, recorremos la matriz buscando todoslos elementos impares que hayamos ingresado para guardarlos en un vector y al finalusando un lazo for se va visualizando los datos deseados de uno en uno en formavertical.
  13. 13. 5.- Diseñe un programa que me permita ingresar n números enteros en una matrizcuadrática, recorra sus posiciones y obtenga los datos de su diagonal principal ysecundaria.#include<stdio.h>#include<conio.h>void main(){int l,matriz[10][10],c,f,i,j,a,op;clrscr();do{flushall();clrscr();gotoxy(4,4);printf("Ingrese el l•mite: ");scanf("%d",&l);gotoxy(4,7);printf("Ingrese los n—meros");for(c=1;c<=l;c++){for(f=1;f<=l;f++){gotoxy(f*3+9,c*2+9);scanf("%d",&matriz[f][c]);}}for(c=1;c<=l;c++){for(f=1;f<=l;f++){gotoxy(f*3+38,c*2+9);printf("%d",matriz[f][c]);}}gotoxy(32,25);printf("Diagonal principal/secundaria");for(c=1;c<=l;c++){for(f=1;f<=l;f++){if(c==f) {gotoxy(f*3+38,c*2+25);printf("%d",matriz[f][c]);}}
  14. 14. }a=l;for(f=1;f<=l;f++){gotoxy(f*3+38,a*2+25);printf("%d",matriz[f][a]);a=a-1;}gotoxy(20,47);printf("Presione 1 para continuar o 0 para salir: ");scanf("%d",&op);}while(op==1);flushall();}Análisis:Debemos ingresar el límite de la matriz desde teclado, luego ingresamos los elementosde nuestra matriz, luego de haber ingresado los datos, recorremos la matriz buscandotodos los elementos que hayamos ingresado en su diagonal principal y la diagonalsecundaria y luego los visualizamos y utilizando un Do While preguntamos si deseacontinuar o desea salir del programa, en caso de que presione 1, que es, continuar, elprograma vuelve a pedir el límite de la matriz, se ingresan los datos y así son el mismoproceso las veces que deseemos.
  15. 15. 6.- Diseñe un programa que me permita realizar un menú de opciones con suma,resta y multiplicación de matrices, utilizando funciones.#include<stdio.h> #include<conio.h> int j,i,l,matriz1[10][10],c,f,matriz2[10][10],matriz3[10][10],op,x;void ingreso(){gotoxy(20,3);printf("Ingrese el l¡mite: ");scanf("%d",&l);gotoxy(4,5);printf("Ingrese la matriz 1: ");for(c=1;c<=l;c++){for(f=1;f<=l;f++){gotoxy(c*3+6,f+5);scanf("%d",&matriz1[c][f]);}}gotoxy(39,5);printf("Ingrese la matriz 2: ");for(c=1;c<=l;c++){for(f=1;f<=l;f++){gotoxy(c*3+47,f+5);scanf("%d",&matriz2[c][f]);}}}void suma(){for(c=1;c<=l;c++){for(f=1;f<=l;f++){matriz3[c][f]=matriz1[c][f]+matriz2[c][f];gotoxy(c*3+10,f+10);printf("%d",matriz3[c][f]);}}}void resta(){for(c=1;c<=l;c++)
  16. 16. {for(f=1;f<=l;f++){matriz3[c][f]=matriz1[c][f]-matriz2[c][f];gotoxy(c*3+10,f+10);printf("%d",matriz3[c][f]);}}}void multiplicacion(){for(c=1;c<=l;c++){for(f=1;f<=l;f++){matriz3[c][f]=matriz1[c][f]*matriz2[c][f];gotoxy(c*3+10,f+10);printf("%d",matriz3[c][f]);}}}void main(){clrscr();gotoxy(23,3);printf("Operaciones con matrices");gotoxy(4,6);printf("1. Suma");gotoxy(4,8);printf("2. Resta");gotoxy(4,10);printf("3. Multiplicaci¢n");gotoxy(4,12);printf("4. Salir");gotoxy(4,16);printf("Escoja una opci¢n: ");scanf("%d",&op);switch(op){case1:do{clrscr();ingreso();suma();gotoxy(10,20);printf("Presione 1 para continuar o 0 para salir:");scanf("%d",&x);}
  17. 17. while(x==1);getch();break;case2:do{clrscr();ingreso();resta();gotoxy(10,20);printf("Presione 1 para continuar o 0 para salir:");scanf("%d",&x);}while(x=1);getch();break;case3:clrscr();ingreso();multiplicacion();getch();break;case 4:exit(0);getch();break;getch();}}Análisis:Debemos ingresar el límite de la matriz desde teclado, luego ingresamos los elementosde nuestra matriz,luego de haber ingresado los datos escogemos la opción quequeramos: suma, resta o multiplicación, y al final visualizaremos el resultado de laoperación que hayamos escogido. Para realizar en menú de opciones, utilizamosSwitch con sus respectivos Case, dentro de cada opción este programa pide continuaro salir, si elegimos continuar, vuelve a pedir el límite de la matriz, los datos de la matrizy asi continúa con el mismo proceso ya detallado.

×