VIVIANA CAMINO
1
2012
VIVIANA CAMINO
ELEMENTO 1 Y ELEMENTO 2
NOMBRE : VIVIANA CAMINO TAREA: ELEMENTO 1 Y 2
SEMESTRE: TERCERO “U”
CARRERA: DOCENCIA EN INFORMÁTICA
MATERIA: PROGRAMACION II
PROFESORA: ING WILMA GAVILANES
VIVIANA CAMINO
2
ARREGLOS BIDIMENSIONALES (MATRICES) Es un arreglo de dos dimensiones. Son estructuras de datos que agrupan muchos datos del mismo tipo, en donde cada elemento se puede trabajar individualmente y se puede referenciar con un mismo nombre. Se usan para representar datos que pueden verse como una tabla con filas y columnas. Tipo_dato nombre_matriz [índice fila] [índice columna]
Nombre_matriz [subíndice1] [subíndice2] int matriz [2][2] char mapa [100][100] int certamen [60][4] Declara una matriz de 3 filas por 4 columnas: int matriz [3][4]; : int matriz [2][2]={1,2,3,4} 1
2
Para referenciar un elemento de la matriz, debe darse un nombre de la matriz y el índice de la fila y de la columna que el elemento ocupa en dicha matriz. Es importante que los índices de las matrices tanto de las filas como de las columnas empiezan en 0 y terminan en tamaño fila-1 y tamaño columna-1 respectivamente.
VIVIANA CAMINO
3
El lenguaje C permite el uso de matrices, es decir, arrays bidimensionales. En general, todo lo que vamos a estudiar en esta sección se puede extrapolar a arrays incluso n-dimensionales (o tensores), aunque en la práctica el uso de arrays con más de 2 dimensiones no es muy común. La declaración de una matriz o array bidimensional es: Tipo variable_matriz[N][M]; Donde N y M son el número de filas y de columnas respectivamente (la dimensión de la matriz). Se ha escrito la dimensión con letras mayúsculas, ya que deben ser constantes, y al igual que con vectores se suelen definir con constantes, por ejemplo: #define N 4 //número de filas de las matrices que voy a declarar #define M 5 //número de columnas de las matrices que voy a declarar main() { double matriz1[N][M], matriz2[N][M]; int matriz_entera[N][M]; ... } Al igual que con vectores, las matrices se numeran empezando por el índice 0, con lo cual el elemento superior izquierdo es el [0][0] y el inferior derecho es el [N-1][M-1]. En la siguiente tabla se muestra cual sería la forma y los elementos de una matriz a[4][5], de tamaño 4×5. Véase que el primer elemento del array bidimensional es el a[0][0], el siguiente sería el a[0][1], y así, hasta llegar al elemento a[3][4].
Elemento en Índice de fila
0 1 2 3
Matriz bidimensional Índice de columna 0 1 2 a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2] a[2][0] a[2][1] a[2][2] a[3][0] a[3][1] a[3][2]
3 a[0][3] a[1][3] a[2][3] a[3][3]
4 a[0][4] a[0][4] a[0][4] a[0][4]
Por otra parte, en lenguaje C las matrices se almacenan en memoria "por filas", es decir, los elementos de la fila primera (de índice 0) van consecutivos y cuando acaba el último de la primera fila empieza a almacenarse el primero de la segunda, y así sucesivamente hasta llegar a la VIVIANA CAMINO
4
última fila. La Figura 4.4 muestra como estaría almacenada en la memoria la matriz anterior a[4][5]. Hay que aclarar que algunos lenguajes de programación (FORTRAN) utilizan el convenio contrario, es decir, almacenan las matrices por columnas.
Fil a En me mo ria
Distribución de una matriz bidimensional en memoria 0 1 2 3 a[ 0] [0 ]
a[ 0] [1 ]
a[ 0] [2 ]
a[ 0] [3 ]
a[ 1] [0 ]
a[ 1] [1 ]
a[ 1] [2 ]
a[ 1] [3 ]
a[ 2] [0 ]
a[ 2] [1 ]
a[ 2] [2 ]
a[ 2] [3 ]
a[ 3] [0 ]
a[ 3] [1 ]
a[ 3] [2 ]
a[ 3] [3 ]
A continuación se muestra un sencillo algoritmo que nos permite recorrer por filas completamente matrices (ya que el bucle interno actúa sobre los índices de las columnas); en primer lugar se valoran las matrices b y c con ciertos números y seguidamente se realiza la operación matricial suma (en matemáticas se define un operador suma matricial con el mismo símbolo '+', de forma que este algoritmo sería equivalente a la suma de matrices A=B+C). int a[4][5], b[4][5], c[4][5], i, j; // se valoran las matrices origen A y B con ciertos números. for (i = 0 ; i < 4 ; i++) for (j = 0 ; j < 5 ; j++) { b[i][j] = i; c[i][j] = (i * j) + j; } // A continuación se realiza la suma matricial for (i = 0 ; i < 4 ; i++) for (j = 0 ; j < 5 ; j++) { a[i][j] = b[i][j] + c[i][j] ; } Además del recorrido simple por filas o por columnas, pueden existir otros bucles anidados que mezclen recorridos por filas con recorridos con columnas. Esto ocurre, por ejemplo, en el producto matricial (en matemáticas A=B×C), ya que en tal operación es necesario que una fila de B se multiplique por una columna de C (en los ejercicios de este apartado se estudia esta operación).
VIVIANA CAMINO
5
double tensor[4][5][6]; int i, j, k; for (i = 0 ; i < 4 ; i++) for (j = 0 ; j < 5 ; j++) for (k = 0 ; k < 6 ; k++) tensor[i][j][k] = 0;
ARREGLOS UNIDIMENSIONALES. Conceptos básicos. Un arreglo unidimensional tiene una sola dimensión. En C#, la dimensión se maneja por medio de un par de corchetes. A los arreglos de una dimensión también se les llama listas. Operaciones. Para manejar un arreglo, las operaciones a efectuarse son:
Declaración del arreglo, Creación del arreglo, Inicialización de los elementos del arreglo, y Acceso a los elementos del arreglo.
A continuación describiremos cada una de estas operaciones, en C#. Declaración. La declaración de un arreglo unidimensional consiste en establecer las características del arreglo y sus elementos, por medio de la siguiente sintaxis: <Tipo> [ ] < identificador > ; Dónde: Tipo indica el tipo correspondiente a los elementos del arreglo, Identificador es el nombre del arreglo, y VIVIANA CAMINO
6
El par de corchetes, [ ], representa la dimensión del arreglo y encierra un número entero que corresponde al número de elementos del arreglo. Ejemplos: int [ ] a; float [ ] distancia ; Artículo [ ] art = new Artículo [3]; Observe que, en la declaración, el espacio entre los corchetes está vacío. Esto se debe a que, durante dicha operación, no se reserva espacio en la memoria. Creación. La creación de un arreglo unidimensional consiste en reservar espacio de memoria para todos sus elementos, utilizando la siguiente sintaxis: < Identificador > = new <tipo> [tamaño]; Dónde: new es el operador para gestionar espacio de memoria, en tiempo de ejecución, Tamaño es un número entero que representa el número de elementos del arreglo. Ejemplos: a = new int [10]; // Se crea el arreglo a , con 10 elementos de tipo entero. distancia = new float [ 5] ; // Se crea el arreglo distancia , con 5 elementos de punto flotante y precisión sencilla .Artículo [] art = new Artículo[3]; Artículo [ ] art = new Artículo [ 3 ]; // Se crean 3 referencias a objetos de la clase Artículo Art [0]= new Artículo (); // Se crea el primer objeto del arreglo art Art [1]= new Artículo (); // Se crea el segundo objeto del arreglo art Art [2]= new Artículo (); // Se crea el tercer objeto del arreglo art
VIVIANA CAMINO
7
Las dos primeras operaciones de declaración y creación anteriores se pueden agrupar en una sola instrucción, como se muestra enseguida: int [ ] a = new int [10] ; float [ ] distancia = new float[5] ; Inicialización. Un arreglo es un objeto que, cuando es creado por el compilador, se le asignan automáticamente valores iniciales predeterminados a cada uno de sus elementos, de acuerdo a los siguientes criterios:
Si el tipo del arreglo es numérico, a sus elementos se les asigna el valor cero. Si el tipo del arreglo es char, a sus elementos se les asigna el valor '\u0000'. Si el tipo del arreglo es bool, a sus elementos se les asigna el valor false. Si el tipo del arreglo es una clase, a sus elementos se les asigna el valor null.
Cuando se requiere asignar valores iniciales diferentes de los predeterminados, es posible agrupar las operaciones de declaración, creación e inicialización en una sola instrucción, por ejemplo: Int [ ] a = { 1, 0,4,-6, 2,9, 23,455, 90,35 }; float [ ] distancia = { 2.50F, 286.45F, 46.75F, 30.62F, 93.00F }; string [ ] pato = { "Hugo", "Paco", "Luís" }; Acceso. Se puede acceder a los valores de los elementos de un arreglo a través del nombre del arreglo y un subíndice. El subíndice debe escribirse entre corchetes y representa la posición del elemento en el arreglo. Así, podemos referirnos a un elemento del arreglo escribiendo el nombre del arreglo y el subíndice del elemento entre corchetes. Los valores de los subíndices empiezan en cero para el primer elemento, hasta el tamaño del arreglo menos uno.
VIVIANA CAMINO
8
Ejemplo: float [ ] distancia = new float[5] ; // Crea el arreglo distancia con 5 elementos. float x = 25F, y = 10F ; // Crea dos variables de punto flotante y precisión sencilla. distancia[0] = x + y ; // El valor asignado al primer elemento es 35. distancia[1] = ++distancia[0] ; // Asigna 36 al segundo elemento. distancia[2] = distancia[1] - distancia[0] + 4 ; // Asigna 5 al tercer elemento. distancia[3] = distancia[2]-- ; // Asigna 5 al cuarto elemento // y disminuye en 1 el valor del tercero. distancia[4] = distancia[3] * distancia[2] ; // Asigna 20 al quinto elemento. y = distancia[4] ; // Asigna a y el valor almacenado en el quinto elemento. Aplicaciones. Listas. Resolvamos el problema de manejar dos listas: una con los nombres de un grupo de alumnos y otra con una calificación para cada uno de los alumnos. Primero se deberán leer los nombres de los alumnos y la calificación que corresponde a cada uno de ellos y después habrá que desplegar dos columnas: una con los nombres de los alumnos y la otra con sus respectivas calificaciones. La lectura debe lucir de manera similar a la siguiente: Número de alumnos: 30 Nombre [0] : Calificación[0] : Nombre [1] : Calificación[1] :
VIVIANA CAMINO
9
Nombre [2] : Calificación[2] : Nombre [29] : Calificación[29] : El despliegue en el monitor luciría así: No. 1 2 3 ... 30
Nombre Hugo Paco Luís
Calif. 100 90 95 ... 70
Donald
Vectores. Otra de las aplicaciones de los arreglos es el manejo de vectores. En Física, los vectores sirven para representar velocidades, aceleraciones, etc. Podemos representar a un vector como un segmento de recta dirigida que tiene magnitud, orientación y sentido. En un espacio tridimensional, un vector puede expresarse por medio de tres componentes sobre los ejes cartesianos. Cada componente puede, a su vez, expresarse en función de los vectores unitarios i, j, k ,que se ubican en los ejes x, y, z, respectivamente. Por ejemplo , un vector v1 puede representarse en función de sus componentes como: v1 = 20i + 15j + 35k Si tenemos otro vector, v2 = -5i + 40j + 25k La suma de los dos vectores sería: s = v1+v2 = (20-5)i +(15+40)j+(35+25)k s = 15i + 55j + 60k
VIVIANA CAMINO
10
ENUNCIADOS 1.- Diseテアe un programa que me permita leer una cadena de caracteres y encontrar todas aquellas que sean vocales y pasarlas a un nuevo vector en forma ordenada. #include<stdio.h> #include<conio.h> int limite,i,fila,op; char nombre[15];
LIBRERIAS PRINCIPALES
VARIABLESDE TIPO ENTERAS Y VARIABLES TIPO CARテ,TER
void main() INICIO DEL PROGRAMA
{ do INICIO DEL DO { clrscr(); fila=8; for(i=1;i<=80;i++) { gotoxy(i,1);printf("*"); FUNCION DEL BORDE gotoxy(i,24);printf("*"); } for(i=1;i<=24;i++) { gotoxy(1,i);printf("*"); gotoxy(80,i);printf("*"); } gotoxy(20,2);printf("* **MANEJO DE CADENAS*** "); gotoxy(7,3);printf(" ingrese una cadena : "); flushall(); gets(nombre); limite=strlen(nombre); VIVIANA CAMINO
11
for(i=0;i<limite;i++) { gotoxy(21,fila);printf("%c",nombre[i]); fila=fila+1; }
PROCESO
fila=7; for(i=limite;i>=0;i--) { gotoxy(25,fila);printf("%c",nombre[i]); fila=fila+1; } gotoxy(25,20);printf("² Desea continuar [1] o [0] para finalizar ² = ");scanf("%d",&op); } while(op==1); CIERRO EL DO getch(); }
ANÁLISIS:- Para este programa debemos declarar las 2 librerías principales como son;#include <conio.h>,#include<stdio.h> luego iniciamos el programa con declaración de la variables que vayamos a utilizar pueden ser globales, luego hacemos para iniciar el programa con una estructura de control para realizar el margen, luego debemos declara el posicionamiento de filas y columnas, después declaramos una estructura para poder ingresar los datos de una matriz, una ves realizado la entrada de la matriz debemos realizar la entrada principal para utilizar la serie del Fibonacci y el factorial, una vez realizado esta estructura debemos guardarlos en un vector para poder visualizar el factorial y el fibonacci luego, debemos iniciar con el programa principal con void main ( ),luego declaramos variables que sean necesarias utilizando una definición global en este caso el int, ya que nos permite ingresar números enteros, después abrimos un lazo do, que es una Instrucción repetitiva ….mientras la condición sea verdadera, hacemos un blanqueado de pantalla, y realizamos una estructura para poder visualizar cuantas filas y columnas vamos a utilizar, luego abrimos un lazo for el cual nos permite hacer un control, para poder entrar al programa debemos declarar “printf”; para la salida de datos y “scanf”, para tener una posición en la pantalla debemos utilizar la instrucción gotoxy(col,fila), utilizamos el while para serrar la condición del do, y finalmente realizamos un mensaje que diga continuar presione 1 y para finalizar presione 0 cerramos el lazo for para que se repita las veces que sea necesario si deseamos debemos controlar para que el Fibonacci baya controlado de tatal numero al que desea
VIVIANA CAMINO
12
Corrido
VIVIANA CAMINO
13
2.- Diseテアe un programa que me permita leer una cadena de caracteres y encontrar todas aquellas que sean consonantes y pasarlas a un nuevo vector en forma ordenada. #include<stdio.h> #include<conio.h> #include<string.h>
LIBRERIAS PRINCIPALES
int cadena,i,fil,col,contador,aux,h,j,op; char vector1[20],vector2[20];
VARIABLES ENTERAS Y DE CARテ,TER
void main() INICIO DEL PROGRAMA Y { DEL DO do { clrscr(); fil=8; j=0; for(i=1;i<=80;i++) { gotoxy(i,1);printf("*"); FUNCION DEL BORDE gotoxy(i,24);printf("*"); } for(i=1;i<=24;i++) { gotoxy(1,i);printf("*"); gotoxy(80,i);printf("*"); } gotoxy(20,2),printf("***CONTAR LAS CONSONANTES***"); gotoxy(20,5),printf("Ingrese una cadena : "); flushall(); gets(vector1); cadena=strlen(vector1); for(i=0;i<cadena;i++) { if(vector1[i]!='a'&&vector1[i]!='e'&&vector1[i]!='i'&&vector1[i]!='o'&&v ector1[i]!='u') { vector2[j]=vector1[i]; j=j+1; } } VIVIANA CAMINO
14
fil=8; for(i=0;i<j;i++) { gotoxy(19,fil);printf("%c", vector2[i]); fil=fil+1; }
PROCESO DEL VECTOR 2
for(i=0;i<j;i++) { for(h=0;h<j;h++) { if(vector2[i]<vector2[h]) { aux=vector2[i]; vector2[i]=vector2[h]; vector2[h]=aux; IMPRESIÓN DEL VECTOR 2 } } } fil=8; for(i=0;i<j;i++) { gotoxy(24,fil);printf("%c", vector2[i]); fil=fil+1; } gotoxy(25,20);printf("Desea continuar[1] o [0] para finalizar = " );scanf("%d",&op); } while(op==1); CIERRO EL DO getch(); }
ANÁLISIS Para este programa debemos declarar las 2 librerías principales como son;#include <conio.h>,#include<stdio.h> luego iniciamos el programa con declaración de la variables que vayamos a utilizar pueden ser globales, luego hacemos para iniciar el programa con una estructura de control para realizar el margen, luego debemos declara el posicionamiento de filas y columnas, después declaramos una estructura para poder ingresar los datos de una matriz, una ves realizado la entrada de la matriz debemos realizar la entrada principal para utilizar la serie del Fibonacci y el factorial, una vez realizado esta estructura debemos
VIVIANA CAMINO
15
guardarlos en un vector para poder visualizar el factorial y el fibonacci luego, debemos iniciar con el programa principal con void main ( ),luego declaramos variables que sean necesarias utilizando una definición global en este caso el int, ya que nos permite ingresar números enteros, después abrimos un lazo do, que es una Instrucción repetitiva ….mientras la condición sea verdadera, hacemos un blanqueado de pantalla, y realizamos una estructura para poder visualizar cuantas filas y columnas vamos a utilizar, luego abrimos un lazo for el cual nos permite hacer un control, para poder entrar al programa debemos declarar “printf”; para la salida de datos y “scanf”, para tener una posición en la pantalla debemos utilizar la instrucción gotoxy(col,fila), utilizamos el while para serrar la condición del do, y finalmente realizamos un mensaje que diga continuar presione 1 y para finalizar presione 0 cerramos el lazo for para que se repita las veces que sea necesario si deseamos debemos controlar para que el Fibonacci baya controlado de tatal numero al que desea
CORRIDO
VIVIANA CAMINO
16
3.- Dise単e un programa utilizando funciones que me permita dise単ar un menu de opciones con las siguientes alternativas. 1) Cadenas con vocales. 2) Cadenas con consonantes. 3) Salir. #include <stdio.h> #include <conio.h> int cadena,i,fil,col,aux,h,j,op; char vector1[20],vector2[20]; void borde() { int i,j; 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("*"); } }
LIBRERIAS PRINCIPALES Y VARIABLES TIPO CHAR Y ENTERAS
FUNCION DEL BORDE
void vocales() { clrscr(); borde(); fil=8; j=0; gotoxy(20,2),printf("***CONTAR VOCALES***"); gotoxy(20,5),printf("Ingrese una cadena : "); flushall(); gets(vector1); cadena=strlen(vector1); for(i=0;i<cadena;i++) { VIVIANA CAMINO
17
if(vector1[i]=='a') { vector2[j]=vector1[i]; j=j+1; } if(vector1[i]=='e') { vector2[j]=vector1[i]; j=j+1; } if(vector1[i]=='i') { vector2[j]=vector1[i]; j=j+1; } if(vector1[i]=='o') { vector2[j]=vector1[i]; j=j+1; } if(vector1[i]=='u') { vector2[j]=vector1[i]; j=j+1; } } fil=8; for(i=0;i<j;i++) { gotoxy(19,fil);printf("%c", vector2[i]); fil=fil+1; } for(i=0;i<j;i++) { for(h=0;h<j;h++) { if(vector2[i]<vector2[h]) { aux=vector2[i]; vector2[i]=vector2[h]; vector2[h]=aux; } VIVIANA CAMINO
18
FUNCION DE LAS VOCALES
} } fil=8; for(i=0;i<j;i++) { gotoxy(24,fil);printf("%c", vector2[i]); fil=fil+1; } } void consonantes() { clrscr(); borde(); fil=8; j=0; gotoxy(20,2),printf("***CONTAR LAS CONSONANTES***"); gotoxy(20,5),printf("Ingrese una cadena : "); flushall(); gets(vector1); cadena=strlen(vector1); for(i=0;i<cadena;i++) { if(vector1[i]!='a'&&vector1[i]!='e'&&vector1[i]!='i'&&vector1[i]!='o'&&v ector1[i]!='u') { vector2[j]=vector1[i]; j=j+1; } } fil=8; for(i=0;i<j;i++) { FUNCION DE LAS gotoxy(19,fil);printf("%c", vector2[i]); CONSONANTES fil=fil+1; } for(i=0;i<j;i++) { for(h=0;h<j;h++) { if(vector2[i]<vector2[h]) VIVIANA CAMINO
19
{ aux=vector2[i]; vector2[i]=vector2[h]; vector2[h]=aux; } } } fil=8; for(i=0;i<j;i++) { gotoxy(24,fil);printf("%c", vector2[i]); fil=fil+1; } } void main() INICIO DEL PROGRAMA Y DEL DO { do { clrscr(); borde(); textcolor(3); gotoxy(10,3);printf("***PROGRAMA QUE ME PERMITA ESCOGER LAS SIGUIENTES ALTERNATIVAS ***"); gotoxy(17,4); printf("1.-CADENA DE VOCALES "); gotoxy(17,5); printf("2.-CADENA DE CONSONANTES "); gotoxy(17,6); printf("3.-SALIR "); gotoxy(15,9); printf("Ingrese la opcion que desea ==> ");scanf("%d",&op); switch(op) { case 1: { vocales(); } break; case 2: { consonantes(); } break; VIVIANA CAMINO
20
case 3: { exit(); } break;
PROCESO DEL SWITCH
} gotoxy(30,20);printf("²Desea continuar [1] o [0] para finalizar² = ");scanf("%d",&op); } while(op==1); CIERRE DEL DO getch(); }
ANÁLISIS Para este programa debemos declarar las 2 librerías principales como son;#include <conio.h>,#include<stdio.h> luego iniciamos el programa con declaración de la variables que vayamos a utilizar pueden ser globales, luego hacemos para iniciar el programa con una estructura de control para realizar el margen, luego debemos declara el posicionamiento de filas y columnas, después declaramos una estructura para poder ingresar los datos de una matriz, una ves realizado la entrada de la matriz debemos realizar la entrada principal para utilizar la serie del Fibonacci y el factorial, una vez realizado esta estructura debemos guardarlos en un vector para poder visualizar el factorial y el fibonacci luego, debemos iniciar con el programa principal con void main ( ),luego declaramos variables que sean necesarias utilizando una definición global en este caso el int, ya que nos permite ingresar números enteros, después abrimos un lazo do, que es una Instrucción repetitiva ….mientras la condición sea verdadera, hacemos un blanqueado de pantalla, y realizamos una estructura para poder visualizar cuantas filas y columnas vamos a utilizar, luego abrimos un lazo for el cual nos permite hacer un control, para poder entrar al programa debemos declarar “printf”; para la salida de datos y “scanf”, para tener una posición en la pantalla debemos utilizar la instrucción gotoxy(col,fila), utilizamos el while para serrar la condición del do, y finalmente realizamos un mensaje que diga continuar presione 1 y para finalizar presione 0 cerramos el lazo for para que se repita las veces que sea necesario si deseamos debemos controlar para que el Fibonacci baya controlado de tatal numero al que desea
VIVIANA CAMINO
21
CORRIDO
VIVIANA CAMINO
22
4.- Diseñe un programa que me permita ingresar n elementos en una matriz cuadrática entre 3 y 35, presente la matriz resultante. # include<stdio.h> # include<conio.h> int i,j,op,col,fila,limt,matriz[10][10];
LIBRERIAS PRINCIPALES Y VARIABLES DE TIPO ENTERO0
void borde() { for(i=1;i<=80;i++) { gotoxy(i,1);printf("*"); FUNCION DEL BORDE gotoxy(i,24);printf("*"); } for(i=1;i<=24;i++) { gotoxy(1,i);printf("*"); gotoxy(80,i);printf("*"); } } void ingresar (int limite) { fila=10; col=10; gotoxy(5,7);printf("²MATRIZ DE INGRESO²"); for(i=1;i<=limite;i++) { for(j=1;j<=limite;j++) { FUNCION DEL do INGRESO { gotoxy(col,fila);printf(" "); gotoxy(col,fila);scanf("%d",&matriz[i][j]); } while(matriz[i][j]<3 || matriz[i][j]>35); col=col+5; } fila=fila+1; col=10; } } void visualizar (int limite)
VIVIANA CAMINO
23
{ fila=10; col=36; gotoxy(30,7);printf("²MATRIZ DE SALIDA²"); for(i=1;i<=limite;i++) { for(j=1;j<=limite;j++) { gotoxy(col,fila);printf("%d",matriz[i][j]); col=col+5; } col=36; fila=fila+1; } }
FUNCION VISUALIZAR
INICIO DEL PROGRAMA Y DEL DO void main () { do { clrscr(); borde(); textcolor(3); gotoxy(25,2);printf(" ***MATRICES***"); gotoxy(22,4);printf("Ingresar el limite = ");scanf("%d",&limt); ingresar(limt); visualizar(limt); gotoxy(25,20);printf("² Desea continuar [1] o [0] para finalizar ² = ");scanf("%d",&op); } while(op==1); CIERRE DEL DO
getch(); }
ANÁLISIS Para este programa debemos declarar las 2 librerías principales como son;#include <conio.h>,#include<stdio.h> luego iniciamos el programa con declaración de la variables que vayamos a utilizar pueden ser globales, luego hacemos para iniciar el programa con una estructura de control para realizar el margen, luego debemos declara el posicionamiento de filas y columnas, después VIVIANA CAMINO
24
declaramos una estructura para poder ingresar los datos de una matriz, una ves realizado la entrada de la matriz debemos realizar la entrada principal para utilizar la serie del Fibonacci y el factorial, una vez realizado esta estructura debemos guardarlos en un vector para poder visualizar el factorial y el fibonacci luego, debemos iniciar con el programa principal con void main ( ),luego declaramos variables que sean necesarias utilizando una definición global en este caso el int, ya que nos permite ingresar números enteros, después abrimos un lazo do, que es una Instrucción repetitiva ….mientras la condición sea verdadera, hacemos un blanqueado de pantalla, y realizamos una estructura para poder visualizar cuantas filas y columnas vamos a utilizar, luego abrimos un lazo for el cual nos permite hacer un control, para poder entrar al programa debemos declarar “printf”; para la salida de datos y “scanf”, para tener una posición en la pantalla debemos utilizar la instrucción gotoxy(col,fila), utilizamos el while para serrar la condición del do, y finalmente realizamos un mensaje que diga continuar presione 1 y para finalizar presione 0 cerramos el lazo for para que se repita las veces que sea necesario si deseamos debemos controlar para que el Fibonacci baya controlado de tatal numero al que desea
CORRIDO
VIVIANA CAMINO
25
5.- Diseñe un programa utilizando matrices y funciones que me permita generar un matriz de cualquier orden con cualquier factor ingresado desde teclado. # include<stdio.h> # include<conio.h> int cot,fact,i,j,op,col,fila,limt,matriz[10][10]; void 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("*"); } } void ingresar (int limite, int factor) { fila=10; col=5; cot=0; gotoxy(8,8);printf("²MATRIZ DE INGRESO²"); for(i=1;i<=limite;i++) { for(j=1;j<=limite;j++) { cot=cot+1; matriz[i][j]=factor*cot; gotoxy(col,fila);printf("%d",matriz[i][j]); col=col+4; } fila=fila+1; col=5; } } VIVIANA CAMINO
26
LIBRERIAS PRINCIPALES Y VARIABLES ENTERAS
VOID INGRESO DE LA MATRIZ
void visualizar (int limite) { fila=10; col=38; gotoxy(35,8);printf("²MATRIZ DE SALIDA²"); for(i=1;i<=limite;i++) { for(j=1;j<=limite;j++) { gotoxy(col,fila);printf("%d",matriz[i][j]);
FUNCION VISUALIZAR MATRIZ
col=col+4; } fila=fila+1; col=38; } } void main () INICIO DEL PROGRAMA Y DEL DO { do { clrscr(); borde(); textcolor(3); gotoxy(17,2);printf(" ***MATRIZ DE CUALQUIER FACTOR INGRESADO***"); gotoxy(22,4);printf("Ingresar el limite = ");scanf("%d",&limt); gotoxy(22,6);printf("Ingresar el factor = ");scanf("%d",&fact); ingresar(limt,fact); visualizar(limt); gotoxy(25,20);printf("² Desea continuar [1] o [0] para finalizar ² = ");scanf("%d",&op); } while(op==1); CIERE DEL DO
getch(); }
VIVIANA CAMINO
27
ANÁLISIS Para este programa debemos declarar las 2 librerías principales como son;#include <conio.h>,#include<stdio.h> luego iniciamos el programa con declaración de la variables que vayamos a utilizar pueden ser globales, luego hacemos para iniciar el programa con una estructura de control para realizar el margen, luego debemos declara el posicionamiento de filas y columnas, después declaramos una estructura para poder ingresar los datos de una matriz, una ves realizado la entrada de la matriz debemos realizar la entrada principal para utilizar la serie del Fibonacci y el factorial, una vez realizado esta estructura debemos guardarlos en un vector para poder visualizar el factorial y el fibonacci luego, debemos iniciar con el programa principal con void main ( ),luego declaramos variables que sean necesarias utilizando una definición global en este caso el int, ya que nos permite ingresar números enteros, después abrimos un lazo do, que es una Instrucción repetitiva ….mientras la condición sea verdadera, hacemos un blanqueado de pantalla, y realizamos una estructura para poder visualizar cuantas filas y columnas vamos a utilizar, luego abrimos un lazo for el cual nos permite hacer un control, para poder entrar al programa debemos declarar “printf”; para la salida de datos y “scanf”, para tener una posición en la pantalla debemos utilizar la instrucción gotoxy(col,fila), utilizamos el while para serrar la condición del do, y finalmente realizamos un mensaje que diga continuar presione 1 y para finalizar presione 0 cerramos el lazo for para que se repita las veces que sea necesario si deseamos debemos controlar para que el Fibonacci baya controlado de tatal numero al que desea.
CORRIDO
VIVIANA CAMINO
28
6.- Diseñe un programa que me permita llenar una matriz de cualquier orden con valores pares. # include<stdio.h> # include<conio.h> int i,j,op,col,fila,par,limt,matriz[10][10];
LIBRERIAS PRINCIPALES Y VARIABLES DE TIPO ENTERO
void borde() { for(i=1;i<=80;i++) { gotoxy(i,1);printf("*"); gotoxy(i,24);printf("*"); FUNCION DEL BORDE } for(i=1;i<=24;i++) { gotoxy(1,i);printf("*"); gotoxy(80,i);printf("*"); } } void ingresar (int limite) { fila=10; col=10; par=0; gotoxy(11,7);printf("²MATRIZ DE INGRESO²"); for(i=1;i<=limite;i++) { for(j=1;j<=limite;j++) { par=par+2; matriz[i][j]=par; gotoxy(col,fila);printf("%d",matriz[i][j]); col=col+5; } fila=fila+1; col=10; } } void visualizar (int limite) {
VIVIANA CAMINO
29
FUNCION DE LA MATRIZ
fila=10; col=42; gotoxy(43,7);printf("²MATRIZ DE SALIDA²"); for(i=1;i<=limite;i++) { for(j=1;j<=limite;j++) {
FUNCION VISUALIZAR
gotoxy(col,fila);printf("%d",matriz[i][j]); col=col+5; } col=42; fila=fila+1; } }
void main () { INICIO DEL PROGRAMA Y DEL DO do { clrscr(); borde(); textcolor(3); gotoxy(17,2);printf(" ***MATRICES DE CUALQUIER ORDEN CON VALOR PARES***"); gotoxy(22,4);printf("Ingresar el limite = ");scanf("%d",&limt); ingresar(limt); visualizar(limt); gotoxy(25,20);printf("² Desea continuar [1] o [0] para finalizar ² = ");scanf("%d",&op); } while(op==1); getch(); }
CIERRE DEL DO
ANÁLISIS Para este programa debemos declarar las 2 librerías principales como son;#include <conio.h>,#include<stdio.h> luego iniciamos el programa con declaración de la variables que vayamos a utilizar pueden ser globales, luego hacemos para iniciar el programa con una estructura de control para realizar el VIVIANA CAMINO
30
margen, luego debemos declara el posicionamiento de filas y columnas, después declaramos una estructura para poder ingresar los datos de una matriz, una ves realizado la entrada de la matriz debemos realizar la entrada principal para utilizar la serie del Fibonacci y el factorial, una vez realizado esta estructura debemos guardarlos en un vector para poder visualizar el factorial y el fibonacci luego, debemos iniciar con el programa principal con void main ( ),luego declaramos variables que sean necesarias utilizando una definición global en este caso el int, ya que nos permite ingresar números enteros, después abrimos un lazo do, que es una Instrucción repetitiva ….mientras la condición sea verdadera, hacemos un blanqueado de pantalla, y realizamos una estructura para poder visualizar cuantas filas y columnas vamos a utilizar, luego abrimos un lazo for el cual nos permite hacer un control, para poder entrar al programa debemos declarar “printf”; para la salida de datos y “scanf”, para tener una posición en la pantalla debemos utilizar la instrucción gotoxy(col,fila), utilizamos el while para serrar la condición del do, y finalmente realizamos un mensaje que diga continuar presione 1 y para finalizar presione 0 cerramos el lazo for para que se repita las veces que sea necesario si deseamos debemos controlar para que el Fibonacci baya controlado de tatal numero al que desea
CORRIDO
VIVIANA CAMINO
31
7.- Generar una matriz de cualquier orden con valores ceros, a acepción de la diagonal principal, la misma que se llena con valores unos, recorra la matriz y guarde los datos de la diagonal principal en un vector y presente los datos en forma ordenado. #include<stdio.h> #include<conio.h> #include<string.h> int i,j,x,col,c,h,fil,limt,limite,op,matriz[15][15];vector[15]; void 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("*"); } }
FUNCION DEL BORDE
void ingresar (int limite) { fil=10; col=10; h=1; gotoxy(8,8);printf("²MATRIZ DE INGRESO²"); for(i=1;i<=limite;i++) { for(j=1;j<=limite;j++) { if(i==j) { c=1; matriz[i][j]=c; gotoxy(col,fil);printf("%d",matriz[i][j]); col=col+3;
VIVIANA CAMINO
LIBRERIAS PRINCIPALES Y VARIABLES ENTERAS
32
FUNCION DEL INGRESO
} else { c=0; matriz[i][j]=c; gotoxy(col,fil);printf("%d",matriz[i][j]); col=col+3;
} } fil=fil+2; col=10; } } void visualizar(int limite) { col=35; fil=10; for(i=1;i<=limite;i++) { for(j=1;j<=limite;j++) { if(i==j) { vector[h]=matriz[i][j]; h=h+1; gotoxy(35,8);printf("²MATRIZ DIAGONAL PRIV²"); gotoxy(col,fil);printf("%d",matriz[i][j]); col=col+3; fil=fil+2; } } } } void ordenar(int limite) { col=65; fil=10; for(i=1;i<h;i++) VIVIANA CAMINO
33
FUNCIO VISUALIZAR
{ gotoxy(col,fil);printf("%d",vector[i]); fil=fil+2;
FUNCION ORDENAR
} } void main ( ) INICIO DEL PROGRAMA Y DEL { DO do { clrscr(); borde(); textcolor(3); gotoxy(25,2);printf(" ***MATRICES***"); gotoxy(22,4);printf("Ingresar el limite = ");scanf("%d",&limt); ingresar(limt); visualizar(limt); ordenar(limt); gotoxy(25,20);printf("² Desea continuar [1] o [0] para finalizar ² = ");scanf("%d",&op); } while(op==1); CIERRE DEL DO getch(); }
VIVIANA CAMINO
34
ANÁLISIS
CORRIDO
VIVIANA CAMINO
35
8.- Diseñe un programa utilizando funciones que la una matriz de enteros de n números y n números y que se muestre en pantalla la matriz transpuesta.
#include<stdio.h> #include<conio.h> principales
librerías
#include<math.h> int mat1[10][10],a=1,b=0,c=0; int i,j,fil=0,k=0,l=0,fil2=0,fact=0,cont=0,x=0;
variables de tipo
int f,aux=0,op,lim; void borde () { clrscr(); for (i=1;i<=80;i++)
Funcion borde
{ gotoxy(i,1); printf("6"); gotoxy(i,24); printf("6"); }
for (i=1;i<=24;i++) { gotoxy(1,i); printf("6"); gotoxy(80,i); printf("6"); VIVIANA CAMINO
36
}
} } void encero(int m) { for(i=1;i<=m;i++) Encerado para que empieza en cero
{ for(j=1;j<=m;j++) { mat1[i][j] = 0; } } } void Fibonacci(int m) Variables de la fibonacci
{ a=1; b=0; c=0; for(i=1;i<=m;i++)
Tiene que tener un for y if
{ for(j=1;j<=m;j++) { if (i==j)
VIVIANA CAMINO
37
{ c=a+b;
Formulas de la fibonnaci
a=b; b=c; mat1[i][j] = c; } } } }
void diago(int a) { k=(-1+(5*a)); Formula para sacar la diagonal
fact = 1; fil=4; for(j=1;j<=a;j++) {
for(x=1;x<=j;x++) { fact = fact * x; } if (a%2!=0) {
VIVIANA CAMINO
38
if(((a/2)+1)==j) { aux =fact; } else { mat1[j][(a+1)-j] = fact; } } else { mat1[j][(a+1)-j] = fact; } fact=1; k=k-5; fil=fil+2; } } void impresion(int a) { k=4; Formula Para la impression
fil=6; if (a%2==0) {
VIVIANA CAMINO
39
for(i=1;i<=a;i++) { for(j=1;j<=a;j++) { gotoxy(k,f1);printf("%d",mat1[i][j]); k=k+6; } k=3; fil=fil+2; } } else { for(i=1;i<=a;i++) { for(j=1;j<=a;j++) { if((((a/2)+1)==j) && (((a/2)+1)==i)) { gotoxy(t-2,fil);printf("%d / %d",mat1[i][j],aux); } else { gotoxy(t,f1);printf("%d",mat1[i][j]);
VIVIANA CAMINO
40
Imprimir mat 1
} k=k+6; } k=3; fil=fil+2; } } } Void impre2 (int a) { f贸rmula para la impresion2
k=(-1+(5*a)) + 16; fil=6; if (a%2==0) { for(i=1;i<=a;i++) { for(j=1;j<=a;j++) { if (mat1[i][j]!=0) {
gotoxy(t,fil);printf("%d",mat1[i][j]); } k=k+6; }
VIVIANA CAMINO
41
k=(-1+(5*a)) + 16; fil=fil+2;
Del factorial
} } else { for(i=1;i<=a;i++) { for(j=1;j<=a;j++) { if(((a/2)+1)==j) { if (mat1[i][j]!=0) { gotoxy(k-2,fil);printf("%d / %d",mat1[i][j],aux); } } else { if (mat1[i][j]!=0) { gotoxy(k,fil);printf("%d",mat1[i][j]); } }
VIVIANA CAMINO
42
k=k+6; } k=(-1+(5*a)) + 16; fil=fil+2; } } }
void main() { Realizamos el main
Do textcolor(2); clrscr(); borde(); do { gotoxy(55,8); printf(" ");
gotoxy(10,8); printf(" INGRE EL LIMITE: ");scanf("%d",&lim); gotoxy(55,8); scanf("%d",&f); } while (f<1 || f >4); borde(); gotoxy(12,2); printf(" MATRIZ PRINCIPAL DIAGONALPRIN y SECU "); encero(f); VIVIANA CAMINO
43
fibonaci(f); diago(f);
Impresi贸n de las funciones
impresion(f); impre2(f); gotoxy(4,23); printf("PRESIONE {1}SI DESEA CONTINUAR O {O}PARA FINALIZAR=="); scanf("%d",&op); }
Desea continuar si o no
while (op != 0);
CORRIDO Ingreso
Resultado
VIVIANA CAMINO
44
ANÁLISIS Para este programa debemos declarar las 2 librerías principales como son;#include <conio.h>,#include<stdio.h> luego iniciamos el programa con declaración de la variables que vayamos a utilizar pueden ser globales, luego hacemos para iniciar el programa con una estructura de control para realizar el margen, luego debemos declara el posicionamiento de filas y columnas, después declaramos una estructura para poder ingresar los datos de una matriz, una ves realizado la entrada de la matriz debemos realizar la entrada principal para utilizar la serie del Fibonacci y el factorial, una vez realizado esta estructura debemos guardarlos en un vector para poder visualizar el factorial y el fibonacci luego, debemos iniciar con el programa principal con void main ( ),luego declaramos variables que sean necesarias utilizando una definición global en este caso el int, ya que nos permite ingresar números enteros, después abrimos un lazo do, que es una Instrucción repetitiva ….mientras la condición sea verdadera, hacemos un blanqueado de pantalla, y realizamos una estructura para poder visualizar cuantas filas y columnas vamos a utilizar, luego abrimos un lazo for el cual nos permite hacer un control, para poder entrar al programa debemos declarar “printf”; para la salida de datos y “scanf”, para tener una posición en la pantalla debemos utilizar la instrucción gotoxy(col,fila), utilizamos el while para serrar la condición del do, y finalmente realizamos un mensaje que diga continuar presione 1 y para finalizar presione 0 cerramos el lazo for para que se repita las veces que sea necesario si deseamos debemos controlar para que el Fibonacci baya controlado de tatal numero al que desea
VIVIANA CAMINO
45
9.- Diseñe un programa en c que permita obtener el producto algebraico de dos matrices cuadráticas de n elementos ingresados desde teclado que se encuentren entre 1 y 23 #include<stdio.h>
LIBRERIAS PRINCIPALES
#include<conio.h> int li,col1,c,col2,f,fil1,fil2,m,i,j,op; VARIABLES ENTERAS
int mat1[10][10],mat2[10][10],mat3[10][10];
void borde() { for(i=1;i<=24;i++) { gotoxy(1,i);printf("6");
FUNCION DEL BORDE
gotoxy(80,i);printf("%"); } for(i=1;i<=80;i++) { gotoxy(i,2);printf("6"); gotoxy(i,24);printf("%"); } } void ingreso()
FUNCION DEL INGRESO
{ for(i=1;i<=li;i++) {
VIVIANA CAMINO
FUNCIONES DEL FOR CON I Y J
46
for(j=1;j<=li;j++) { INICIO DEL DO
do { gotoxy(c,f);scanf("%d",&mat1[i][j]);
IMPRIMIMOS LA MATRIZ
} while(mat1[i][j]<1 || mat1[i][j]>23); DE DONDE SE TERMINA OSEA DE 1 A 23
c=c+5; } c=5; f=f+1; } for(i=1;i<=li;i++)
FUNCION DEL FOR
{ for(j=1;j<=li;j++) { do
INICIO DEL SEGUNDO DO
{ gotoxy(col1,fil1);scanf("%d",&mat2[i][j]); }
IMPRESIÓN DE LA SEGUNDA MATRIZ
while(mat2[i][j]<1 || mat2[i][j]>23); DESDE 1 HASTA EL 23
col1=col1+5; } col1=30;
VIVIANA CAMINO
47
fil1=fil1+1; } } void producto()
FUNCION DEL PRODUCTO
{ for(i=0;i<=li;i++) { for(j=0;j<=li;j++)
FUNCION DEL FOR CON EL I Y J
{ mat3[i][j]=0; for(m=0;m<=li;m++)
LA MATRIZ ENCERADA EN CERO
{ mat3[i][j]=mat3[i][j]+mat1[i][m]*mat2[m][j]; }
MATRIZ3[I][J]=MATRIZ3[I][J]+ MAT1[I][M]*MAT2[M][J]
} } for(i=1;i<=li;i++) FUNCION DEL FOR I Y J
{ for(m=1;m<=li;m++) { gotoxy(col2,fil2);printf("%d",mat3[i][m]); col2=col2+5; } col2=47;
VIVIANA CAMINO
48
IMPRIMO LA MATRIZ 3
fil2=fil2+1; } } void main()
FUNCION MAIN
{ do
INICIO DEL DO DEL MAIN
{ textcolor(10+i); clrscr(); borde(); c=5;
IMPRESIÓN DE FUNCIONES
col1=30; col2=47; f=12; fil1=12; fil2=12; gotoxy(19,3);printf("++PRODUCTO ALGEBRAICO DE DOS MATRIZES++"); gotoxy(10,5);printf("INGRESE EL LIMITE QUE DESEE INGRESAR= ");scanf("%d",&li); gotoxy(6,7);printf("PRIMERA MATRIZ MATRIZ RESULTANTE +++");
SEGUNDA MATRIZ
ingreso(); producto();
IMPRESIÓN DE LAS FUNCIONES
textcolor(2);
VIVIANA CAMINO
49
gotoxy(3,21);printf("DESEA CONTINUAR PRESIONE [1] O [0] PARA FINALIZAR== ");scanf("%d",&op); }
DESEA CONTINUAR SI O NO
while(op==1); }
VIVIANA CAMINO
50
MATRICES CUADRATICAS Bueno les voy hablar como debemos hacer un producto de dos matrices cuadráticas lo primero que debemos hacer es declarar las librerías principales luego declarar variables en mi caso es de tipo entero las variables son: Li=limite C:columna,Col1:columna1,Col2:columna2,Fil1:fila1,Fil2:fila2,F:fila, M:es otra variable Para el for I:para poner en el for J:para poner en el for, Op: opcion mat1 [10][10]: primera matriz mat2 [10] [10]: segunda matriz mat3 [10][10]: tercera matriz BORDE Cuando ya declaramos nuestras variables luego realizamos el respectivo borde Lo cual debería ir así óse a como una función For (i=1; i<=24; i++) { Gotoxy (1, i); printf ("6"); Gotoxy (80, i); printf ("%"); } for(i=1;i<=80;i++) { gotoxy(i,2);printf("6"); gotoxy(i,24);printf("%"); } VOID INGRESO Luego empezamos hacer el ingreso de las matrices lo primero que debe ir un for de donde inicia hasta donde termine por ejemplo yo tengo asi . Pero esta es la primera manera de hacer con la primera matriz ya que tiene que tener una condición si la mat1[i][j]<1 || mat1[i][j]>23 for(i=1;i<=li;i++)
VIVIANA CAMINO
51
{ for(j=1;j<=li;j++) { do { gotoxy(c,f);scanf("%d",&mat1[i][j]); } while(mat1[i][j]<1 || mat1[i][j]>23); c=c+5; } c=5; f=f+1; } Esta es la segunda matriz que tenemos que hacer los mismo que la primera matriz mat2[i][j]<1 || mat2[i][j]>23 for(i=1;i<=li; i++) { for(j=1;j<=li;j++) { do { Gotoxy (col1,fil1); scanf("%d",&mat2[i][j]); } While (mat2 [i] [j] <1 || mat2 [i][j]>23); col1=col1+5; } col1=30; fil1=fil1+1; } }
VOID PRODUCTO Realizamos la funci贸n del producto ose a de la tercera matriz con un for que debe estar as铆 ahora i=0; i<=li; i++, j=0; j<=li; j++ y la tercera matriz debe estar igualada en cero para si poder tener el producto de dicha matriz otro for para poder tener el resultado de la matriz m=0;m<=li;m++ luego resolvemos la matriz para sacar el producto total mat3[i][j]=mat3[i][j]+mat1[i][m]*mat2[m][j] { for(i=0;i<=li;i++) VIVIANA CAMINO
52
{ for(j=0;j<=li;j++) { mat3[i][j]=0; for(m=0;m<=li;m++) { mat3[i][j]=mat3[i][j]+mat1[i][m]*mat2[m][j]; } } } for(i=1;i<=li;i++) { for(m=1;m<=li;m++) { gotoxy(col2,fil2);printf("%d",mat3[i][m]); col2=col2+5; } col2=47; fil2=fil2+1; } } VOID MAIN La función main es para ya dar culminado el ejercicio deber tener los resultados de las funciones por ejemplo void main() Borde(); Textcolor();si desea por supuesto Clrscr(); Ingreso(); Producto(); un do {}while(desea continuar si o no );scanf(“%d”,&op);
VIVIANA CAMINO
53
10.- Diseñe un programa utilizando matrices y funciones, que me permita generar una matriz de n elementos con la serie de fibonacci, y la diagonal secundaria se llena con el factorial, guarde los datos de la diagonal secundaria en un vector y presente. # include<stdio.h> # include<conio.h> int d,factorial,fact,c,a,b,i,j,op,ctv: int col,fila,limt,matriz[10][10],vector[12],h; void 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("*"); } }
LIBRERIAS PRINCIPALES Y VARIABLES ENTERAS
FUNCION DEL BORDE
void ingresar (int limite, int factor) { gotoxy(2,8);printf("²MATRIZ DE INGRESO²"); fila=10; col=5; factorial=1; h=1; a=1; b=0; d=limite; for(i=1;i<=limite;i++) { for(j=1;j<=limite;j++) { if(i==j); { c=a+b;
VIVIANA CAMINO
54
FUNCION DEL INGRESO
a=b; b=c; matriz[i][j]=c; gotoxy(col,fila);printf("%d",matriz[i][j]); } col=col+5; } fila=fila+4; col=5; } fila=10; d=limite; for(i=1;i<=limite;i++) { for(j=1;j<=limite;j++) { if(d==j) { factorial=factorial*i; matriz[i][j]=factorial; gotoxy(col,fila);printf("%d",matriz[i][j]); delay(900); } col=col+5; } fila=fila+4; d--; col=5; } } void vector1 (int limite) { gotoxy(26,8);printf("² DIGONAL SECUNDARIO ²"); fila=10; col=40; d=limite; VIVIANA CAMINO
55
for(i=1;i<=limite;i++) { for(j=1;j<=limite;j++) { if(d==j) { vector[h]=matriz[i][j]; h=h+1; gotoxy(col,fila);printf("%d",matriz[i][j]); col=col-2; fila=fila+2; d--; } } } } void ordenar(int limite, int factor) { gotoxy(54,8);printf("² VECTOR ORDENADO ²"); col=65; fila=10;
for(i=1;i<h;i++) { gotoxy(col,fila);printf("%d",vector[i]); fila=fila+2;
FUNCION DEL VECTOR
FUNCION DE ORDENAR
} }
void main () INICIO DEL PROGRAMA Y { DEL DO do { clrscr(); borde(); textcolor(3); gotoxy(3,2);printf(" ***GENERACION DE MATRIZ CON FIBONACI YDIAGONAL SECUNDARIA DE FACTORIAL***"); gotoxy(22,4);printf("Ingresar el limite = ");scanf("%d",&limt); gotoxy(22,6);printf("Ingresar el factorial = ");scanf("%d",&fact); VIVIANA CAMINO
56
ingresar(limt,fact); vector1(limt); ordenar(limt,fact); gotoxy(25,23);printf("² Desea continuar [1] o [0] para finalizar ² = ");scanf("%d",&op); } while(op==1); CIERRE DEL LAZO DO
getch(); }
ANÁLISIS Para este programa debemos declarar las 2 librerías principales como son;#include <conio.h>,#include<stdio.h> luego iniciamos el programa con declaración de la variables que vayamos a utilizar pueden ser globales, luego hacemos para iniciar el programa con una estructura de control para realizar el margen, luego debemos declara el posicionamiento de filas y columnas, después declaramos una estructura para poder ingresar los datos de una matriz, una ves realizado la entrada de la matriz debemos realizar la entrada principal para utilizar la serie del Fibonacci y el factorial, una vez realizado esta estructura debemos guardarlos en un vector para poder visualizar el factorial y el fibonacci luego, debemos iniciar con el programa principal con void main ( ),luego declaramos variables que sean necesarias utilizando una definición global en este caso el int, ya que nos permite ingresar números enteros, después abrimos un lazo do, que es una Instrucción repetitiva ….mientras la condición sea verdadera, hacemos un blanqueado de pantalla, y realizamos una estructura para poder visualizar cuantas filas y columnas vamos a utilizar, luego abrimos un lazo for el cual nos permite hacer un control, para poder entrar al programa debemos declarar “printf”; para la salida de datos y “scanf”, para tener una posición en la pantalla debemos utilizar la instrucción gotoxy(col,fila), utilizamos el while para serrar la condición del do, y finalmente realizamos un mensaje que diga continuar presione 1 y para finalizar presione 0 cerramos el lazo for para que se repita las veces que sea necesario si deseamos debemos controlar para que el Fibonacci baya controlado de tatal numero al que desea
VIVIANA CAMINO
57
CORRIDO
VIVIANA CAMINO
58
11.-Relice un programa utilizando funciones que lea una matriz de enteros de n números de filas y de n números de columnas y se muestre en pantalla la matriz transpuesta. # include<stdio.h> # include<conio.h> int matriz1[10][10],matriz2[10][10]; int col,fil,i,j,op,fila,colum,a,b; void borde() { for(i=1;i<=80;i++) { gotoxy(i,1);printf("*"); gotoxy(i,24);printf("*"); }
LIBRERÍAS PRINCIPALES Y VARIABLES DE TIPO ENTERA
FUNCION DEL BORDE
for(i=1;i<=24;i++) { gotoxy(1,i);printf("*"); gotoxy(80,i);printf("*"); } } void ingresar (int a,int b) { gotoxy(2,8);printf("²MATRIZ DE INGRESO²"); fila=10; col=5; for(i=1;i<=a;i++) { for(j=1;j<=b;j++) { gotoxy(col,fila);scanf("%d",&matriz1[i][j]); matriz2[j][i]=matriz1[i][j]; col=col+3; } col=5; fila=fila+2; }
VIVIANA CAMINO
59
FUNCION DEL INGRESO
} void traspaso(int a,int b) { gotoxy(35,8);printf("²MATRIZ TRANSPUESTA²"); fila=10; col=39; for(i=1;i<=b;i++) { for(j=1;j<=a;j++) { gotoxy(col,fila);printf("%d",matriz2[i][j]); col=col+3; } fila=fila+2; col=39; } } void main () INICIO DEL PROGRAMA Y DEL DO { do { clrscr(); borde(); textcolor(3); gotoxy(25,2);printf(" ***GENERACION DE MATRIZ TRANSPUESTA***"); gotoxy(22,4);printf("Ingresar las filas = ");scanf("%d",&fil); gotoxy(22,6);printf("Ingresar las columnas = ");scanf("%d",&colum); ingresar(fil,colum); traspaso(fil,colum); gotoxy(25,23);printf("² Desea continuar [1] o [0] para finalizar ² = ");scanf("%d",&op); } while(op==1); CIERRE DEL LAZO DO
getch(); }
VIVIANA CAMINO
60
12.-Diseñe un programa utilizando matrices y funciones que me permita generar una matriz con ceros solo las diagonales principal y secundaria y la demás posiciones muestren vacías. #include<conio.h> LIBRERIAS PRINCIPALES Y #include<stdio.h> VARIABLES DE TIPO int i,j,c,limite,fila,limt,col,matriz[15][15],op,d; ENTERA void borde() { for(i=1;i<=80;i++) { gotoxy(i,1);printf("*"); gotoxy(i,24);printf("*"); FUNCION DEL BORDE } for(i=1;i<=24;i++) { gotoxy(1,i);printf("*"); gotoxy(80,i);printf("*"); } } void principal(int limite) { col=8; fila=10; for(i=1;i<=limite;i++) { FUNCION DE LA MATRIZ for(j=1;j<=limite;j++) PRINCIPAL { if(i==j) { c=0; matriz[i][j]=0; gotoxy(col,fila);printf("%d",matriz[i][j]); } col=col+3; } fila=fila+2; col=8; } VIVIANA CAMINO
61
} void diagonal(int limite) { fila=10; d=limite; for(i=1;i<=limite;i++) { for(j=1;j<=limite;j++) { if(d==j) { c=0; matriz[i][j]=0; gotoxy(col,fila);printf("%d",matriz[i][j]); } col=col+3;
FUNCION DE LA DIAGONAL DE LA MATRIZ
} fila=fila+2; d--; col=8; } } void main () INICIO DEL PROGRAMA Y { DEL DO do { clrscr(); borde(); textcolor(5); gotoxy(27,2);cprintf(" ***MATRIZ DE CEROS***"); textcolor(9); gotoxy(3,8);cprintf(" ² MATRIZ PRINCIPAL Y DIAGONAL ²"); gotoxy(22,4);printf("Ingresar el limite = ");scanf("%d",&limt); principal(limt); diagonal(limt); textcolor(2); gotoxy(27,23);cprintf("² Desea continuar [1] o [0] para finalizar ² = ");scanf("%d",&op); } while(op==1); CIERRE DEL LAZO DO
VIVIANA CAMINO
62
getch(); }
ANÁLISIS Para este programa debemos declarar las 2 librerías principales como son;#include <conio.h>,#include<stdio.h> luego iniciamos el programa con declaración de la variables que vayamos a utilizar pueden ser globales, luego hacemos para iniciar el programa con una estructura de control para realizar el margen, luego debemos declara el posicionamiento de filas y columnas, después declaramos una estructura para poder ingresar los datos de una matriz, una ves realizado la entrada de la matriz debemos realizar la entrada principal para utilizar la serie del Fibonacci y el factorial, una vez realizado esta estructura debemos guardarlos en un vector para poder visualizar el factorial y el fibonacci luego, debemos iniciar con el programa principal con void main ( ),luego declaramos variables que sean necesarias utilizando una definición global en este caso el int, ya que nos permite ingresar números enteros, después abrimos un lazo do, que es una Instrucción repetitiva ….mientras la condición sea verdadera, hacemos un blanqueado de pantalla, y realizamos una estructura para poder visualizar cuantas filas y columnas vamos a utilizar, luego abrimos un lazo for el cual nos permite hacer un control, para poder entrar al programa debemos declarar “printf”; para la salida de datos y “scanf”, para tener una posición en la pantalla debemos utilizar la instrucción gotoxy(col,fila), utilizamos el while para serrar la condición del do, y finalmente realizamos un mensaje que diga continuar presione 1 y para finalizar presione 0 cerramos el lazo for para que se repita las veces que sea necesario si deseamos debemos controlar para que el Fibonacci baya controlado de tatal numero al que desea
VIVIANA CAMINO
63
13.-DiseĂąe un programa utilizando matrices y funciones que me permita ingresar n tĂŠrminos en una matriz entre 5 y 35 encontrar todo los valores impares ingresado en la matriz, pasar los datos a un vector y presentar dicho vector ordenado ascendente y descendente, el proceso se repite n veces. #include<conio.h> LIBRERIAS #include<stdio.h> PRINCIPALES Y int vector[12],matriz[12][12],limit,i,j,op,fila,col,v,aux; VARIABLES DE TIPO void borde () ENTERA { for (i=1;i<=80;i++) { gotoxy(i,1); printf("*"); gotoxy(i,24);printf("*"); FUNCION DEL BORDE } for (i=1;i<=24;i++) { gotoxy(1,i); printf("*"); gotoxy(80,i);printf("*"); } } void ingreso(int limite) { fila=10; col=9; for(i=1;i<=limite;i++) { for(j=1;j<=limite;j++) { FUNCION DEL INGRESO do { gotoxy(col,fila);printf(" "); gotoxy(col,fila);scanf("%d",&matriz[i][j]); } while(matriz[i][j]<5||matriz[i][j]>35); col=col+4; } col=9; fila=fila+2; } VIVIANA CAMINO
64
} void impar(int limite) { v=1; col=35; fila=10; for(i=1;i<=limite;i++) { for(j=1;j<=limite;j++) { if(matriz[i][j]%2==1) { vector[v]=matriz[i][j]; gotoxy(col,fila);printf("%d",vector[v]); v=v+1; fila=fila+1; } col=35; } } } void asendente(int limite) { col=55; fila=10; for(i=1;i<v;i++) { for(j=1;j<v;j++) { if(vector[i]<vector[j]) { aux=vector[i]; vector[i]=vector[j]; vector[j]=aux; } } } } impresion1 (limite) { for(i=1;i<v;i++) { VIVIANA CAMINO
FUNCION DEL IMPAR
FUNCION ASCENDENTE
IMPRESIĂ&#x201C;N ASCENDENTE
65
gotoxy(col,fila);printf("%d",vector[i]); fila=fila+1; } } void desendente(int limite) { col=70; fila=10; for(i=1;i<v;i++) { for(j=1;j<v;j++) FUNCION DESCENDENTE { if(vector[i]>vector[j]) { aux=vector[i]; vector[i]=vector[j]; vector[j]=aux; } } } } impresion2 (limite) { for(i=1;i<v;i++) IMPRESIĂ&#x201C;N DEL { DESCENDENTE gotoxy(col,fila);printf("%d",vector[i]); fila=fila+1; } } void main() { INICIO DEL PROGRAMA Y DEL DO do { clrscr(); borde(); textcolor(4); gotoxy(20,3);cprintf("*** ENCONTRAR NUMEROS IMPARES ***"); textcolor(7); gotoxy(20,5); cprintf(" Ingrese un numero : ");scanf("%d",&limit); textcolor(5); VIVIANA CAMINO
66
gotoxy(5,7); cprintf("² MATRIZ DE INGRESO ²"); gotoxy(29,7); cprintf("² VECT DESORDEN ²"); gotoxy(49,7); cprintf("² VECT ASEND ²"); gotoxy(65,7); cprintf("² VECT DESEN ²"); ingreso(limit); impar(limit); asendente(limit); impresion1(limit); desendente(limit); impresion2(limit); textcolor(10); gotoxy(30,23);cprintf("² Desea continuar [1] o [0] para finalizar ² = ");scanf("%d",&op); } CIERRE DEL LAZO DO while(op==1); getch(); }
ANÁLISIS Para este programa debemos declarar las 2 librerías principales como son;#include <conio.h>,#include<stdio.h> luego iniciamos el programa con declaración de la variables que vayamos a utilizar pueden ser globales, luego hacemos para iniciar el programa con una estructura de control para realizar el margen, luego debemos declara el posicionamiento de filas y columnas, después declaramos una estructura para poder ingresar los datos de una matriz, una ves realizado la entrada de la matriz debemos realizar la entrada principal para utilizar la serie del Fibonacci y el factorial, una vez realizado esta estructura debemos guardarlos en un vector para poder visualizar el factorial y el fibonacci luego, debemos iniciar con el programa principal con void main ( ),luego declaramos variables que sean necesarias utilizando una definición global en este caso el int, ya que nos permite ingresar números enteros, después abrimos un lazo do, que es una Instrucción repetitiva ….mientras la condición sea verdadera, hacemos un blanqueado de pantalla, y realizamos una estructura para poder visualizar cuantas filas y columnas vamos a utilizar, luego abrimos un lazo for el cual nos permite hacer un control, para poder entrar al programa debemos declarar “printf”; para la salida de datos y “scanf”, para tener una posición en la pantalla debemos utilizar la instrucción gotoxy(col,fila), utilizamos el while para serrar la condición del do, y finalmente realizamos un mensaje que diga continuar presione 1 y para finalizar presione 0 cerramos el lazo for para que se repita las veces que sea necesario si deseamos debemos controlar para que el Fibonacci baya controlado de tatal numero al que desea
VIVIANA CAMINO
67
CORRIDO
VIVIANA CAMINO
68
14.- Diseñe un programa utilizando matrices y funciones que me permita generar una matriz con cualquier factor ingresado desde teclado, recorre la matriz y encontrar todas las posiciones pares ya sea en filas y en columnas y guarde los datos en un vector. # include<stdio.h> # include<conio.h> int cot,fact,i,j,op,col,fila,limt,matriz[10][10],vector[20],cotvector; void borde() { for(i=1;i<=80;i++) { gotoxy(i,1);printf("*"); gotoxy(i,24);printf("*"); FUNCION DEL BORDE } for(i=1;i<=24;i++) { gotoxy(1,i);printf("*"); gotoxy(80,i);printf("*"); } } void ingresar (int limite, int factor) { fila=10; col=5; cot=0; cotvector=0; gotoxy(8,8);printf("²MATRIZ DE INGRESO²"); for(i=1;i<=limite;i++) { for(j=1;j<=limite;j++) { cot=cot+1; matriz[i][j]=factor*cot; gotoxy(col,fila);printf("%d",matriz[i][j]); if((i%2==0)|| (j%2==0)) { cotvector=cotvector+1; vector[cotvector]=matriz[i][j]; VIVIANA CAMINO
69
LIBRERIAS PRINCIPALES Y VARIABLES DE TIPO ENTERO
FUNCION DEL INGRESO
} col=col+4; } fila=fila+1; col=5; } } void impresion (int limite) { fila=10; col=38; gotoxy(35,8);printf("²MATRIZ DE POSICIONES PARES²"); for(i=1;i<=cotvector;i++) { gotoxy(col,fila);printf("%d",vector[i]); fila=fila+1; col=38; } } void main () INICIO DEL PROGRAMA Y { DEL DO do { clrscr(); borde(); textcolor(7); gotoxy(10,2);printf(" ***PROGRAMA PARA ENCONTRAR LAS POSICIONES PARES DE UNA MATRIZ* **"); gotoxy(22,4);printf("Ingresar el limite = ");scanf("%d",&limt); gotoxy(22,6);printf("Ingresar el factor = ");scanf("%d",&fact); ingresar(limt,fact); impresion(limt); gotoxy(30,23);printf("² Desea continuar [1] o [0] para finalizar ² = ");scanf("%d",&op); } while(op==1); CIERRE DEL LAZO DO
getch(); } VIVIANA CAMINO
70
FUNCION DE LA IMPRESIÓN
ANÁLISIS Para este programa debemos declarar las 2 librerías principales como son;#include <conio.h>,#include<stdio.h> luego iniciamos el programa con declaración de la variables que vayamos a utilizar pueden ser globales, luego hacemos para iniciar el programa con una estructura de control para realizar el margen, luego debemos declara el posicionamiento de filas y columnas, después declaramos una estructura para poder ingresar los datos de una matriz, una ves realizado la entrada de la matriz debemos realizar la entrada principal para utilizar la serie del Fibonacci y el factorial, una vez realizado esta estructura debemos guardarlos en un vector para poder visualizar el factorial y el fibonacci luego, debemos iniciar con el programa principal con void main ( ),luego declaramos variables que sean necesarias utilizando una definición global en este caso el int, ya que nos permite ingresar números enteros, después abrimos un lazo do, que es una Instrucción repetitiva ….mientras la condición sea verdadera, hacemos un blanqueado de pantalla, y realizamos una estructura para poder visualizar cuantas filas y columnas vamos a utilizar, luego abrimos un lazo for el cual nos permite hacer un control, para poder entrar al programa debemos declarar “printf”; para la salida de datos y “scanf”, para tener una posición en la pantalla debemos utilizar la instrucción gotoxy(col,fila), utilizamos el while para serrar la condición del do, y finalmente realizamos un mensaje que diga continuar presione 1 y para finalizar presione 0 cerramos el lazo for para que se repita las veces que sea necesario si deseamos debemos controlar para que el Fibonacci baya controlado de tatal numero al que desea
CORRIDO
VIVIANA CAMINO
71
BIBLIOGRAFIA
http://lenguajecmasmas.wordpress.com/2007/10/01/arreglos-bidimensionalesmatrices/
http://www.gayatlacomulco.com/tutorials/progorientobjetos/t11.htm http://www.atc.us.es/asignaturas/fi/curso_de_c/Array_bidimensional_o_matriz.ht ml
VIVIANA CAMINO
72