ELEMENTO1Y2

Page 1

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Ă“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Ă“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


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.