Você está na página 1de 24

UNIVERSIDAD TCNICA DE AMBATO

FACULTAD DE CIENCIAS HUMANAS Y DE LA EDUCACIN CARRERA: LIC. EN INFORMTICA Y COMPUTACIN Alumna: Marlene pallo Ing: Ing.WILMA GAVILANES MATERIA : programacin Semestre: Tercero u

Vectores y matrices
VECTORES Un vector, tambin llamado array(arreglo) unidimensional, es una estructura de datos que permite agrupar elementos del mismo tipo y almacenarlos en un solo bloque de memoria juntos, uno despus de otro. A este grupo de elementos se les identifica por un mismo nombre y la posicin en la que se encuentran. La primera posicin del array es la posicin 0. Podramos agrupar en un array una serie de elementos de tipo enteros, flotantes, caracteres, objetos, etc. Crear un vector en c++ es sencillo, seguimos la siguiente sintaxix: Tipo nombre[tamao];

MATRICES Una matriz es un vector de vectores o un tambin llamado array bidimensional. La manera de declarar una matriz es c++ es similar a un vector:
1 int matriz[fils][cols];

int es el tipo de dato, matriz es el nombre del todo el conjunto de datos y debo de especificar el numero de filas y columnas. Las matrices tambin pueden ser de distintos tipos de datos como char, float, double,etc. Las matrices en c++ se almacenan al igual que los vectores en posiciones consecutivas de memoria. Usualmente uno se hace la idea que una matriz es como un tablero. Pero internamente el manejo es como su definicion lo indica, un vector de vectores, es decir, los vectores estan uno detras del otro juntos. La forma de acceder a los elementos de la matriz es utilizando su nombre e indicando los 2 subindices que van en los corchetes. Si Coloco int matriz[2][3]=10; //estoy asignando al cuarto elemento de la tercera fila el valor 10. No olvidar que tanto filas como columnas se enumeran a partir de 0.

1.- Disee un programa que me permita ingresar N nmeros enteros en una matriz cuadrtica, e imprimir sus datos el programa se repetir tantas veces el usuario as lo requiera. ANALISIS Librera, declaracin de variables par el ingreso de la matriz se utiliza dos ciclos for uno para el posicionamiento de filas y otro para las columnas se ingresa la variable y para la impresin tambin se utiliza dos ciclos for uno para el posicionamiento de filas y otro para las columnas se imprime la variable ingresada y tenemos realizado nuestro programa de ingrese datos en una matriz e imprmalos CODIFICACION
#include<stdio.h> #include<conio.h> void main() { int l,matriz[10][10],j,i,f,c,c1,f1,op; clrscr(); flushall(); clrscr(); do { /*borde*/ for(i=1;i<=80;i++) { gotoxy(i,1);printf("*"); gotoxy(i,24);printf("*"); } for(i=1;i<=23;i++) { gotoxy(1,i);printf("*"); gotoxy(80,i);printf(""); } /* ingreso de la matriz*/ gotoxy(10,3);printf("INGRESO DE UNA MATRIZ "); gotoxy(6,5);printf("Ingrese el lmite: ");scanf("%d",&l); gotoxy(4,7);printf("INGRESO DE LA MATRIZ "); c=5; f=10; for(i=1;i<=l;i++) { for(j=1;j<=l;j++) { gotoxy(c,f);scanf("%d",&matriz[i][j]); c=c+3; } f=f+2; c=5; } /* imprecion de la matriz*/ f1=10; c1=33; gotoxy(30,7);printf("IMPRESION DE LA MATRIZ "); for(i=1;i<=l;i++) { for(j=1;j<=l;j++)

{ gotoxy(c1,f1);printf("%d",matriz[i][j]); c1=c1+3; } c1=33; f1=f1+2; } gotoxy(8,20);printf("seleccione 1 para continuar y 0 para salir ");scanf("%d",&op); } while(op==1); getch(); }

CORRIDO DE EL PROGRAMA

2.-Disee un programa que me permita ingresar N nmeros enteros entre 5 y 45 en una matriz cuadrtica, recorra la matriz y presentar sus datos pares en un vector el programa se repetir tantas veces el usuario lo requiera. Anlisis Declaracin de las libreras; declaracin de variables, las variables se declarara como variables de tipo entero. Un ciclo repetitivo do while para repetir cuantas veces dese el programa. Ingresamos un lmite, necesitaremos dos ciclos for para realizar el ingreso uno para posicionar las filas y otro para posicionar las columnas. Utilizamos scanf para el ingreso de la variable y ya tenemos el ingreso de nmeros en la matriz, validacin del ingreso que estar entre 5, 45

Recorremos la matriz, realizamos el proceso para obtener los datos pares, esa variable la paramos aun vector para imprimir. Para la impresin en el vector utilizare un ciclo for para posicionar las filas, usamos posicionamientos de filas printf nuestra variable en donde est almacenado los datos impares a imprimir y estar impreso los datos en el vector, luego ordenamos los datos en forma ascendente para presentar el vector impreso. Codificacin
#include<stdio.h> #include<conio.h> void main() { int mat[10][10],i,j,f,f1,c1,c,l,op,vec[10],a,b; do { clrscr(); /*diseando el borde*/ for(i=1;i<=80;i++) { gotoxy(i,1);printf("*"); gotoxy(i,24);printf("*"); } for(i=1;i<=24;i++) { gotoxy(1,i);printf("*"); gotoxy(80,i);printf("*"); } textcolor(5); gotoxy(15,2);cprintf("DISEANDO LA MATRIZ "); gotoxy(2,4);printf("Ingrese Lmite :");scanf("%d",&l); textcolor(3); gotoxy(5,6);cprintf("INGRESE LA MATRIZ "); /*relizando los ingresos */ c=7; f=7; for(i=1;i<l+1;i++) { for(j=1;j<l+1;j++) { /* validando el ingreso */ do { gotoxy(c,f);printf(" "); gotoxy(c,f);scanf("%d",&mat[i][j]); } while(mat[i][j]<=4||mat[i][j]>=46); c=c+4; } c=7; f=f+2; } /* presentar en un vector solo sus datos pares */ a=1; c1=40;

f1=8; textcolor(3); gotoxy(30,6);cprintf("DATOS Pares DE LA MATRIZ "); for(i=1;i<l+1;i++) { for(j=1;j<l+1;j++) { if(mat[i][j]%2==0) { vec[a]=mat[i][j]; gotoxy(c1,f1);printf("%d",vec[a]); a=a+1; f1=f1+1; } } } /* ordenando de forma ascendente el vector */ c1=60; f1=8; b=1; for(i=1;i<a;i++) { for(j=1;j<a;j++) { if(vec[i]<vec[j]) { b=vec[i]; vec[i]=vec[j]; vec[j]=b; } } } /* impresion del vector ordenando */ gotoxy(55,6);cprintf(" VECTOR ORDENADO "); for(i=1;i<a;i++) { gotoxy(c1,f1);printf("%d",vec[i]); f1=f1+1; } } while(op==1); gotoxy(10,22);printf("1 PARA CONTINUAR 0 PARA SALIR "); cscanf("%d",&op); getch(); }

Corrido del programa

3.-Disee un programa que me permita ingresar n nmeros enteros en una matriz cuadrtica, recorra sus posiciones y obtenga los datos de su diagonal principal y secundaria . Anlisis Libreras; declaracin de variables, las variables se declarara como variables de tipo entero. Un ciclo repetitivo do while para repetir cuantas veces dese el programa. Ingresamos un lmite. Necesitaremos dos ciclos for para realizar el ingreso uno para posicionar las filas y otro para posicionar las columnas. El ingreso de la variable que ser el ingreso de la matriz, recorremos la matriz, realizamos el proceso para almacenar los datos de sus diagonales, procedemos a imprimir solamente sus diagonales utilizando dos ciclos for ingreso uno para posicionar las filas y otro para posicionar las columnas realizaremos el control de posicionamiento de las filas y de las columnas y estar impreso una matriz solamente con sus diagonales.

Codificacin #include<stdio.h> #include<conio.h> void main() { int l,matriz[10][10],c,f,i,j,a,op,f1,c1,c2,f2; clrscr(); do { flushall(); clrscr(); for(i=1;i<=80;i++) { gotoxy(i,1);printf("*"); gotoxy(i,24);printf("*"); } for(i=1;i<=24;i++) { gotoxy(1,i);printf("*"); gotoxy(80,i);printf("*"); } gotoxy(4,2);printf("INGRESO DE UNA MATRIZ E IMPRESION DE SUS DIAGONALES "); gotoxy(4,4);printf("Ingrese el lmite: ");scanf("%d",&l); gotoxy(4,7);printf("Ingrese los nmeros"); for(c=1;c<=l;c++) { for(f=1;f<=l;f++) { gotoxy(f*3+9,c*2+9);scanf("%d",&matriz[f][c]); } } gotoxy(28,10);printf("Diagonal principal/secundaria"); f1=11; c1=30; for(c=1;c<=l;c++) { for(f=1;f<=l;f++) { if(c==f) { gotoxy(c1,f1);printf("%d",matriz[f][c]); } c1=c1+3; } f1=f1+2; c1=30; } f2=11; c2=35; a=l; for(f=1;f<=l;f++)

{ gotoxy(c2,f2);printf("%d",matriz[a][f]); a=a-1; f2=f2+2; c2=c2-3; } gotoxy(10,20);printf("Presione 1 para continuar o 0 para salir: ");scanf("%d",&op); } while(op==1); flushall(); getch(); } Corrido del programa

4.-Disee un programa que me permita ingresar generar en una matriz cuadrtica la serie de fibocci el programa se repetir cuantas veces el usuario lo desee. Anlisis Libreras, declaracin de variables , el Ingreso de un lmite,. Realizar el proceso correspondiente para sacar la serie de fibonacci. Se procede a la impresin de la variable en donde esta almacenada en el proceso se utilizara dos ciclos for para posicionamiento de filas y de columnas, printf la variable y esta la serie de fibonacci realizada o impresa en una matriz.

Codificaion #include<stdio.h> #include<conio.h> int fil,col,i,j,a,b,c,op,lim,matriz[10][10]; void main() { do { clrscr(); for(i=1;i<=78;i++) { gotoxy(i,1);printf("*"); gotoxy(i,25);printf("*"); } for(i=1;i<=25;i++) { gotoxy(1,i);printf("*"); gotoxy(78,i);printf("*"); } a=0; b=1; c=0; fil=10; col=10; gotoxy(20,5);printf("MATRIZ CON LA SERIE FIBONACII"); gotoxy(10,8);printf("Ingrese el limite==>");scanf("%d",&lim); for(i=1;i<=lim;i++) { for(j=1;j<=lim;j++) { a=b; b=c; c=a+b; matriz[i][j]=c; gotoxy(col,fil);printf("%d",matriz[i][j]); col=col+8; } fil=fil+2; col=10; } gotoxy(30,23);printf("PREES 1 CONTINUE..PRESS 0 SALIR..");scanf("%d",&op); } while(op==1); getch(); } CORRIDO DE EL PROGRAMA

5.- Realizar un programa que me permita utilizar funciones con matrices y vectores donde pueda realizar las siguientes opciones: 1.-NUMEROS PRIMOS 2.-FIBONACCI 3.-ORDENER PAR E IMPAR 4.-ORDENAR MATRIZ 5.-SALIR El programa se repetir cuantas veces el usuario lo requiera. Anlisis En este programa se utilizara men de opciones, diferentes funciones y tambin se utilizara matrices. Declaracin de las libreras; declaracin de variables, las variables se declarara variables globales y sern de tipo entero. Realizamos la funcin borde. La primera opcin es la de los nmeros primos donde la funcin se llamara primos; En esta funcin se necesita el Ingreso de un lmite, realizar el proceso correspondiente para obtener los nmeros primos y proceder a la impresin en una matriz donde se utilizara dos ciclos for para posicionamiento de filas y de columnas, printf la variable donde esta almacenada el proceso de los nmeros primos.

La segunda opcin es la de serie de fibonacci, la funcin se llamara fibonacii En esta funcin se necesita el Ingreso de un lmite, realizar el proceso correspondiente para sacar la serie de fibonacci, y se procede a la impresin de la variable en donde esta almacenada en el proceso se utilizara dos ciclos for para posicionamiento de filas y de columnas, printf la variable y esta la serie de fibonacci realizada La tercera opcin es de presentar en diferentes vectores pares e impares. Necesitaremos dos ciclos for para realizar el ingreso uno para posicionar las filas y otro para posicionar las columnas. Utilizamos scanf para el ingreso de la variable y ya tenemos el ingreso de nmeros en la matriz. Recorremos la matriz, realizamos el proceso para obtener los datos pares e impares, esa variable la pasamos a un vector para imprimir. Para la impresin en el vector utilizare un ciclo for para posicionar las filas, usamos posicionamientos de filas printf nuestra variable a imprimir y estar impreso los datos en diferentes vectores, realizamos el proceso para ordenar los dados de cada vector y realizamos la impresin de los vectores ordenados uno con datos pares y otro con datos impares La cuarta opcin presentar ordenada la matriz ingresada, la funcin se llamara ordenar. Necesitaremos dos ciclos for para realizar el ingreso uno para posicionar las filas y otro para posicionar las columnas. Utilizamos scanf para el ingreso de la variable y ya tenemos el ingreso de nmeros en la matriz. Recorremos la matriz, realizamos el proceso para ordenar los datos de la matriz, la matriz ordenada imprimimos utilizando dos ciclos for uno para las filas y otros para las columnas printf para la variable de la matriz ordenada y tendremos la impreso los datos ordenados de la matriz ingresada. Realizamos el diseo del programa principal donde tendremos el men de opciones , la llamada de cada funcin que se ha realizado Un ciclo repetitivo do while para repetir cuantas veces dese el programa. Codificacin #include<stdio.h> #include<conio.h> int fil,col,i,j,a,b,c,op,l,matriz[10][10],mat[10][10],f,f1,c1,c,l,op,vec[10],a,b,vec1[10],n,aux,col,fil,k,x, f,c,m; void borde() { int i; clrscr(); for(i=1;i<=80;i++)

{ gotoxy(i,1);printf("*"); gotoxy(i,24);printf("*"); } for(i=1;i<=23;i++) { gotoxy(1,i);printf("*"); gotoxy(80,i);printf("*"); } } void primo(int l) { clrscr(); borde(); gotoxy(30,4);printf("NUMEROS PRIMOS"); gotoxy(10,6);printf("ingrese el limite: ");scanf("%d",&l); a=l*l; k=0; for(x=1;x<=a;x++) { uno: k=k+1; j=0; for(i=1;i<=k;i++) { if(k%i==0) { j=j+1; } } if(j<=2) { vec1[x]=k; } else { goto uno; } } b=0; for (f=1;f<=l;f++) { for (c=1;c<=l;c++) { b=b+1; mat[f][c]=vec1[b]; gotoxy(f*4+12,c*2+10);printf("%d",mat[f][c]); } } } void fibonacii(int l) {

a=0; b=1; c=0; fil=10; col=10; gotoxy(20,5);printf("MATRIZ CON LA SERIE FIBONACII"); gotoxy(20,8);cprintf("Ingrese el Limite ");scanf("%d",&l); for(i=1;i<=l;i++) { for(j=1;j<=l;j++) { a=b; b=c; c=a+b; matriz[i][j]=c; gotoxy(col,fil);printf("%d",matriz[i][j]); col=col+8; } fil=fil+2; col=10; } } void parinpar(int l) { /*diseando la matriz*/ textcolor(3); gotoxy(5,2);cprintf("INGRESE UNA MATRIZ Y PRESENTELOS EN DIFERENTES VECTORES PARES E IMPARES "); textcolor(2); gotoxy(2,4);cprintf("Ingrese Lmite :");cscanf("%d",&l); textcolor(4); gotoxy(3,6);cprintf("IMGRESO MATRIZ "); /* relizando elingreso de la matriz*/ c=7; f=7; for(i=1;i<l+1;i++) { for(j=1;j<l+1;j++) { do { gotoxy(c,f);printf(" "); gotoxy(c,f);scanf("%d",&mat[i][j]); } while(mat[i][j]<=0||mat[i][j]>=33); c=c+4; } c=7; f=f+2; } /* presentar en un vector sus datos pares*/

a=1; c1=30; f1=7; gotoxy(22,5);printf("DATOS DE LA MATRIZ EN UN VECTOR "); gotoxy(28,6);printf("PARES IMPAR "); for(i=1;i<l+1;i++) { for(j=1;j<l+1;j++) { if(mat[i][j]%2==0) { vec1[a]=mat[i][j]; gotoxy(c1,f1);printf("%d",vec1[a]); a=a+1; f1=f1+1; } } } /* datos impares */ a=1; c1=40; f1=7; for(i=1;i<l+1;i++) { for(j=1;j<l+1;j++) { if(mat[i][j]%2==1) { vec[a]=mat[i][j]; gotoxy(c1,f1);printf("%d",vec[a]); a=a+1; f1=f1+1; } } } /* ordenar de forma ascendente el vector par */ c1=62; f1=9; b=1; textcolor(10); gotoxy(58,7);cprintf("VECTOR ORDENADO "); for(i=1;i<a;i++) { for(j=1;j<a;j++) { if(vec1[i]<vec1[j]) { b=vec1[i]; vec1[i]=vec1[j]; vec1[j]=b; } }

} for(i=1;i<a;i++) { textcolor(12); gotoxy(60,8);cprintf("PAR IMPAR "); textcolor(7); gotoxy(c1,f1);cprintf("%d",vec1[i]); f1=f1+1; } /* ordenar de forma ascendente el vector impar */ c1=70; f1=9; b=1; for(i=1;i<a;i++) { for(j=1;j<a;j++) { if(vec[i]<vec[j]) { b=vec[i]; vec[i]=vec[j]; vec[j]=b; } } } for(i=1;i<a;i++) { gotoxy(c1,f1);printf("%d",vec[i]); f1=f1+1; } } /*ordenando la matriz*/ void matordenada(int l) { clrscr(); borde(); col=10; fil=8; gotoxy(15,3);printf("INGRESNANDO UNA MATRIZ PARA PRESENTAR ORDENADA:"); gotoxy(10,5);printf("ingrese el limite :");scanf("%d",&l); for(i=1;i<=l;i++) { for(j=1;j<=l;j++) { gotoxy(10,7);printf("INGRESE LA MATRIZ "); gotoxy(col,fil);scanf("%d",&matriz[i][j]); col=col+5; } fil=fil+2; col=10; } for(i=1;i<=l;i++)

{ for(j=1;j<=l;j++) { for(m=1;m<=l;m++) { for(n=1;n<=l;n++) { if(matriz[i][j]<matriz[m][n]) { aux=matriz[i][j]; matriz[i][j]=matriz[m][n]; matriz[m][n]=aux; } } } } } col=40; fil=8; /* inpresion de la matriz ordenada*/ gotoxy(40,7);printf("MATRIZ ORDENADA"); for(i=1;i<=l;i++) { for(j=1;j<=l;j++) { gotoxy(col,fil);printf("%d",matriz[i][j]); col=col+5; } fil=fil+2; col=40; } } /*realizando el programa principal*/ void main() { do { clrscr(); borde(); gotoxy(20,3);printf("FUNCIONES CON MATRICES Y VECTORES"); textcolor(3); gotoxy(30,5);cprintf("OPCIONES QUE PUEDE REALIZAR "); gotoxy(8,7);cprintf("1.-NUMEROS PRIMOS "); gotoxy(8,9);cprintf("2.-FIBONACCI "); gotoxy(8,11);cprintf("3.-ORDENER PAR E IMPAR "); gotoxy(8,13);cprintf("4.-ORDENAR MATRIZ "); gotoxy(8,15);cprintf("5.-SALIR "); gotoxy(15,19);cprintf("ESCOJA UNA OPCION: ");scanf("%d",&op); switch(op) { case 1: clrscr();

borde(); primo(l); break; case 2: clrscr(); borde(); fibonacii(l); break; case 3: clrscr(); borde(); parinpar(l); break; case 4: clrscr(); borde(); matordenada(l); break; case 5: clrscr(); exit(); break; } gotoxy(30,22);printf("Presione 1 para continuar o 0 para salir");scanf("%d",&op); } while(op==1); getch(); } Corrido del programa

6.-Disee un programa que me permita ingresar N nmeros enteros en una matriz cuadrtica, y obtener su producto algebraico. Anlisis Declaracin de las libreras; declaracin de variables, las variables se declarara como variables de tipo entero. Un ciclo repetitivo do while para repetir cuantas veces dese el programa. Ingresamos un lmite. Necesitaremos dos ciclos for para realizar el ingreso uno para posicionar las filas y otro para posicionar las columnas. Utilizamos scanf para el ingreso de las variables y ya el ingreso de la las dos matrices. Recorremos la matriz, realizamos el proceso para obtener el producto algebraico donde debemos multiplicar la primera matriz por la segunda y el resultado la imprimiremos en otra matriz. Para la impresin de la matriz se utilizara dos ciclos for uno para posicionar las filas otro para posicionar las columnas , usamos posicionamientos de filas printf nuestra variable donde esta almacena la multiplicacin.

Codificacin

#include<stdio.h> #include<conio.h> int l,c,c1,c2,f,f1,f2,k,i,j,op,a; int matriz1[10][10],matriz2[10][10],matriz3[10][10]; void borde() for(i=1;i<=80;i++) { gotoxy(i,1);printf(""); gotoxy(i,24);printf(""); } for(i=1;i<=23;i++) { gotoxy(1,i);printf(""); gotoxy(80,i);printf(""); } } void ingreso() { for(i=1;i<=l;i++) { for(j=1;j<=l;j++) { gotoxy(c,f);scanf("%d",&matriz1[i][j]); c=c+5; } c=5; f=f+1; } for(i=1;i<=l;i++) { for(j=1;j<=l;j++) { gotoxy(c1,f1);scanf("%d",&matriz2[i][j]); c1=c1+5; } c1=25; f1=f1+1; } } void producto() { for(i=0;i<=l;i++) { for(j=0;j<=l;j++) { matriz3[i][j]=0; for(k=0;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]); c2=c2+4; } c2=42; f2=f2+1; } } void main() { do { clrscr(); borde(); c=5; c1=25; c2=42; f=10; f1=10; f2=10; textcolor(3); gotoxy(10,3);cprintf("PRODUCTO ALGEBRAICO DE UNA MATRIZ"); gotoxy(10,5);printf("INGRESE UN LIMITE ");scanf("%d",&l); textcolor(12); gotoxy(5,7);cprintf("MATRIZ1"); gotoxy(25,7);cprintf("MATRIZ2"); gotoxy(38,7);cprintf("MATRIZ RESULTANTE"); ingreso(); producto(); textcolor(3); gotoxy(8,22);printf("seleccione 1 para continuar y 0 para salir ");scanf("%d",&op); } while(op==1); getch(); }

Prueba de escritorio

Você também pode gostar