diff --git "a/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/.vs/ADA4_ANGEL_GONZALEZ/v16/.suo" "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/.vs/ADA4_ANGEL_GONZALEZ/v16/.suo"
new file mode 100644
index 0000000..6d16fbd
Binary files /dev/null and "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/.vs/ADA4_ANGEL_GONZALEZ/v16/.suo" differ
diff --git "a/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/.vs/ProjectSettings.json" "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/.vs/ProjectSettings.json"
new file mode 100644
index 0000000..f8b4888
--- /dev/null
+++ "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/.vs/ProjectSettings.json"
@@ -0,0 +1,3 @@
+{
+ "CurrentProjectSetting": null
+}
\ No newline at end of file
diff --git "a/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/.vs/VSWorkspaceState.json" "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/.vs/VSWorkspaceState.json"
new file mode 100644
index 0000000..2fb9e9c
--- /dev/null
+++ "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/.vs/VSWorkspaceState.json"
@@ -0,0 +1,7 @@
+{
+ "ExpandedNodes": [
+ ""
+ ],
+ "SelectedNode": "\\ejemplo1.cs",
+ "PreviewInSolutionExplorer": false
+}
\ No newline at end of file
diff --git "a/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/.vs/slnx.sqlite" "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/.vs/slnx.sqlite"
new file mode 100644
index 0000000..d61ec95
Binary files /dev/null and "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/.vs/slnx.sqlite" differ
diff --git "a/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/ejercicio26 de Marzo/Ejercicio 26 de Marzo.cs" "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/ejercicio26 de Marzo/Ejercicio 26 de Marzo.cs"
new file mode 100644
index 0000000..59c719e
--- /dev/null
+++ "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/ejercicio26 de Marzo/Ejercicio 26 de Marzo.cs"
@@ -0,0 +1,153 @@
+//Elaborado por: Ángel González
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace ejemplo1
+{
+ /*
+ ///
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///sirve para elegir la funcion a representar por el sistema
+ ///
+ static void elegirFuncion(int[,] funcion)
+ {
+ //lineas de escritura para solicitar que funcion se desea obtener
+ Console.WriteLine("Elige que función deseas obtener:");
+ Console.WriteLine("Opción 1: Matriz de las secciones 2-4");
+ Console.WriteLine("Opción 2: Matriz de las secciones 1-3");
+ //definicion de la variable opcion, la cual servira para definir la funcion a representar
+ int opcion=int.Parse(Console.ReadLine());
+ //condicional switch que sirve para elegir entre los casos de la funcion a representar
+ switch(opcion)
+ {
+ //el caso 1 hace un pase por referencia a la funcion recorrerMatriz2_4
+ case 1:
+ recorrerMatriz2_4(funcion);
+ break;
+ //el caso 2 hace un pase por referencia a la funcion recorrerMatriz1_3
+ case 2:
+ recorrerMatriz1_3(funcion);
+ break;
+ //en caso de que la variable opcion no sea ninguno de los casos posibles, se volvera a solicitar mediante un mensaje de error
+ default:
+ Console.WriteLine("Porfavor ingrese una opción valida");
+ break;
+ }
+ }
+ ///
+ ///representa la funcion del caso 1 recorrerMatriz2_4
+ ///
+ static void recorrerMatriz2_4(int[,] rango)
+ {
+ //se define N como uno de los parametros de la matriz, en este caso N representa 3
+ //se define a una variable auxiliar que ayudara con la representacion de la función después
+ int N=rango.GetLength(0), aux;
+ //ciclo for que lee las filas de la matriz para el caso 1
+ for(int fil=0; fil=(N-1) && fil>=col)
+ {
+ //se imprime la posicion solicitada de la matriz mediante un Write
+ Console.Write(" " + rango[fil,col]);
+ }
+ //el condicional else se usa para ayudar a la representación grafica de la matriz
+ else
+ {
+ //se imprime un Write vacion para ayudar a la representación grafica de la matriz
+ Console.Write(" ");
+ }
+ }
+ //se imprime un WriteLine vacio para generar un espaciado entre lineas
+ Console.WriteLine(" ");
+ }
+ }
+ ///
+ ///representa la funcion del caso 2 recorrerMatriz1_3
+ ///
+ static void recorrerMatriz1_3(int[,] rango)
+ {
+ //se define N como uno de los parametros de la matriz, en este caso N representa 3
+ //se define a una variable auxiliar que ayudara con la representacion de la función después
+ int N=rango.GetLength(0), aux;
+ //ciclo for que lee las filas de la matriz para el caso 2
+ for(int fil=0; fil=col && aux<=(N-1))
+ {
+ //se imprime la posicion solicitada de la matriz mediante un Write
+ Console.Write(" " + rango[fil,col]);
+ }
+ //el condicional else se usa para ayudar a la representación grafica de la matriz
+ else if(aux>=(N-1) && fil<=col)
+ {
+ //se imprime la posicion solicitada de la matriz mediante un Write
+ Console.Write(" " + rango[fil,col]);
+ }
+ //el condicional else se usa para ayudar a la representación grafica de la matriz
+ else
+ {
+ //se imprime un Write vacion para ayudar a la representación grafica de la matriz
+ Console.Write(" ");
+ }
+ }
+ //se imprime un WriteLine vacio para generar un espaciado entre lineas
+ Console.WriteLine(" ");
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git "a/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/readme.txt" "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/readme.txt"
new file mode 100644
index 0000000..6b20616
--- /dev/null
+++ "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/readme.txt"
@@ -0,0 +1,2 @@
+los archivos que tiene en el titulos las siglas RG despues del nombre de la funcion, son aquellas que tienen una representación grafica al ejecutarse
+mientras que los que no lo tienen son lo que unicamente representan los numeros solictados por la funcion de manera lineal.
\ No newline at end of file
diff --git "a/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerDiagonalInvertida_RG_\303\201ngel_Gonz\303\241lez.cs" "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerDiagonalInvertida_RG_\303\201ngel_Gonz\303\241lez.cs"
new file mode 100644
index 0000000..b940fe8
--- /dev/null
+++ "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerDiagonalInvertida_RG_\303\201ngel_Gonz\303\241lez.cs"
@@ -0,0 +1,59 @@
+//Elaborado por: Ángel González
+using System;
+
+namespace ejemplo1
+{
+ /*
+ ///
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera la diagonal invertida o secundaria de la matriz y la imprimira
+ ///
+ static void recorrerDiagonalInvertida(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ int N=rango.GetLength(1);
+ //ciclo for que lee las filas de manera identica inversa de la matriz
+ //al ser identicas inversa solo se toma en cuenta la diagonals inversa o secundaria
+ for(int fil=0; fil
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera la diagonal invertida o secundaria de la matriz y la imprimira
+ ///
+ static void recorrerDiagonalInvertida(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ int N=rango.GetLength(1);
+ //ciclo for que lee las filas de manera identica inversa de la matriz
+ //al ser identicas inversa solo se toma en cuenta la diagonals inversa o secundaria
+ for(int fil=0; fil
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera la diagonal principal de la matriz y la imprimira
+ ///
+ static void recorrerDiagonalPrincipal(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ int N=rango.GetLength(1);
+ //ciclo for que lee las filas de la matriz de manera identica
+ //al ser identicas filas y columnas solo se toma en cuenta la diagonal principal
+ for(int fil=0; fil
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera la diagonal principal de la matriz y la imprimira
+ ///
+ static void recorrerDiagonalPrincipal(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ int N=rango.GetLength(1);
+ //ciclo for que lee las filas de la matriz de manera identica
+ //al ser identicas filas y columnas solo se toma en cuenta la diagonal principal
+ for(int fil=0; fil
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera el area 1 de manera ascendente y generara una matriz impresa
+ ///
+ static void recorrerMatriz1Ascendente(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ int N=rango.GetLength(1);
+ //ciclo for que lee las filas de la matriz
+ for(int fil=0; fil=col)
+ {
+ //se imprime la posicion de la matriz mediante Write en un string
+ Console.Write(" " + rango[fil,col]);
+ }
+ }
+ //se genera un espaciado entre lineas mediante un WriteLine vacio
+ Console.WriteLine();
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git "a/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz1Ascendente_\303\201ngel_Gonz\303\241lez.cs" "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz1Ascendente_\303\201ngel_Gonz\303\241lez.cs"
new file mode 100644
index 0000000..bcb667a
--- /dev/null
+++ "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz1Ascendente_\303\201ngel_Gonz\303\241lez.cs"
@@ -0,0 +1,66 @@
+//Elaborado por: Ángel González
+using System;
+
+namespace ejemplo1
+{
+ /*
+ ///
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera el area 1 de manera ascendente y generara una matriz impresa
+ ///
+ static void recorrerMatriz1Ascendente(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ int N=rango.GetLength(1);
+ //ciclo for que lee las filas de la matriz
+ for(int fil=0; fil=col)
+ {
+ //se imprime la posicion de la matriz mediante Write en un string
+ Console.Write(rango[fil,col]);
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git "a/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz1Descendente_RG_\303\201ngel_Gonz\303\241lez.cs" "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz1Descendente_RG_\303\201ngel_Gonz\303\241lez.cs"
new file mode 100644
index 0000000..6c6ca67
--- /dev/null
+++ "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz1Descendente_RG_\303\201ngel_Gonz\303\241lez.cs"
@@ -0,0 +1,68 @@
+//Elaborado por: Ángel González
+using System;
+
+namespace ejemplo1
+{
+ /*
+ ///
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera el area 1 de manera descendente y generara una matriz impresa
+ ///
+ static void recorrerMatriz1Descendente(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ int N=rango.GetLength(1);
+ //ciclo for que lee de manera invertida las filas de la matriz
+ for(int fil=(N-1); fil>=0; fil--)
+ {
+ //ciclo for que lee las columnas de la matriz
+ for(int col=0; col<=(N-fil-1); col++)
+ {
+ //se utiliza un if que regula el arreglo deseado para la matriz
+ if(fil>=col)
+ {
+ //se imprime la posicion de la matriz mediante Write en un string
+ Console.Write(" " + rango[fil,col]);
+ }
+ }
+ //se genera un espaciado entre lineas mediante un WriteLine vacio
+ Console.WriteLine();
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git "a/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz1Descendente_\303\201ngel_Gonz\303\241lez.cs" "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz1Descendente_\303\201ngel_Gonz\303\241lez.cs"
new file mode 100644
index 0000000..026d836
--- /dev/null
+++ "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz1Descendente_\303\201ngel_Gonz\303\241lez.cs"
@@ -0,0 +1,66 @@
+//Elaborado por: Ángel González
+using System;
+
+namespace ejemplo1
+{
+ /*
+ ///
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera el area 1 de manera descendente y generara una matriz impresa
+ ///
+ static void recorrerMatriz1Descendente(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ int N=rango.GetLength(1);
+ //ciclo for que lee de manera invertida las filas de la matriz
+ for(int fil=(N-1); fil>=0; fil--)
+ {
+ //ciclo for que lee las columnas de la matriz
+ for(int col=0; col<=(N-fil-1); col++)
+ {
+ //se utiliza un if que regula el arreglo deseado para la matriz
+ if(fil>=col)
+ {
+ //se imprime la posicion de la matriz mediante Write en un string
+ Console.Write(rango[fil,col]);
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git "a/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz1_2Ascendente_RG_\303\201ngel_Gonz\303\241lez.cs" "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz1_2Ascendente_RG_\303\201ngel_Gonz\303\241lez.cs"
new file mode 100644
index 0000000..f885b4f
--- /dev/null
+++ "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz1_2Ascendente_RG_\303\201ngel_Gonz\303\241lez.cs"
@@ -0,0 +1,67 @@
+//Elaborado por: Ángel González
+using System;
+
+namespace ejemplo1
+{
+ /*
+ ///
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera las areas 1 y 2 de manera ascendente y generara una matriz impresa
+ ///
+ static void recorrerMatriz1_2Ascendente(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ int N=rango.GetLength(1);
+ //ciclo for que lee las filas de la matriz
+ for(int fil=0; fil
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera las areas 1 y 2 de manera ascendente y generara una matriz impresa
+ ///
+ static void recorrerMatriz1_2Ascendente(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ int N=rango.GetLength(1);
+ //ciclo for que lee las filas de la matriz
+ for(int fil=0; fil
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera las areas 1 y 2 de manera descendente y generara una matriz impresa
+ ///
+ static void recorrerMatriz1_2Descendente(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ int N=rango.GetLength(0);
+ //ciclo for que lee las filas de la matriz de manera inversa
+ for(int fil=(N-1); fil>=0; fil--)
+ {
+ //ciclo for que lee las columnas de la matriz
+ //al restarle la cantidad de filas a N se genera el arreglo deseado para la matriz
+ for(int col=0; col<(N-fil); col++)
+ {
+ //se imprime la posicion de la matriz mediante Write en un string
+ Console.Write(" " + rango[fil,col]);
+ }
+ //se genera un espaciado entre lineas mediante un WriteLine vacio
+ Console.WriteLine();
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git "a/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz1_2Descendente_\303\201ngel_Gonz\303\241lez.cs" "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz1_2Descendente_\303\201ngel_Gonz\303\241lez.cs"
new file mode 100644
index 0000000..f3b76f1
--- /dev/null
+++ "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz1_2Descendente_\303\201ngel_Gonz\303\241lez.cs"
@@ -0,0 +1,62 @@
+//Elaborado por: Ángel González
+using System;
+
+namespace ejemplo1
+{
+ /*
+ ///
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera las areas 1 y 2 de manera descendente y generara una matriz impresa
+ ///
+ static void recorrerMatriz1_2Descendente(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ int N=rango.GetLength(0);
+ //ciclo for que lee las filas de la matriz de manera inversa
+ for(int fil=(N-1); fil>=0; fil--)
+ {
+ //ciclo for que lee las columnas de la matriz
+ //al restarle la cantidad de filas a N se genera el arreglo deseado para la matriz
+ for(int col=0; col<(N-fil); col++)
+ {
+ Console.Write(rango[fil,col]);
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git "a/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz1_4Ascendente_RG_\303\201ngel_Gonz\303\241lez.cs" "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz1_4Ascendente_RG_\303\201ngel_Gonz\303\241lez.cs"
new file mode 100644
index 0000000..afe209d
--- /dev/null
+++ "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz1_4Ascendente_RG_\303\201ngel_Gonz\303\241lez.cs"
@@ -0,0 +1,65 @@
+//Elaborado por: Ángel González
+using System;
+
+namespace ejemplo1
+{
+ /*
+ ///
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera las areas 1 y 4 de manera ascendente y generara una matriz impresa
+ ///
+ static void recorrerMatriz1_4Ascendente(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ int N=rango.GetLength(1);
+ //ciclo for que lee las filas de la matriz
+ for(int fil=0; fil
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera las areas 1 y 4 de manera ascendente y generara una matriz impresa
+ ///
+ static void recorrerMatriz1_4Ascendente(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ int N=rango.GetLength(1);
+ //ciclo for que lee las filas de la matriz
+ for(int fil=0; fil
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera las areas 1 y 4 de manera descendente y generara una matriz impresa
+ ///
+ static void recorrerMatriz1_4Descendente(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ int N=rango.GetLength(1);
+ //ciclo for que lee las filas de la matriz de manera invertida
+ for(int fil=N-1; fil>=0; fil--)
+ {
+ //ciclo for que lee las columnas de la matriz
+ //al sumarle 1 a el numero de filas se genera el arreglo deseado para la matriz
+ for(int col=0; col
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera las areas 1 y 4 de manera descendente y generara una matriz impresa
+ ///
+ static void recorrerMatriz1_4Descendente(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ int N=rango.GetLength(1);
+ //ciclo for que lee las filas de la matriz de manera invertida
+ for(int fil=N-1; fil>=0; fil--)
+ {
+ //ciclo for que lee las columnas de la matriz
+ //al sumarle 1 a el numero de filas se genera el arreglo deseado para la matriz
+ for(int col=0; col
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera el area 2 manera ascendente y generara una matriz impresa
+ ///
+ static void recorrerMatriz2Ascendente(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ int N=rango.GetLength(0);
+ //ciclo for que lee las filas de la matriz
+ for(int fil=0; fil<(N-1); fil++)
+ {
+ //ciclo for que lee las columnas de la matriz
+ for(int col=0; col<=(N-fil-1); col++)
+ {
+ //se utiliza un if que regula el arreglo deseado para la matriz
+ if(fil<=col)
+ {
+ //se imprime la posicion de la matriz mediante Write en un string
+ Console.Write(" " + rango[fil,col]);
+ }
+ //el else se utiliza para acomodar adecuadamente la representacion grafica de la matriz
+ else
+ {
+ //espaciado que ayuda a la representacion grafica
+ Console.Write(" ");
+ }
+ }
+ //se genera un espaciado entre lineas mediante un WriteLine vacio
+ Console.WriteLine();
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git "a/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz2Ascendete_\303\201ngel_Gonz\303\241lez.cs" "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz2Ascendete_\303\201ngel_Gonz\303\241lez.cs"
new file mode 100644
index 0000000..d4872e2
--- /dev/null
+++ "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz2Ascendete_\303\201ngel_Gonz\303\241lez.cs"
@@ -0,0 +1,66 @@
+//Elaborado por: Ángel González
+using System;
+
+namespace ejemplo1
+{
+ /*
+ ///
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera el area 2 manera ascendente y generara una matriz impresa
+ ///
+ static void recorrerMatriz2Ascendente(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ int N=rango.GetLength(0);
+ //ciclo for que lee las filas de la matriz
+ for(int fil=0; fil<(N-1); fil++)
+ {
+ //ciclo for que lee las columnas de la matriz
+ for(int col=0; col<=(N-fil-1); col++)
+ {
+ //se utiliza un if que regula el arreglo deseado para la matriz
+ if(fil<=col)
+ {
+ //se imprime la posicion de la matriz mediante Write en un string
+ Console.Write(rango[fil,col]);
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git "a/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz2Descendente_RG_\303\201ngel_Gonz\303\241lez.cs" "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz2Descendente_RG_\303\201ngel_Gonz\303\241lez.cs"
new file mode 100644
index 0000000..a0ef427
--- /dev/null
+++ "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz2Descendente_RG_\303\201ngel_Gonz\303\241lez.cs"
@@ -0,0 +1,74 @@
+//Elaborado por: Ángel González
+using System;
+
+namespace ejemplo1
+{
+ /*
+ ///
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera el area 2 de manera descendente y generara una matriz impresa
+ ///
+ static void recorrerMatriz2Descendente(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ int N=rango.GetLength(0);
+ //ciclo for que lee de manera invertida las filas de la matriz
+ for(int fil=(N-1)/2; fil>=0; fil--)
+ {
+ //ciclo for que lee las columnas de la matriz
+ for(int col=0; col<=(N-fil-1); col++)
+ {
+ //se utiliza un if que regula el arreglo deseado para la matriz
+ if(fil<=col)
+ {
+ //se imprime la posicion de la matriz mediante Write en un string
+ Console.Write(" " + rango[fil,col]);
+ }
+ //el else se utiliza para acomodar adecuadamente la representacion grafica de la matriz
+ else
+ {
+ //espaciado que ayuda a la representacion grafica
+ Console.Write(" ");
+ }
+ }
+ //se genera un espaciado entre lineas mediante un WriteLine vacio
+ Console.WriteLine();
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git "a/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz2Descendente_\303\201ngel_Gonz\303\241lez.cs" "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz2Descendente_\303\201ngel_Gonz\303\241lez.cs"
new file mode 100644
index 0000000..c289f86
--- /dev/null
+++ "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz2Descendente_\303\201ngel_Gonz\303\241lez.cs"
@@ -0,0 +1,66 @@
+//Elaborado por: Ángel González
+using System;
+
+namespace ejemplo1
+{
+ /*
+ ///
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera el area 2 de manera descendente y generara una matriz impresa
+ ///
+ static void recorrerMatriz2Descendente(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ int N=rango.GetLength(0);
+ //ciclo for que lee de manera invertida las filas de la matriz
+ for(int fil=(N-1)/2; fil>=0; fil--)
+ {
+ //ciclo for que lee las columnas de la matriz
+ for(int col=0; col<=(N-fil-1); col++)
+ {
+ //se utiliza un if que regula el arreglo deseado para la matriz
+ if(fil<=col)
+ {
+ //se imprime la posicion de la matriz mediante Write en un string
+ Console.Write(rango[fil,col]);
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git "a/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz2_3Ascendente_RG_\303\201ngel_Gonz\303\241lez.cs" "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz2_3Ascendente_RG_\303\201ngel_Gonz\303\241lez.cs"
new file mode 100644
index 0000000..7e9ea3f
--- /dev/null
+++ "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz2_3Ascendente_RG_\303\201ngel_Gonz\303\241lez.cs"
@@ -0,0 +1,65 @@
+//Elaborado por: Ángel González
+using System;
+
+namespace ejemplo1
+{
+ /*
+ ///
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera las areas 2 y 3 de manera ascendente y generara una matriz impresa
+ ///
+ static void recorrerMatriz2_3Ascendente(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ int N=rango.GetLength(0);
+ //ciclo for que lee las filas de la matriz
+ for(int fil=0; fil
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera las areas 2 y 3 de manera ascendente y generara una matriz impresa
+ ///
+ static void recorrerMatriz2_3Ascendente(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ int N=rango.GetLength(0);
+ //ciclo for que lee las filas de la matriz
+ for(int fil=0; fil
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera las areas 2 y 3 de manera ascendente y generara una matriz impresa
+ ///
+ static void recorrerMatriz2_3Descendente(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ int N=rango.GetLength(0);
+ //ciclo for que lee las filas de la matriz de manera invertida
+ for(int fil=N-1; fil>=0; fil--)
+ {
+ //ciclo for que leelas columnas de la matriz
+ //al igualar las columnas al numero de filas se genera el arreglo deseado para la matriz
+ for(int col=fil; col
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera las areas 2 y 3 de manera ascendente y generara una matriz impresa
+ ///
+ static void recorrerMatriz2_3Descendente(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ int N=rango.GetLength(0);
+ //ciclo for que lee las filas de la matriz de manera invertida
+ for(int fil=N-1; fil>=0; fil--)
+ {
+ //ciclo for que leelas columnas de la matriz
+ //al igualar las columnas al numero de filas se genera el arreglo deseado para la matriz
+ for(int col=fil; col
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera el area 3 de manera ascendente y generara una matriz impresa
+ ///
+ static void recorrerMatriz3Ascendente(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ //se define un auxiliar que se utilizara para la representacion grafica
+ int N=rango.GetLength(0), aux;
+ //ciclo for que lee las filas de la matriz
+ for(int fil=0; fil=(N-1))
+ {
+ //se imprime la posicion de la matriz mediante Write en un string
+ Console.Write(" " + rango[fil,col]);
+ }
+ //el ciclo else sirve para acomodar de manera adecuada la representacion grafica
+ else if(col>=(N-1)/2)
+ {
+ //espaciado que ayuda a la representacion grafica
+ Console.Write(" ");
+ }
+ }
+ //se genera un espaciado entre lineas mediante un WriteLine vacio
+ Console.WriteLine();
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git "a/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz3Ascendente_\303\201ngel_Gonz\303\241lez.cs" "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz3Ascendente_\303\201ngel_Gonz\303\241lez.cs"
new file mode 100644
index 0000000..5789032
--- /dev/null
+++ "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz3Ascendente_\303\201ngel_Gonz\303\241lez.cs"
@@ -0,0 +1,68 @@
+//Elaborado por: Ángel González
+using System;
+
+namespace ejemplo1
+{
+ /*
+ ///
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera el area 3 de manera ascendente y generara una matriz impresa
+ ///
+ static void recorrerMatriz3Ascendente(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ //se define un auxiliar que se utilizara para limitar la matriz
+ int N=rango.GetLength(0), aux;
+ //ciclo for que lee las filas de la matriz
+ for(int fil=0; fil=(N-1))
+ {
+ //se imprime la posicion de la matriz mediante Write en un string
+ Console.Write(rango[fil,col]);
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git "a/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz3Descendente_RG_\303\201ngel_Gonz\303\241lez.cs" "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz3Descendente_RG_\303\201ngel_Gonz\303\241lez.cs"
new file mode 100644
index 0000000..c0e26b1
--- /dev/null
+++ "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz3Descendente_RG_\303\201ngel_Gonz\303\241lez.cs"
@@ -0,0 +1,77 @@
+//Elaborado por: Ángel González
+using System;
+
+namespace ejemplo1
+{
+ /*
+ ///
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera el area 3 de manera ascendente y generara una matriz impresa
+ ///
+ static void recorrerMatriz3Ascendente(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ //se define un auxiliar que se utilizara para la representacion grafica
+ int N=rango.GetLength(0), aux;
+ //ciclo for que lee de manera invetida las filas de la matriz
+ for(int fil=(N-1); fil>=0; fil--)
+ {
+ //ciclo for que lee las columnas de la matriz
+ for(int col=0; col=(N-1))
+ {
+ //se imprime la posicion de la matriz mediante Write en un string
+ Console.Write(" " + rango[fil,col]);
+ }
+ //el ciclo else sirve para acomodar de manera adecuada la representacion grafica
+ else if(col<=(N-1)/2)
+ {
+ //espaciado que ayuda a la representacion grafica
+ Console.Write(" ");
+ }
+ }
+ //se genera un espaciado entre lineas mediante un WriteLine vacio
+ Console.WriteLine();
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git "a/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz3Descendente_\303\201ngel_Gonz\303\241lez.cs" "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz3Descendente_\303\201ngel_Gonz\303\241lez.cs"
new file mode 100644
index 0000000..aeb433e
--- /dev/null
+++ "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz3Descendente_\303\201ngel_Gonz\303\241lez.cs"
@@ -0,0 +1,69 @@
+//Elaborado por: Ángel González
+using System;
+
+namespace ejemplo1
+{
+ /*
+ ///
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera el area 3 de manera ascendente y generara una matriz impresa
+ ///
+ static void recorrerMatriz3Ascendente(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ //se define un auxiliar que se utilizara para limitar la matriz
+ int N=rango.GetLength(0), aux;
+ //ciclo for que lee de manera invetida las filas de la matriz
+ for(int fil=(N-1); fil>=0; fil--)
+ {
+ //ciclo for que lee las columnas de la matriz
+ for(int col=0; col=(N-1))
+ {
+ //se imprime la posicion de la matriz mediante Write en un string
+ Console.Write(rango[fil,col]);
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git "a/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz3_4Ascendente_RG_\303\201ngel_Gonz\303\241lez.cs" "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz3_4Ascendente_RG_\303\201ngel_Gonz\303\241lez.cs"
new file mode 100644
index 0000000..9056201
--- /dev/null
+++ "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz3_4Ascendente_RG_\303\201ngel_Gonz\303\241lez.cs"
@@ -0,0 +1,65 @@
+//Elaborado por: Ángel González
+using System;
+
+namespace ejemplo1
+{
+ /*
+ ///
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera las areas 3 y 4 de manera ascendente y generara una matriz impresa
+ ///
+ static void recorrerMatriz3_4Ascendente(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ int N=rango.GetLength(0);
+ //ciclo for que lee las filas de la matriz
+ for(int fil=0; fil
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera las areas 3 y 4 de manera ascendente y generara una matriz impresa
+ ///
+ static void recorrerMatriz3_4Ascendente(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ int N=rango.GetLength(0);
+ //ciclo for que lee las filas de la matriz
+ for(int fil=0; fil
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera las areas 3 y 4 de manera descendente y generara una matriz impresa
+ ///
+ static void recorrerMatriz3_4Descendente(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ int N=rango.GetLength(0);
+ //ciclo for que lee las filas de la matriz de manera invertida
+ for(int fil=N-1; fil>=0; fil--)
+ {
+ //ciclo for que lee las columnas de la matriz
+ //al restarle el numero de filas mas 1 a N se genera el arreglo deseado para la matriz
+ for(int col=(N-fil-1); col
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera las areas 3 y 4 de manera descendente y generara una matriz impresa
+ ///
+ static void recorrerMatriz3_4Descendente(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ int N=rango.GetLength(0);
+ //ciclo for que lee las filas de la matriz de manera invertida
+ for(int fil=N-1; fil>=0; fil--)
+ {
+ //ciclo for que lee las columnas de la matriz
+ //al restarle el numero de filas mas 1 a N se genera el arreglo deseado para la matriz
+ for(int col=(N-fil-1); col
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera el area 4 de manera ascendente y generara una matriz impresa
+ ///
+ static void recorrerMatriz4Ascendente(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ //se define un auxiliar que se utilizara para la representacion grafica
+ int N=rango.GetLength(1), aux;
+ //ciclo for que lee las filas de la matriz
+ for(int fil=(N-1)/2; fil<=(N-1); fil++)
+ {
+ //ciclo for que lee las columnas de la matriz
+ for(int col=0; col(N-1)/2 )
+ {
+ //se imprime la posicion de la matriz mediante Write en un string
+ Console.Write(" " + rango[fil,col]);
+ }
+ //el ciclo else sirve para acomodar de manera adecuada la representacion grafica
+ else
+ {
+ //espaciado que ayuda a la representacion grafica
+ Console.Write(" ");
+ }
+ }
+ //se genera un espaciado entre lineas mediante un WriteLine vacio
+ Console.WriteLine();
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git "a/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz4Ascendente_\303\201ngel_Gonz\303\241lez.cs" "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz4Ascendente_\303\201ngel_Gonz\303\241lez.cs"
new file mode 100644
index 0000000..eae00d9
--- /dev/null
+++ "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz4Ascendente_\303\201ngel_Gonz\303\241lez.cs"
@@ -0,0 +1,69 @@
+//Elaborado por: Ángel González
+using System;
+
+namespace ejemplo1
+{
+ /*
+ ///
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera el area 4 de manera ascendente y generara una matriz impresa
+ ///
+ static void recorrerMatriz4Ascendente(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ //se define un auxiliar que se utilizara para limitar la matriz
+ int N=rango.GetLength(1), aux;
+ //ciclo for que lee las filas de la matriz
+ for(int fil=(N-1)/2; fil<=(N-1); fil++)
+ {
+ //ciclo for que lee las columnas de la matriz
+ for(int col=0; col(N-1)/2 )
+ {
+ //se imprime la posicion de la matriz mediante Write en un string
+ Console.Write(rango[fil,col]);
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git "a/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz4Descendente_RG_\303\201ngel_Gonz\303\241lez.cs" "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz4Descendente_RG_\303\201ngel_Gonz\303\241lez.cs"
new file mode 100644
index 0000000..589a3d6
--- /dev/null
+++ "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz4Descendente_RG_\303\201ngel_Gonz\303\241lez.cs"
@@ -0,0 +1,77 @@
+//Elaborado por: Ángel González
+using System;
+
+namespace ejemplo1
+{
+ /*
+ ///
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera el area 4 de manera ascendente y generara una matriz impresa
+ ///
+ static void recorrerMatriz4Ascendente(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ //se define un auxiliar que se utilizara para la representacion grafica
+ int N=rango.GetLength(1), aux;
+ //ciclo for que lee de manera invertida las filas de la matriz
+ for(int fil=(N-1); fil>=(N-1)/2; fil--)
+ {
+ //ciclo for que lee las columnas de la matriz
+ for(int col=0; col(N-1)/2 )
+ {
+ //se imprime la posicion de la matriz mediante Write en un string
+ Console.Write(" " + rango[fil,col]);
+ }
+ //el ciclo else sirve para acomodar de manera adecuada la representacion grafica
+ else
+ {
+ //espaciado que ayuda a la representacion grafica
+ Console.Write(" ");
+ }
+ }
+ //se genera un espaciado entre lineas mediante un WriteLine vacio
+ Console.WriteLine();
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git "a/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz4Descendente_\303\201ngel_Gonz\303\241lez.cs" "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz4Descendente_\303\201ngel_Gonz\303\241lez.cs"
new file mode 100644
index 0000000..46e3fa8
--- /dev/null
+++ "b/ADAs/Angel Gonz\303\241lez/ADA4_ANGEL_GONZALEZ/recorrerMatriz4Descendente_\303\201ngel_Gonz\303\241lez.cs"
@@ -0,0 +1,69 @@
+//Elaborado por: Ángel González
+using System;
+
+namespace ejemplo1
+{
+ /*
+ ///
+ ///La clase program denota el tipo de proyecto en el que se trabaja
+ ///en este caso, un programa
+ ///
+ */
+ class program
+ {
+ //sirve como base para el pase por valor de la matriz
+ static void Main(string[] args)
+ {
+ //el int Matriz representa el tamaño total de la matriz a crear
+ int[,] Matriz = new int [3,3];
+ //pase por valor hacia la funcion asignaciodeMatriz
+ asginaciondeMatriz (Matriz);
+ }
+ ///
+ ///sirve para asignar los valores que tendra cada posicion de la matriz
+ ///
+ static void asginaciondeMatriz(int[,] matr)
+ {
+ //num nos servira como la base de la asignacion de valores
+ int num=1;
+ //ciclo for que lee las filas
+ for(int f=0; f
+ ///la funcion leera el area 4 de manera ascendente y generara una matriz impresa
+ ///
+ static void recorrerMatriz4Ascendente(int[,] rango)
+ {
+ //se define una constante N en base a la longitud de uno de los parametros de la matriz
+ //se define un auxiliar que se utilizara para limitar la matriz
+ int N=rango.GetLength(1), aux;
+ //ciclo for que lee de manera invertida las filas de la matriz
+ for(int fil=(N-1); fil>=(N-1)/2; fil--)
+ {
+ //ciclo for que lee las columnas de la matriz
+ for(int col=0; col(N-1)/2 )
+ {
+ //se imprime la posicion de la matriz mediante Write en un string
+ Console.Write(rango[fil,col]);
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git "a/ADAs/Angel Gonz\303\241lez/ADA6_ANGEL_GONZALEZ/ADA6_Lista_Angel_Gonz\303\241lez.c" "b/ADAs/Angel Gonz\303\241lez/ADA6_ANGEL_GONZALEZ/ADA6_Lista_Angel_Gonz\303\241lez.c"
new file mode 100644
index 0000000..39f49bd
--- /dev/null
+++ "b/ADAs/Angel Gonz\303\241lez/ADA6_ANGEL_GONZALEZ/ADA6_Lista_Angel_Gonz\303\241lez.c"
@@ -0,0 +1,129 @@
+#include
+#include
+#include
+
+typedef struct Mascota
+{
+ int edad;
+ struct Mascota* siguiente;
+}Mascota;
+typedef Mascota *MascotaPtr;
+
+void insertarOrdenado(MascotaPtr*, int);
+MascotaPtr borrar(MascotaPtr, int);
+void imprimirLista(MascotaPtr);
+void menu();
+
+int main()
+{
+ MascotaPtr lista=NULL;
+ int _edad, opcion;
+ bool auxiliar=false;
+
+ do
+ {
+ menu();
+ scanf("%d", &opcion);
+
+ switch(opcion)
+ {
+ case 1:
+ scanf("%d", &_edad);
+ insertarOrdenado(&lista, _edad);
+ break;
+ case 2:
+ scanf("%d", &_edad);
+ lista = borrar(lista, _edad);
+ break;
+ case 3:
+ imprimirLista(lista);
+ break;
+ default:
+ auxiliar=true;
+ break;
+ }
+ } while(auxiliar==false);
+ return 0;
+}
+
+void menu()
+{
+ printf("Bienvenido al menu de opciones, porfavor elige una de acuerdo al numero en pantalla\n");
+ printf("1.\n Insertar un elemento en la lista\n");
+ printf("2.\n Borrar un elemento de la lista\n");
+ printf("3.\n Imprimir todos los elementos de la lista\n");
+ printf("En caso de desear cerrar el programa, porfavor pulse cualquier otro boton\n");
+}
+
+void insertarOrdenado(MascotaPtr *nPtr, int val)
+{
+ MascotaPtr nuevo;
+ MascotaPtr anterior;
+ MascotaPtr actual;
+
+ nuevo = (Mascota*)malloc(sizeof(Mascota));
+ if (nuevo!=NULL)
+ {
+ nuevo->edad=val;
+ nuevo->siguiente=NULL;
+
+ anterior=NULL;
+ actual=*nPtr;
+
+ while(actual!=NULL && val>actual->edad)
+ {
+ anterior=actual;
+ actual=actual->siguiente;
+ }
+ if(anterior==NULL)
+ {
+ nuevo->siguiente=*nPtr;
+ *nPtr=nuevo;
+ }
+ else
+ {
+ anterior->siguiente=nuevo;
+ nuevo->siguiente=actual;
+ }
+ }
+ else
+ {
+ printf("lo siento, no se encontro el elemento deseado\n");
+ }
+}
+
+MascotaPtr borrar(MascotaPtr actual, int val)
+{
+ MascotaPtr opborrar=NULL;
+ if(actual=NULL)
+ {
+ if(actual->edad==val)
+ {
+ opborrar=actual;
+ actual=actual->siguiente;
+ free(opborrar);
+ }
+ else
+ {
+ actual->siguiente=borrar(actual->siguiente, val);
+ }
+ }
+ return actual;
+}
+
+void imprimirLista(MascotaPtr actual)
+{
+ if(actual==NULL)
+ {
+ printf("Lo sentimos, no existe ningun elemento\n");
+ }
+ else
+ {
+ printf("Lista de elementos:\n");
+ while (actual!=NULL)
+ {
+ printf("%d\n",actual->edad);
+ actual=actual->siguiente;
+ }
+ }
+}
\ No newline at end of file
diff --git "a/ADAs/Angel Gonz\303\241lez/ADA6_ANGEL_GONZALEZ/ADA6_Lista_Angel_Gonz\303\241lez.exe" "b/ADAs/Angel Gonz\303\241lez/ADA6_ANGEL_GONZALEZ/ADA6_Lista_Angel_Gonz\303\241lez.exe"
new file mode 100644
index 0000000..3a6d5a5
Binary files /dev/null and "b/ADAs/Angel Gonz\303\241lez/ADA6_ANGEL_GONZALEZ/ADA6_Lista_Angel_Gonz\303\241lez.exe" differ
diff --git "a/ADAs/Angel Gonz\303\241lez/ADA6_ANGEL_GONZALEZ/ADA6_Racionales.c" "b/ADAs/Angel Gonz\303\241lez/ADA6_ANGEL_GONZALEZ/ADA6_Racionales.c"
new file mode 100644
index 0000000..9388e06
--- /dev/null
+++ "b/ADAs/Angel Gonz\303\241lez/ADA6_ANGEL_GONZALEZ/ADA6_Racionales.c"
@@ -0,0 +1,163 @@
+#include
+
+typedef struct racional{
+ int numerador;
+ int denominador;
+}racional;
+
+void leerRacional(racional *, racional *);
+racional sumarRacional(racional, racional );
+racional restarRacional(racional, racional );
+racional multiplicarRacional(racional, racional);
+racional dividirRacional(racional, racional);
+void simplificarRacional(racional *);
+void imprimirRacional(racional, racional, racional, racional);
+
+int main()
+{
+ racional r1, r2, r3, r4, r5, r6;
+
+ leerRacional(&r1, &r2);
+ r3 = sumarRacional(r1, r2);
+ r4 = restarRacional(r1, r2);
+ r5 = multiplicarRacional(r1, r2);
+ r6 = dividirRacional(r1, r2);
+ imprimirRacional(r3, r4, r5, r6);
+
+ return 0;
+}
+
+void leerRacional(racional *r1, racional *r2)
+{
+ int numerador1, denominador1, numerador2, denominador2;
+ scanf("%d", &numerador1);
+ scanf("%d", &denominador1);
+ scanf("%d", &numerador2);
+ scanf("%d", &denominador2);
+
+ r1->numerador=numerador1;
+ r1->denominador=denominador1;
+ r2->numerador=numerador2;
+ r2->denominador=denominador2;
+
+}
+
+racional sumarRacional(racional r1, racional r2)
+{
+ racional resultados;
+ int numerador, denominador;
+
+ if(r1.denominador != r2.denominador)
+ {
+ numerador=(r1.numerador*r2.denominador)+(r2.numerador*r1.denominador);
+ denominador=(r1.denominador*r2.denominador);
+ }
+ else
+ {
+ numerador=r1.numerador + r2.numerador;
+ denominador=r1.denominador;
+ }
+ resultados.numerador=numerador;
+ resultados.denominador=denominador;
+
+ simplificarRacional(&resultados);
+ return resultados;
+}
+
+racional restarRacional(racional r1, racional r2)
+{
+ racional resultados;
+ int numerador, denominador, num1, num2;
+
+ if(r1.denominador != r2.denominador)
+ {
+ num1=(r1.numerador*r2.denominador);
+ num2=(r2.numerador*r1.denominador);
+
+ numerador=num1-num2;
+ denominador=(r1.denominador*r2.denominador);
+ }
+ else
+ {
+
+ numerador=r1.numerador-r2.numerador;
+ denominador=r1.denominador;
+ }
+ resultados.numerador=numerador;
+ resultados.denominador=denominador;
+
+ simplificarRacional(&resultados);
+ return resultados;
+}
+
+racional multiplicarRacional(racional r1, racional r2)
+{
+ racional resultados;
+ int numerador, denominador;
+
+ numerador = r1.numerador*r2.numerador;
+ denominador = r1.denominador*r2.denominador;
+
+ resultados.numerador=numerador;
+ resultados.denominador=denominador;
+
+ simplificarRacional(&resultados);
+
+ return resultados;
+}
+
+racional dividirRacional(racional r1, racional r2)
+{
+ racional resultados;
+ int numerador, denominador;
+
+ numerador = r1.numerador*r2.denominador;
+ denominador = r1.denominador*r2.numerador;
+
+ resultados.numerador=numerador;
+ resultados.denominador=denominador;
+
+ simplificarRacional(&resultados);
+
+ return resultados;
+}
+
+void simplificarRacional(racional *r1)
+{
+ int aux1=0, aux2=2;
+
+ if(r1->numerador<0)
+ {
+ r1->numerador = r1->numerador*(-1);
+ aux1++;
+ }
+ if(r1->denominador<0)
+ {
+ r1->denominador = r1->denominador*(-1);
+ aux1++;
+ }
+ while (aux2<=r1->numerador && aux2<=r1->denominador)
+ {
+ if (r1->numerador%aux2==0 && r1->denominador%aux2==0)
+ {
+ r1->numerador=r1->numerador/aux2;
+ r1->denominador=r1->denominador/aux2;
+ }
+ else
+ {
+ aux2++;
+ }
+ }
+ if(aux1==1)
+ {
+ r1->numerador=r1->numerador*(-1);
+ }
+}
+
+void imprimirRacional(racional r3, racional r4, racional r5, racional r6)
+{
+ printf("%d/%d \n", r3.numerador, r3.denominador);
+ printf("%d/%d \n", r4.numerador, r4.denominador);
+ printf("%d/%d \n", r5.numerador, r5.denominador);
+ printf("%d/%d \n", r6.numerador, r6.denominador);
+}
\ No newline at end of file
diff --git "a/ADAs/Angel Gonz\303\241lez/ADA6_ANGEL_GONZALEZ/ADA6_Racionales.exe" "b/ADAs/Angel Gonz\303\241lez/ADA6_ANGEL_GONZALEZ/ADA6_Racionales.exe"
new file mode 100644
index 0000000..ec117c5
Binary files /dev/null and "b/ADAs/Angel Gonz\303\241lez/ADA6_ANGEL_GONZALEZ/ADA6_Racionales.exe" differ
diff --git "a/ADAs/Angel Gonz\303\241lez/ADA6_ANGEL_GONZALEZ/ADA6_Sudoku.c" "b/ADAs/Angel Gonz\303\241lez/ADA6_ANGEL_GONZALEZ/ADA6_Sudoku.c"
new file mode 100644
index 0000000..9427682
--- /dev/null
+++ "b/ADAs/Angel Gonz\303\241lez/ADA6_ANGEL_GONZALEZ/ADA6_Sudoku.c"
@@ -0,0 +1,133 @@
+#include
+#include
+#include
+#include
+
+typedef struct tableroMenor
+{
+ int matriz[3][3];
+} tableroMenor;
+
+typedef struct sudoku
+{
+ tableroMenor tableroCompleto[3][3];
+} sudoku;
+
+void asignarValores(sudoku *);
+bool verificadorMatriz(int, int _matriz[][3], int, int);
+bool verificadorLineas(int, int _matrizFalsa[][9], int, int);
+bool verificadorColumnas(int, int _matrizFalsa[][9], int, int);
+void imprimirSudoku(sudoku);
+
+int main()
+{
+ sudoku sudoku;
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarValores(&sudoku);
+
+ imprimirSudoku(sudoku);
+
+ return 0;
+}
+
+void asignarValores(sudoku *_sudoku)
+{
+ int auxiliar1, sudokuFalso[9][9];
+ bool auxiliar2, auxiliar3, auxiliar4;
+ for(int f=0; f<3; f++)
+ {
+ for (int c=0; c<3; c++)
+ {
+ for (int i=0; i<3; i++)
+ {
+ for (int j=0; j<3; j++)
+ {
+ do
+ {
+ auxiliar1=1+rand() %9;
+ sudokuFalso[i+f*3][j+c*3]=auxiliar1;
+ _sudoku->tableroCompleto[f][c].matriz[i][j]=auxiliar1;
+ auxiliar2=verificadorMatriz(auxiliar1, _sudoku->tableroCompleto[f][c].matriz, i, j);
+ auxiliar3=verificadorLineas(auxiliar1, sudokuFalso, i+f*3, j+c*3);
+ auxiliar4=verificadorColumnas(auxiliar1, sudokuFalso, i+f*3, j);
+ } while (auxiliar2==false || auxiliar3==false || auxiliar4==false);
+ }
+ }
+ }
+ }
+}
+
+bool verificadorMatriz(int num, int _matriz[][3], int x, int y)
+{
+ for (int i = 0; i < 3; i++)
+ {
+ for (int j = 0; j < 3; j++)
+ {
+ if (num==_matriz[i][j])
+ {
+ if (i==x && j==y)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+
+ }
+ }
+ }
+}
+
+bool verificadorLineas(int n, int _matrizFalsa[][9], int i, int j)
+{
+ for (int f = 0; f < j; f++)
+ {
+ if (n==_matrizFalsa[f][j])
+ {
+ return false;
+ }
+ return true;
+ }
+}
+
+bool verificadorColumnas(int n, int _matrizFalsa[][9], int i, int j)
+{
+ for (int f = 0; f < 9; f++)
+ {
+ if (n==_matrizFalsa[f][j])
+ {
+ if (i==f)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+
+ }
+ }
+}
+
+
+void imprimirSudoku(sudoku _sudoku)
+{
+ for(int f=0; f<3; f++)
+ {
+ for (int c=0; c<3; c++)
+ {
+ for (int i=0; i<3; i++)
+ {
+ for (int j=0; j<3; j++)
+ {
+ printf("%d\t", _sudoku.tableroCompleto[f][i].matriz[c][j]);
+ }
+ }
+ printf("\n\n");
+ }
+ }
+}
\ No newline at end of file
diff --git "a/ADAs/Angel Gonz\303\241lez/ADA6_ANGEL_GONZALEZ/ADA6_Sudoku.exe" "b/ADAs/Angel Gonz\303\241lez/ADA6_ANGEL_GONZALEZ/ADA6_Sudoku.exe"
new file mode 100644
index 0000000..d12c6b7
Binary files /dev/null and "b/ADAs/Angel Gonz\303\241lez/ADA6_ANGEL_GONZALEZ/ADA6_Sudoku.exe" differ
diff --git a/ADAs/Giovanni Quintal ADA/ADA 4/No visual.c b/ADAs/Giovanni Quintal ADA/ADA 4/No visual.c
new file mode 100644
index 0000000..3d80f80
--- /dev/null
+++ b/ADAs/Giovanni Quintal ADA/ADA 4/No visual.c
@@ -0,0 +1,367 @@
+/**
+ * @file ADA 4.c
+ * @author Giovanni Quintal
+ * Salida: Secciones acordadas
+ * @brief Determinar la matriz y secciones
+ * @version 0.1
+ * @date 2020-03-26
+ *
+ * @copyright Copyright (c) 2020
+ *
+ */
+#include
+#include
+#include
+#define N 3
+
+/**
+* @brief Se inicializan los prototipos de las funciones
+*/
+
+void asignarMatriz(int arr[][N]);
+void imprimirMatriz(int arr[][N]);
+void recorrerMatriz1_2Ascendente(int arr[][N]);
+void recorrerMatriz1_2Descendente(int arr[][N]);
+void recorrerMatriz3_4Ascendente(int arr[][N]);
+void recorrerMatriz3_4Descendente(int arr[][N]);
+void recorrerMatriz1_4Ascendente(int arr[][N]);
+void recorrerMatriz1_4Descendente(int arr[][N]);
+void recorrerMatriz2_3Ascendente(int arr[][N]);
+void recorrerMatriz2_3Descendente(int arr[][N]);
+void recorrerMatriz1Ascendente(int arr[][N]);
+void recorrerMatriz1Descendente(int arr[][N]);
+void recorrerMatriz2Ascendente(int arr[][N]);
+void recorrerMatriz2Descendente(int arr[][N]);
+void recorrerMatriz3Ascendente(int arr[][N]);
+void recorrerMatriz3Descendente(int arr[][N]);
+void recorrerMatriz4Ascendente(int arr[][N]);
+void recorrerMatriz4Descendente(int arr[][N]);
+void recorrerDiagonalPrincipal(int arr[][N]);
+void recorrerDiagonalInvertida(int arr[][N]);
+
+
+/**
+ * @brief El bloque de abajo es el Main, ahí es donde se ejecutara el código, dentro contiene la variable que se se utilizaron
+ * para el algoritmo.
+ * @return
+ */
+
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ /* Intializes random number generator */
+ srand((unsigned) time(&t));
+
+ asignarMatriz(arreglo);
+ imprimirMatriz(arreglo);
+ recorrerMatriz1_2Ascendente(arreglo);
+ recorrerMatriz1_2Descendente(arreglo);
+ recorrerMatriz3_4Ascendente(arreglo);
+ recorrerMatriz3_4Descendente(arreglo);
+ recorrerMatriz1_4Ascendente(arreglo);
+ recorrerMatriz1_4Descendente(arreglo);
+ recorrerMatriz2_3Ascendente(arreglo);
+ recorrerMatriz2_3Descendente(arreglo);
+ recorrerMatriz1Ascendente(arreglo);
+ recorrerMatriz1Descendente(arreglo);
+ recorrerMatriz2Ascendente(arreglo);
+ recorrerMatriz2Descendente(arreglo);
+ recorrerMatriz3Ascendente(arreglo);
+ recorrerMatriz3Descendente(arreglo)
+ recorrerMatriz4Ascendente(arreglo);
+ recorrerMatriz4Descendente(arreglo);
+ recorrerDiagonalPrincipal(arreglo);
+ recorrerDiagonalInvertida(arreglo);
+
+
+ return 0;
+}
+
+ /**
+ * @brief
+ * En esta función se agrega valores aleatorios a la matriz
+ * @param arr
+ */
+ void asignarMatriz(int arr[][N]) {
+ for(int i = 0; i < N; i++) {
+ for (int j = 0; j < N; j++) {
+ arr[i][j] = rand() % 9;
+ }
+ }
+ }
+ /**
+ * @brief
+ * Impresión de la matriz
+ * @param arr
+ */
+
+ void imprimirMatriz(int arr[][N]) {
+ for(int i = 0; i < N; i++) {
+ for (int j = 0; j < N; j++){
+ printf("%d ", arr[i][j]);
+ }
+ printf("\n");
+ }
+ printf("\n");
+ }
+
+ /**
+ * @brief
+ * Matriz 1-2 Ascendente
+ * @param arr
+ */
+ void recorrerMatriz1_2Ascendente(int arr[][N]) {
+ for(int i=0; i=0; i--) {
+ for (int j = 0; j<(N-i); j++) {
+ printf("%d,%d: %d\t", i, j, arr[i][j]);
+ }
+ }
+ }
+
+ /**
+ * @brief
+ * Matriz 3-4 Ascendente
+ * @param arr
+ */
+ void recorrerMatriz3_4Ascendente(int arr[][N]) {
+ for(int i=0; i=0; i--) {
+ for (int j = (N-i-1); j=0; i--) {
+ for (int j = 0; j<=i; j++) {
+ printf("%d,%d: %d\t", i, j, arr[i][j]);
+ }
+ }
+ }
+
+ /**
+ * @brief
+ * Matriz 2-3 Ascendente
+ * @param arr
+ */
+ void recorrerMatriz2_3Ascendente(int arr[][N]) {
+ for(int i=0; i=0; i--) {
+ for (int j = i; j=j) {
+ printf("%d,%d: %d\t", i, j, arr[i][j]);
+ }
+ }
+ printf("\n");
+ }
+ }
+
+
+ /**
+ * @brief
+ * Matriz 1 Descendente
+ */
+ void recorrerMatriz1Descendente(int arr[][N]) {
+ for(int i=N-1; i>=0; i--) {
+ for (int j=0; j<=(N-i-1); j++) {
+ if (i>=j) {
+ printf("%d,%d: %d\t", i, j, arr[i][j]);
+ }
+ }
+ printf("\n");
+ }
+ }
+
+ /**
+ * @brief
+ * Matriz 2 Ascendente
+ */
+ void recorrerMatriz2Ascendente(int arr[][N]){
+ for(int i=0; i=0; i--) {
+ for (int j=0; j<=(N-i-1); j++) {
+ if (i<=j) {
+ printf("%d,%d: %d\t", i, j, arr[i][j]);
+ }
+ }
+ printf("\n");
+ }
+ }
+
+ /**
+ * @brief
+ * Matriz 3 Ascendente
+ */
+ void recorrerMatriz3Ascendente(int arr[][N]) {
+ int sum;
+ for(int i=0; i=N-1) {
+ printf("%d,%d: %d\t", i, j, arr[i][j]);
+ }
+ }
+ printf("\n");
+ }
+ }
+
+ /**
+ * @brief
+ * Matriz 3 Descendente
+ */
+ void recorrerMatriz3Descendente(int arr[][N]) {
+ int sum;
+ for(int i=N-1; i>=0; i--) {
+ for (int j=0; j=N-1) {
+ printf("%d,%d: %d\t", i, j, arr[i][j]);
+ }
+ }
+ printf("\n");
+ }
+ }
+
+
+ /**
+ * @brief
+ * Matriz 4 Ascendente
+ */
+ void recorrerMatriz4Ascendente(int arr[][N]) {
+ for(int i=0; i=j) {
+ printf("%d,%d: %d\t", i, j, arr[i][j]);
+ }
+ }
+ printf("\n");
+ }
+ }
+
+ /**
+ * @brief
+ * Matriz 4 Descendente
+ */
+ void recorrerMatriz4Descendente(int arr[][N]) {
+ for(int i=N-1; i>=0; i--) {
+ for (int j=N-i-1; j=j) {
+ printf("%d,%d: %d\t", i, j, arr[i][j]);
+ }
+ }
+ printf("\n");
+ }
+ }
+
+ /**
+ * @brief
+ * Diagonal Principal
+ */
+ void recorrerDiagonalPrincipal(int arr[][N]) {
+ for(int i=0; i
+#include
+#include
+#define N 3
+
+/**
+* @brief Se inicializan los prototipos de las funciones
+*/
+
+void asignarMatriz(int arr[][N]);
+void imprimirMatriz(int arr[][N]);
+void recorrerMatriz1_2Ascendente(int arr[][N]);
+void recorrerMatriz1_2Descendente(int arr[][N]);
+void recorrerMatriz3_4Ascendente(int arr[][N]);
+void recorrerMatriz3_4Descendente(int arr[][N]);
+void recorrerMatriz1_4Ascendente(int arr[][N]);
+void recorrerMatriz1_4Descendente(int arr[][N]);
+void recorrerMatriz2_3Ascendente(int arr[][N]);
+void recorrerMatriz2_3Descendente(int arr[][N]);
+void recorrerMatriz1Ascendente(int arr[][N]);
+void recorrerMatriz1Descendente(int arr[][N]);
+void recorrerMatriz2Ascendente(int arr[][N]);
+void recorrerMatriz2Descendente(int arr[][N]);
+void recorrerMatriz3Ascendente(int arr[][N]);
+void recorrerMatriz3Descendente(int arr[][N]);
+void recorrerMatriz4Ascendente(int arr[][N]);
+void recorrerMatriz4Descendente(int arr[][N]);
+void recorrerDiagonalPrincipal(int arr[][N]);
+void recorrerDiagonalInvertida(int arr[][N]);
+
+
+/**
+ * @brief El bloque de abajo es el Main, ahí es donde se ejecutara el código, dentro contiene la variable que se se utilizaron
+ * para el algoritmo.
+ * @return
+ */
+
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ /* Intializes random number generator */
+ srand((unsigned) time(&t));
+
+ asignarMatriz(arreglo);
+ imprimirMatriz(arreglo);
+ recorrerMatriz1_2Ascendente(arreglo);
+ recorrerMatriz1_2Descendente(arreglo);
+ recorrerMatriz3_4Ascendente(arreglo);
+ recorrerMatriz3_4Descendente(arreglo);
+ recorrerMatriz1_4Ascendente(arreglo);
+ recorrerMatriz1_4Descendente(arreglo);
+ recorrerMatriz2_3Ascendente(arreglo);
+ recorrerMatriz2_3Descendente(arreglo);
+ recorrerMatriz1Ascendente(arreglo);
+ recorrerMatriz1Descendente(arreglo);
+ recorrerMatriz2Ascendente(arreglo);
+ recorrerMatriz2Descendente(arreglo);
+ recorrerMatriz3Ascendente(arreglo);
+ recorrerMatriz3Descendente(arreglo)
+ recorrerMatriz4Ascendente(arreglo);
+ recorrerMatriz4Descendente(arreglo);
+ recorrerDiagonalPrincipal(arreglo);
+ recorrerDiagonalInvertida(arreglo);
+
+
+ return 0;
+}
+
+ /**
+ * @brief
+ * En esta función se agrega valores aleatorios a la matriz
+ * @param arr
+ */
+ void asignarMatriz(int arr[][N]) {
+ for(int i = 0; i < N; i++) {
+ for (int j = 0; j < N; j++) {
+ arr[i][j] = rand() % 9;
+ }
+ }
+ }
+ /**
+ * @brief
+ * Impresión de la matriz
+ * @param arr
+ */
+
+ void imprimirMatriz(int arr[][N]) {
+ for(int i = 0; i < N; i++) {
+ for (int j = 0; j < N; j++){
+ printf("%d ", arr[i][j]);
+ }
+ printf("\n");
+ }
+ printf("\n");
+ }
+
+ /**
+ * @brief
+ * Matriz 1-2 Ascendente
+ * @param arr
+ */
+ void recorrerMatriz1_2Ascendente(int arr[][N]) {
+ for(int i = 0; i < N; i++) {
+ for (int j = 0; j < (N-i); j++ ){
+ printf("%d ", arr[i][j]);
+ }
+ printf("\n");
+ }
+ printf("\n");
+ }
+
+ /**
+ * @brief
+ * Matriz 1-2 Descendente
+ * @param arr
+ */
+ void recorrerMatriz1_2Descendente(int arr[][N]) {
+ for(int i = N-1; i >= 0; i--) {
+ for (int j = 0; j <= (N-1-i); j++ ){
+ printf("%d ", arr[i][j]);
+ }
+ printf("\n");
+ }
+ printf("\n");
+ }
+
+ /**
+ * @brief
+ * Matriz 3-4 Ascendente
+ * @param arr
+ */
+ void recorrerMatriz3_4Ascendente(int arr[][N]) {
+ for(int i = 0; i < N; i++) {
+ for (int j = (N-1-i); j < N; j++){
+ printf("%d ", arr[i][j]);
+ }
+ printf("\n");
+ }
+ printf("\n");
+ }
+
+ /**
+ * @brief
+ * Matriz 3-4 Descendente
+ * @param arr
+ */
+ void recorrerMatriz3_4Descendente(int arr[][N]) {
+ for(int i = N-1; i >= 0; i--) {
+ for (int j = (N-1-i); j < N; j++){
+ printf("%d ", arr[i][j]);
+ }
+ printf("\n");
+ }
+ printf("\n");
+ }
+
+ /**
+ * @brief
+ * Matriz 1-4 Ascendente
+ * @param arr
+ */
+ void recorrerMatriz1_4Ascendente(int arr[][N]) {
+ for(int i = 0; i < N; i++) {
+ for (int j = 0; j <= i; j++){
+ printf("%d ", arr[i][j]);
+ }
+ printf("\n");
+ }
+ printf("\n");
+ }
+
+ /**
+ * @brief
+ * Matriz 1-4 Descendente
+ * @param arr
+ */
+ void recorrerMatriz1_4Descendente(int arr[][N]) {
+ for(int i = N-1; i >= 0; i--) {
+ for (int j = 0; j <= i; j++){
+ printf("%d ", arr[i][j]);
+ }
+ printf("\n");
+ }
+ printf("\n");
+ }
+
+ /**
+ * @brief
+ * Matriz 2-3 Ascendente
+ * @param arr
+ */
+ void recorrerMatriz2_3Ascendente(int arr[][N]) {
+ for(int i = 0; i < N; i++) {
+ for (int j = i; j < N; j++){
+ printf("%d ", arr[i][j]);
+ }
+ printf("\n");
+ }
+ printf("\n");
+ }
+
+ /**
+ * @brief
+ * Matriz 2-3 Descendente
+ * @param arr
+ */
+
+ void recorrerMatriz2_3Descendente(int arr[][N]) {
+ for(int i = N-1; i >= 0; i--) {
+ for (int j = i; j < N; j++){
+ printf("%d ", arr[i][j]);
+ }
+ printf("\n");
+ }
+ printf("\n");
+ }
+
+ /**
+ * @brief
+ * Matriz 1 Ascendente
+ */
+ void recorrerMatriz1Ascendente((int arr[][N]) {
+ for(int i = 0; i < N; i++) {
+ for (int j = 0; j <= i && j <(N-i); j++){
+ printf("%d ", arr[i][j]);
+ }
+ printf("\n");
+ }
+ printf("\n");
+ }
+
+
+ /**
+ * @brief
+ * Matriz 1 Descendente
+ */
+ void recorrerMatriz1Descendente((int arr[][N]) {
+ for(int i = N-1; i >= 0; i--) {
+ for (int j = 0; j <= i && j <= (N-1-i); j++){
+ printf("%d ", arr[i][j]);
+ }
+ printf("\n");
+ }
+ printf("\n");
+ }
+
+ /**
+ * @brief
+ * Matriz 2 Ascendente
+ */
+ void recorrerMatriz2Ascendente((int arr[][N]) {
+ for(int i = 0; i < N; i++) {
+ for (int j = i; j < N && j < (N-i); j++){
+ printf("%d ", arr[i][j]);
+ }
+ printf("\n");
+ }
+ printf("\n");
+ }
+
+ /**
+ * @brief
+ * Matriz 2 Descendente
+ */
+ void recorrerMatriz2Descendente((int arr[][N]) {
+ for(int i = N-1; i >= 0; i--) {
+ for (int j = i; j < N && j <= (N-1-i); j++){
+ printf("%d ", arr[i][j]);
+ }
+ printf("\n");
+ }
+ printf("\n");
+ }
+
+ /**
+ * @brief
+ * Matriz 3 Ascendente
+ */
+ void recorrerMatriz3Ascendente((int arr[][N]) {
+ for(int i = 0; i < N; i++) {
+ for (int j = 0; j < N; j++ ){
+ if(i+j >= N-1 && j-i >= 0){
+ printf("%d ", arr[i][j]);
+ }
+ }
+ printf("\n");
+ }
+ printf("\n");
+ }
+
+ /**
+ * @brief
+ * Matriz 3 Descendente
+ */
+ void recorrerMatriz3Descendente((int arr[][N]) {
+ for(int i = N-1; i >= 0; i--) {
+ for (int j = 0; j < N; j++ ){
+ if(i+j >= N-1 && j-i >= 0){
+ printf("%d ", arr[i][j]);
+ }
+ }
+ printf("\n");
+ }
+ printf("\n");
+ }
+
+
+ /**
+ * @brief
+ * Matriz 4 Ascendente
+ */
+ void recorrerMatriz4Ascendente((int arr[][N]) {
+ for(int i = 0; i < N; i++) {
+ for (int j = (N-1-i); j <= i; j++){
+ printf("%d ", arr[i][j]);
+ }
+ printf("\n");
+ }
+ printf("\n");
+ }
+
+ /**
+ * @brief
+ * Matriz 4 Descendente
+ */
+ void recorrerMatriz4Descendente((int arr[][N]) {
+ for(int i = N-1; i >= 0; i--) {
+ for (int j = (N-1-i); j <= i; j++){
+ printf("%d ", arr[i][j]);
+ }
+ printf("\n");
+ }
+ printf("\n");
+ }
+
+ /**
+ * @brief
+ * Diagonal Principal
+ */
+ void recorrerDiagonalPrincipal((int arr[][N]) {
+ for(int i = 0; i < N; i++) {
+ printf("%d ", arr[i][i]);
+ }
+ printf("\n");
+ }
+
+ /**
+ * @brief
+ * Diagonal Invertida
+ * @param arr
+ */
+ void recorrerDiagonalInvertida(int arr[][N]) {
+ for(int i = 0; i < N; i++) {
+ for (int j= 0; j < N; j++){
+ if(i+j== N-1){
+ printf("%d ", arr[i][j]);
+ }
+ }
+ }
+ printf("\n");
+ }
\ No newline at end of file
diff --git a/ADAs/Giovanni Quintal ADA/ADA 6/Ada6-BusquedaBinaria.c b/ADAs/Giovanni Quintal ADA/ADA 6/Ada6-BusquedaBinaria.c
new file mode 100644
index 0000000..6899604
--- /dev/null
+++ b/ADAs/Giovanni Quintal ADA/ADA 6/Ada6-BusquedaBinaria.c
@@ -0,0 +1,305 @@
+/**
+ * @file Ada6-Busqueda Binaria
+ * @author Giovanni Quintal
+ * @brief
+ * @version 0.1
+ * @date 2020-04-27
+ *
+ * @copyright Copyright (c) 2020
+ *
+ */
+#include
+#include
+#include
+
+typedef struct pet
+{
+ int edad;
+ struct pet* siguiente;
+}pet;
+typedef pet *petPtr;
+
+/**
+ * @brief Se inicializan los prototipos de las funciones
+ *
+ */
+void insertarOrdenado(petPtr*, int);
+petPtr borrar(petPtr, int);
+void imprimir(petPtr);
+void menu();
+void busquedaBinaria(petPtr);
+void leerParaBusqueda(int *);
+int totalNodos(petPtr);
+int compareTo(petPtr, int, int);
+void imprimirBusqueda(int, int, int);
+
+/**
+ * @brief El bloque de abajo es el Main, ahí es donde se ejecutara el código, dentro contiene la variable que se se utilizaron
+ * para el algoritmo. Tambien contiene las funciones de la entrada, proceso y la salida.
+ *
+ * @return int
+ */
+int main()
+{
+ petPtr lista=NULL;
+ int _edad, opcion;
+ bool aux=false;
+
+ do
+ {
+ menu();
+ scanf("%d", &opcion);
+
+ switch (opcion)
+ {
+ case 1:
+ printf("\n¿Cuál es la edad del animal?\n");
+ scanf("%d", &_edad);
+ insertarOrdenado(&lista, _edad);
+ break;
+
+ case 2:
+ printf("\n¿Cuál elemento deseas eliminar?\n");
+ scanf("%d", &_edad);
+ lista = borrar(lista, _edad);
+ break;
+
+ case 3:
+ imprimir(lista);
+ break;
+
+ case 4:
+ leerParaBusqueda(&_edad);
+ busquedaBinaria(lista);
+ break;
+
+ default:
+ aux=true;
+ break;
+ }
+
+ } while (aux==false);
+ return 0;
+}
+
+/**
+ * @brief Sección donde se pregunta al usuario que desea hacer.
+ *
+ */
+void menu()
+{
+ printf("\nMenú\n");
+ printf("Elige uno de las opciones:(Solo el número)\n");
+ printf("1.\tInsertar un elemento\n");
+ printf("2.\tBorrar un elemento\n");
+ printf("3.\tImprimir la lista\n");
+ printf("4.\tBusqueda\n");
+ printf("Para terminar presiona algún otro botón\n\n");
+}
+
+
+/**
+ * @brief La varriable actual guarda el dato.
+ *
+ * @param sPtr
+ * @param valor
+ */
+void insertarOrdenado(petPtr *sPtr, int valor)
+{
+ petPtr nuevo;
+ petPtr anterior;
+ petPtr actual;
+
+ nuevo = (pet*)malloc(sizeof(pet));
+ if (nuevo!=NULL)
+ {
+ nuevo->edad=valor;
+ nuevo->siguiente= NULL;
+
+ anterior=NULL;
+ actual=*sPtr;
+
+ while (actual!=NULL && valor>actual->edad)
+ {
+ anterior=actual;
+ actual=actual->siguiente;
+ }
+
+ if (anterior==NULL)
+ {
+ nuevo->siguiente=*sPtr;
+ *sPtr=nuevo;
+ }
+ else
+ {
+ anterior->siguiente=nuevo;
+ nuevo->siguiente=actual;
+ }
+ }
+ else
+ {
+ printf("Error");
+ }
+
+}
+
+/**
+ * @brief En esta función podremos borrar los datos provenientes las variable actual.
+ *
+ * @param actual
+ * @param valor
+ * @return petPtr
+ */
+petPtr borrar(petPtr actual, int valor)
+{
+ petPtr paraBorrar = NULL;
+ if (actual!=NULL)
+ {
+ if (actual->edad==valor)
+ {
+ paraBorrar=actual;
+ actual=actual->siguiente;
+ free(paraBorrar);
+ }
+ else
+ {
+ actual->siguiente=borrar(actual->siguiente, valor);
+ }
+ }
+ return actual;
+}
+
+/**
+ * @brief Esta función imprime la lista final.
+ *
+ * @param actual
+ */
+void imprimir(petPtr actual)
+{
+ if (actual==NULL)
+ {
+ printf("No hay elementos aún");
+ }
+ else
+ {
+ printf("\nLista:\n");
+ while (actual!=NULL)
+ {
+ printf("%d\n", actual->edad);
+ actual=actual->siguiente;
+ }
+ }
+
+}
+
+/**
+ * @brief Funcion que recibe la edad buscada
+ *
+ * @param _edad
+ */
+void leerParaBusqueda(int *_edad)
+{
+ printf("Introduce la edad que buscas:");
+ scanf("%d", _edad);
+}
+
+/**
+ * @brief
+ *
+ * @param nptr
+ */
+void busquedaBinaria(petPtr nptr)
+{
+ int derecha, izquierda=0, mitad, _edad, resultado, aux=0, numNodo;
+
+ derecha=totalNodos(nptr);
+
+ while (izquierda<=derecha)
+ {
+ mitad=(izquierda+derecha)/2;
+ resultado=compareTo(nptr, _edad, mitad);
+
+ if (resultado==0)
+ {
+ numNodo=mitad;
+ aux=1;
+ break;
+ }
+ else if (resultado==1)
+ {
+ izquierda=derecha+1;
+ }
+ else if (resultado==-1)
+ {
+ derecha=mitad-1;
+ }
+ }
+ imprimirBusqueda(numNodo, aux, resultado);
+}
+
+/**
+ * @brief
+ *
+ * @param nptr
+ * @param _edad
+ * @param mitad
+ * @return int
+ */
+int compareTo(petPtr nptr, int _edad, int mitad)
+{
+ int resultado;
+
+ for(int i=0; isiguiente;
+ }
+
+ if (_edad==nptr->edad)
+ {
+ resultado=0;
+ }
+ else if (_edad>nptr->edad)
+ {
+ resultado=1;
+ }
+ else
+ {
+ resultado=-1;
+ }
+
+ return resultado;
+}
+
+/**
+ * @brief
+ *
+ * @param nodo
+ * @return int
+ */
+int totalNodos(petPtr nodo)
+{
+ int cont=0;
+
+ while (nodo->siguiente!=NULL)
+ {
+ cont++;
+ nodo=nodo->siguiente;
+ }
+ return cont;
+}
+
+/**
+ * @brief Imprime los nodos
+ *
+ */
+void imprimirBusqueda(_numNodo, _aux, _resultado)
+{
+ if (_aux== _resultado)
+ {
+ printf("\nNo existe el dato");
+ }
+ else
+ {
+ printf("\nEl dato esta en el nodo %d\n", _numNodo);
+ }
+}
\ No newline at end of file
diff --git a/ADAs/Giovanni Quintal ADA/ADA 6/Ada6-Listas.c b/ADAs/Giovanni Quintal ADA/ADA 6/Ada6-Listas.c
new file mode 100644
index 0000000..b3d692c
--- /dev/null
+++ b/ADAs/Giovanni Quintal ADA/ADA 6/Ada6-Listas.c
@@ -0,0 +1,181 @@
+/**
+ * @file Ada6-Listas.c
+ * @author Giovanni Quintal
+ * @brief
+ * @version 0.1
+ * @date 2020-04-16
+ *
+ * @copyright Copyright (c) 2020
+ *
+ */
+#include
+#include
+#include
+
+typedef struct pet
+{
+ int edad;
+ struct pet* siguiente;
+}pet;
+typedef pet *petPtr;
+
+/**
+ * @brief Se inicializan los prototipos de las funciones
+ *
+ */
+void insertarOrdenado(petPtr*, int);
+petPtr borrar(petPtr, int);
+void imprimir(petPtr);
+void menu();
+
+/**
+ * @brief El bloque de abajo es el Main, ahí es donde se ejecutara el código, dentro contiene la variable que se se utilizaron
+ * para el algoritmo. Tambien contiene las funciones de la entrada, proceso y la salida.
+ *
+ * @return int
+ */
+int main()
+{
+ petPtr lista=NULL;
+ int _edad, opcion;
+ bool aux=false;
+
+ do
+ {
+ menu();
+ scanf("%d", &opcion);
+
+ switch (opcion)
+ {
+ case 1:
+ printf("\n¿Cuál es la edad del animal?\n");
+ scanf("%d", &_edad);
+ insertarOrdenado(&lista, _edad);
+ break;
+
+ case 2:
+ printf("\n¿Cuál elemento deseas eliminar?\n");
+ scanf("%d", &_edad);
+ lista = borrar(lista, _edad);
+ break;
+
+ case 3:
+ imprimir(lista);
+ break;
+
+ default:
+ aux=true;
+ break;
+ }
+
+ } while (aux==false);
+ return 0;
+}
+
+/**
+ * @brief Sección donde se pregunta al usuario que desea hacer.
+ *
+ */
+void menu()
+{
+ printf("\nMenú\n");
+ printf("Elige uno de las opciones:(Solo el número)\n");
+ printf("1.\tInsertar un elemento\n");
+ printf("2.\tBorrar un elemento\n");
+ printf("3.\tImprimir la lista\n");
+ printf("Para terminar presiona algún otro botón\n\n");
+}
+
+/**
+ * @brief La varriable actual guarda el dato.
+ *
+ * @param sPtr
+ * @param valor
+ */
+void insertarOrdenado(petPtr *sPtr, int valor)
+{
+ petPtr nuevo;
+ petPtr anterior;
+ petPtr actual;
+
+ nuevo = (pet*)malloc(sizeof(pet));
+ if (nuevo!=NULL)
+ {
+ nuevo->edad=valor;
+ nuevo->siguiente= NULL;
+
+ anterior=NULL;
+ actual=*sPtr;
+
+ while (actual!=NULL && valor>actual->edad)
+ {
+ anterior=actual;
+ actual=actual->siguiente;
+ }
+
+ if (anterior==NULL)
+ {
+ nuevo->siguiente=*sPtr;
+ *sPtr=nuevo;
+ }
+ else
+ {
+ anterior->siguiente=nuevo;
+ nuevo->siguiente=actual;
+ }
+ }
+ else
+ {
+ printf("Error");
+ }
+
+}
+
+/**
+ * @brief En esta función podremos borrar los datos provenientes las variable actual.
+ *
+ * @param actual
+ * @param valor
+ * @return petPtr
+ */
+petPtr borrar(petPtr actual, int valor)
+{
+ petPtr paraBorrar = NULL;
+ if (actual!=NULL)
+ {
+ if (actual->edad==valor)
+ {
+ paraBorrar=actual;
+ actual=actual->siguiente;
+ free(paraBorrar);
+ }
+ else
+ {
+ actual->siguiente=borrar(actual->siguiente, valor);
+ }
+ }
+ return actual;
+}
+
+/**
+ * @brief Esta función imprime la lista final.
+ *
+ * @param actual
+ */
+void imprimir(petPtr actual)
+{
+ if (actual==NULL)
+ {
+ printf("No hay elementos aún");
+ }
+ else
+ {
+ printf("\nLista:\n");
+ while (actual!=NULL)
+ {
+ printf("%d\n", actual->edad);
+ actual=actual->siguiente;
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/ADAs/Giovanni Quintal ADA/ADA 6/Ada6-Racionales.c b/ADAs/Giovanni Quintal ADA/ADA 6/Ada6-Racionales.c
new file mode 100644
index 0000000..a34c865
--- /dev/null
+++ b/ADAs/Giovanni Quintal ADA/ADA 6/Ada6-Racionales.c
@@ -0,0 +1,265 @@
+/**
+ * @file Ada6-Racionales.c
+ * @author Giovanni Quintal
+ * @brief
+ * @version 0.1
+ * @date 2020-04-01
+ *
+ * @copyright Copyright (c) 2020
+ *
+ */
+#include
+
+typedef struct racional{
+ int numerador;
+ int denominador;
+}racional;
+
+/**
+* @brief Se inicializan los prototipos de las funciones
+*/
+void leerRacionales(racional *, racional *);
+racional sumarRacionales(racional, racional );
+racional restarRacionales(racional, racional );
+racional multiplicarRacionales(racional, racional);
+racional dividirRacionales(racional, racional);
+void simplificarRacionales(racional *);
+void imprimirRacionales(racional, racional, racional, racional);
+
+/**
+ * @brief El bloque de abajo es el Main, ahí es donde se ejecutara el código, dentro contiene la variable que se se utilizaron
+ * para el algoritmo. Tambien contiene las funciones de la entrada, proceso y la salida.
+ * @return racional
+ */
+int main(){
+ racional r1, r2, r3, r4, r5, r6;
+
+ leerRacionales(&r1, &r2);
+ r3 = sumarRacionales(r1, r2);
+ r4 = restarRacionales(r1, r2);
+ r5 = multiplicarRacionales(r1, r2);
+ r6 = dividirRacionales(r1, r2);
+ imprimirRacionales(r3, r4, r5, r6);
+
+ return 0;
+}
+
+/**
+ * @brief La función leerRacionales se encarga de pedir los valores para las variables correspondientes.
+ *
+ * @param r1
+ * @param r2
+ */
+void leerRacionales(racional *r1, racional *r2)
+{
+ int numerador1, denominador1, numerador2, denominador2;
+ printf("Primer numerador: ");
+ scanf("%d", &numerador1);
+ printf("Primer denominador: ");
+ scanf("%d", &denominador1);
+ printf("Segundo numerador: ");
+ scanf("%d", &numerador2);
+ printf("Segundo denominador: ");
+ scanf("%d", &denominador2);
+
+ r1->numerador=numerador1;
+ r1->denominador=denominador1;
+ r2->numerador=numerador2;
+ r2->denominador=denominador2;
+}
+
+/**
+ * @brief En esta función se suma los racionales.
+ * @param r1
+ * @param r2
+ * @return racional
+ */
+racional sumarRacionales(racional r1, racional r2)
+{
+ racional result;
+ int numerador, denominador, d1, d2, MCM;
+
+ d1=r1.denominador;
+ d2=r2.denominador;
+
+ if (d1%d2==0 || d2%d1==0)
+ {
+ if (d1>d2)
+ {
+ MCM=d1;
+ }
+ else
+ {
+ MCM=d2;
+ }
+ }
+ else
+ {
+ MCM=d1*d2;
+ if (MCM%2==0)
+ {
+ if ((MCM/2)%d1==0 && (MCM/2)%d2==0)
+ {
+ MCM=MCM/2;
+ }
+ }
+
+ }
+
+ numerador = (r1.numerador*MCM/r1.denominador)+(r2.numerador*MCM/r2.denominador);
+ denominador = MCM;
+
+ result.numerador = numerador;
+ result.denominador = denominador;
+
+ simplificarRacionales(&result);
+
+ return result;
+}
+
+/**
+ * @brief En esta función se resta los racionales.
+ *
+ * @param r1
+ * @param r2
+ * @return racional
+ */
+racional restarRacionales(racional r1, racional r2)
+{
+ racional result;
+ int numerador, denominador, d1, d2, MCM;
+
+ d1=r1.denominador;
+ d2=r2.denominador;
+
+ if (d1%d2==0 || d2%d1==0)
+ {
+ if (d1>d2)
+ {
+ MCM=d1;
+ }
+ else
+ {
+ MCM=d2;
+ }
+ }
+ else
+ {
+ MCM=d1*d2;
+ if (MCM%2==0)
+ {
+ if ((MCM/2)%d1==0 && (MCM/2)%d2==0)
+ {
+ MCM=MCM/2;
+ }
+ }
+
+ }
+
+ numerador = (r1.numerador*MCM/r1.denominador)-(r2.numerador*MCM/r2.denominador);
+ denominador = MCM;
+
+ result.numerador = numerador;
+ result.denominador = denominador;
+
+ simplificarRacionales(&result);
+
+ return result;
+}
+
+/**
+ * @brief En esta función se multiplica los racionales.
+ *
+ * @param r1
+ * @param r2
+ * @return racional
+ */
+racional multiplicarRacionales(racional r1, racional r2)
+{
+ racional result;
+ int numerador, denominador;
+
+ numerador = r1.numerador*r2.numerador;
+ denominador = r1.denominador*r2.denominador;
+
+ result.numerador=numerador;
+ result.denominador=denominador;
+
+ simplificarRacionales(&result);
+
+ return result;
+}
+
+/**
+ * @brief En esta función se divide los racionales.
+ *
+ * @param r1
+ * @param r2
+ * @return racional
+ */
+racional dividirRacionales(racional r1, racional r2)
+{
+ racional result;
+ int numerador, denominador;
+
+ numerador = r1.numerador*r2.denominador;
+ denominador = r1.denominador*r2.numerador;
+
+ result.numerador=numerador;
+ result.denominador=denominador;
+
+ simplificarRacionales(&result);
+
+ return result;
+}
+
+/**
+ * @brief En esta función se simplifica los racionales.
+ *
+ * @param r1
+ */
+void simplificarRacionales(racional *r1)
+{
+ int aux1=0, aux2=2;
+
+ if(r1->numerador<0){
+ r1->numerador = r1->numerador*(-1);
+ aux1++;
+ }
+ if(r1->denominador<0){
+ r1->denominador = r1->denominador*(-1);
+ aux1++;
+ }
+ while (aux2<=r1->numerador && aux2<=r1->denominador)
+ {
+ if (r1->numerador%aux2==0 && r1->denominador%aux2==0)
+ {
+ r1->numerador=r1->numerador/aux2;
+ r1->denominador=r1->denominador/aux2;
+ }
+ else
+ {
+ aux2++;
+ }
+ }
+ if(aux1==1)
+ {
+ r1->numerador=r1->numerador*(-1);
+ }
+}
+
+/**
+ * @brief En esta función se imprime todos los racionales.
+ *
+ * @param r3
+ * @param r4
+ * @param r5
+ * @param r6
+ */
+void imprimirRacionales(racional r3, racional r4, racional r5, racional r6)
+{
+ printf("SUMA: %d/%d \n", r3.numerador, r3.denominador);
+ printf("RESTA: %d/%d \n", r4.numerador, r4.denominador);
+ printf("MULTIPLICACION: %d/%d \n", r5.numerador, r5.denominador);
+ printf("DIVISION: %d/%d \n", r6.numerador, r6.denominador);
+}
\ No newline at end of file
diff --git a/ADAs/Giovanni Quintal ADA/ADA 6/Ada6-Sudoku.c b/ADAs/Giovanni Quintal ADA/ADA 6/Ada6-Sudoku.c
new file mode 100644
index 0000000..8820ef6
--- /dev/null
+++ b/ADAs/Giovanni Quintal ADA/ADA 6/Ada6-Sudoku.c
@@ -0,0 +1,159 @@
+/**
+ * @file Ada6-Sudoku.c
+ * @author Giovanni Quintal
+ * @brief
+ * @version 0.1
+ * @date 2020-04-06
+ *
+ * @copyright Copyright (c) 2020
+ *
+ */
+#include
+#include
+#include
+
+typedef struct tablero{
+ int sudoku[3][3];
+}tablero;
+
+/**
+ * @brief Se inicializan los prototipos de las funciones
+ *
+ * @param tableroMenor
+ */
+void asignarSudokuRamdom(tablero tableroMenor[][3]);
+void imprimirSudoku(tablero tableroMenor[][3]);
+void revisarTablerosMenores(tablero tableroMenor[][3], int*CTL);
+void revisarAllFilas(tablero tableroMenor[][3], int*CTL);
+void revisarAllColumnas(tablero tableroMenor[][3], int*CTL);
+void imprimirConfirmacion(int CTL);
+
+/**
+ * @brief El bloque de abajo es el Main, ahí es donde se ejecutara el código, dentro contiene la variable que se se utilizaron
+ * para el algoritmo. Tambien contiene las funciones de la entrada, proceso y la salida.
+ *
+ * @return int
+ */
+int main(){
+
+ int CTL=1;
+ tablero tableroMenor[3][3];
+
+ asignarSudokuRamdom(tableroMenor);
+ imprimirSudoku(tableroMenor);
+ revisarTablerosMenores(tableroMenor,&CTL);
+ revisarAllFilas(tableroMenor,&CTL);
+ revisarAllColumnas(tableroMenor,&CTL);
+ imprimirConfirmacion(CTL);
+}
+
+/**
+ * @brief Se crea el Sudoku con dimension de 9x9.
+ *
+ * @param tableroMenor
+ */
+void asignarSudokuRamdom(tablero tableroMenor[][3]){
+ time_t t;
+ srand((unsigned) time(&t));
+ for(int i=0;i<3;i++){
+ for(int k=0;k<3;k++){
+ for(int j=0;j<3;j++){
+ for(int l=0;l<3;l++){
+ tableroMenor[i][j].sudoku[k][l]=rand()%10;
+ }
+ }
+ }
+ }
+}
+
+/**
+ * @brief Se revisan los 9 tableros menores y asi con la variable CTL se sepa si se repite algún numero.
+ *
+ * @param tableroMenor
+ * @param CTL
+ */
+void revisarTablerosMenores(tablero tableroMenor[][3], int*CTL){
+ int contador;
+ for(int i=0;i<3;i++){
+ for(int j=0;j<3;j++){
+ contador=0;
+ for(int k=0;k<3;k++){
+ for(int l=0;l<3;l++){
+ if(tableroMenor[i][j].sudoku[i][j]==tableroMenor[i][j].sudoku[k][l]){
+ contador++;
+ }
+ }
+ if(contador>0){
+ *CTL=0;
+ }
+ }
+ }
+ }
+}
+
+/**
+ * @brief Se revisan los 9 filas y asi con la variable CTL se sepa si se repite algún numero.
+ *
+ * @param tableroMenor
+ * @param CTL
+ */
+void revisarAllFilas(tablero tableroMenor[][3], int*CTL){
+ for(int i=0;i<3;i++){
+ for(int j=0;j<3;j++){
+ for(int k=0;k<3;k++){
+ if(tableroMenor[0][j].sudoku[i][j]==tableroMenor[1][j].sudoku[k][j] || tableroMenor[0][j].sudoku[i][j]==tableroMenor[2][j].sudoku[k][j]){
+ *CTL=0;
+ }
+ }
+ }
+ }
+}
+
+/**
+ * @brief Se revisan los 9 columnas y asi con la variable CTL se sepa si se repite algún numero.
+ *
+ * @param tableroMenor
+ * @param CTL
+ */
+void revisarAllColumnas(tablero tableroMenor[][3], int*CTL){
+ for(int i=0;i<3;i++){
+ for(int j=0;j<3;j++){
+ for(int l=0;l<3;l++){
+ if(tableroMenor[i][0].sudoku[i][j]==tableroMenor[i][1].sudoku[i][l] || tableroMenor[i][0].sudoku[i][j]==tableroMenor[i][2].sudoku[i][l]){
+ *CTL=0;
+ }
+ }
+ }
+ }
+}
+
+/**
+ * @brief Se imprime el sudoku completo.
+ *
+ * @param tableroMenor
+ */
+void imprimirSudoku(tablero tableroMenor[][3]){
+ for(int i=0;i<3;i++){
+ for(int k=0;k<3;k++){
+ for(int j=0;j<3;j++){
+ for(int l=0;l<3;l++){
+ printf("%d ",tableroMenor[i][j].sudoku[k][l]);
+ }
+ }
+ printf("\n");
+ }
+ }
+}
+
+/**
+ * @brief Se verifica si es un sudoku.
+ *
+ * @param CTL
+ */
+void imprimirConfirmacion(int CTL){
+ if (CTL==0){
+ printf("\n No es un sudoku--^");
+ } else {
+ printf("\n Es un sudoku--^");
+ }
+}
\ No newline at end of file
diff --git a/ADAs/Greene/.vscode/c_cpp_properties.json b/ADAs/Greene/.vscode/c_cpp_properties.json
new file mode 100644
index 0000000..eec713c
--- /dev/null
+++ b/ADAs/Greene/.vscode/c_cpp_properties.json
@@ -0,0 +1,20 @@
+{
+ "configurations": [
+ {
+ "name": "Win32",
+ "includePath": [
+ "${workspaceFolder}/**"
+ ],
+ "defines": [
+ "_DEBUG",
+ "UNICODE",
+ "_UNICODE"
+ ],
+ "compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.27.29110/bin/Hostx64/x64/cl.exe",
+ "cStandard": "c11",
+ "cppStandard": "c++17",
+ "intelliSenseMode": "msvc-x64"
+ }
+ ],
+ "version": 4
+}
\ No newline at end of file
diff --git a/ADAs/Greene/ADA4/Ejercicio26Marzo/Ejercicio26Marzo.c b/ADAs/Greene/ADA4/Ejercicio26Marzo/Ejercicio26Marzo.c
new file mode 100644
index 0000000..bf34a5c
--- /dev/null
+++ b/ADAs/Greene/ADA4/Ejercicio26Marzo/Ejercicio26Marzo.c
@@ -0,0 +1,152 @@
+/**
+ * @file recorrerMatriz1-2Ascendente.c
+ * @author Carlos Enrique Greene Mex (greenecarlos17@gmail.com)
+ * @brief Programa que imprime la zona 2-4 0 1-3 de una matriz de NxN según a elección del usuario
+ * @version 0.1
+ * @date 2020-03-22
+ *
+ * @copyright Copyright (c) 2020
+ *
+ */
+#include
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void elegirFuncion(int arr[][N]);
+void recorrerMatriz2_4(int arr[][N]);
+void recorrerMatriz1_3(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ elegirFuncion(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i=N-1 && i>=j)
+ {
+ printf("%d,%d: %d\t", i, j, arr[i][j]);
+ }
+ else
+ {
+ printf("\t");
+ }
+
+ }
+ printf("\n");
+ }
+}
+
+/**
+ * @brief Función que imprime la zona 1-3 de la matriz
+ *
+ * @param arr
+ */
+void recorrerMatriz1_3(int arr[][N])
+{
+ int aux;
+ for(int i=0; i=j && aux<=N-1)
+ {
+ printf("%d,%d: %d\t", i, j, arr[i][j]);
+ }
+ else if (aux>=N-1 && i<=j)
+ {
+ printf("%d,%d: %d\t", i, j, arr[i][j]);
+ }
+ else
+ {
+ printf("\t");
+ }
+ }
+ printf("\n");
+ }
+}
\ No newline at end of file
diff --git a/ADAs/Greene/ADA4/Ejercicio26Marzo/Ejercicio26Marzo.exe b/ADAs/Greene/ADA4/Ejercicio26Marzo/Ejercicio26Marzo.exe
new file mode 100644
index 0000000..ae7e74b
Binary files /dev/null and b/ADAs/Greene/ADA4/Ejercicio26Marzo/Ejercicio26Marzo.exe differ
diff --git a/ADAs/Greene/ADA4/No visual/recorrerDiagonalInvertida.c b/ADAs/Greene/ADA4/No visual/recorrerDiagonalInvertida.c
new file mode 100644
index 0000000..47887db
--- /dev/null
+++ b/ADAs/Greene/ADA4/No visual/recorrerDiagonalInvertida.c
@@ -0,0 +1,72 @@
+/**
+ * @file recorrerDiagonalInvertida.c
+ * @author Carlos Enrique Greene Mex (greenecarlos17@gmail.com)
+ * @brief Programa que recorre la diagonal inversa y no visual de una matriz de NxN
+ * @version 0.1
+ * @date 2020-03-22
+ *
+ * @copyright Copyright (c) 2020
+ *
+ */
+#include
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerDiagonalInvertida(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerDiagonalInvertida(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerDiagonalPrincipal(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerDiagonalPrincipal(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerMatriz1_2Ascendente(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerMatriz1_2Ascendente(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerMatriz1_2Descendente(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerMatriz1_2Descendente(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i=0; i--)
+ {
+ for (int j = 0; j<(N-i); j++)
+ {
+ printf("%d,%d: %d\t", i, j, arr[i][j]);
+ }
+ }
+}
\ No newline at end of file
diff --git a/ADAs/Greene/ADA4/No visual/recorrerMatriz1-4Ascendente.c b/ADAs/Greene/ADA4/No visual/recorrerMatriz1-4Ascendente.c
new file mode 100644
index 0000000..a1f8346
--- /dev/null
+++ b/ADAs/Greene/ADA4/No visual/recorrerMatriz1-4Ascendente.c
@@ -0,0 +1,74 @@
+/**
+ * @file recorrerMatriz1-4Ascendente.c
+ * @author Carlos Enrique Greene Mex (greenecarlos17@gmail.com)
+ * @brief Programa que recorre la zona 1 a 4 forma ascendente y no visual de una matriz de NxN
+ * @version 0.1
+ * @date 2020-03-22
+ *
+ * @copyright Copyright (c) 2020
+ *
+ */
+#include
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerMatriz1_4Ascendente(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerMatriz1_4Ascendente(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerMatriz1_4Desscendente(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerMatriz1_4Desscendente(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i=0; i--)
+ {
+ for (int j = 0; j<=i; j++)
+ {
+ printf("%d,%d: %d\t", i, j, arr[i][j]);
+ }
+ }
+}
\ No newline at end of file
diff --git a/ADAs/Greene/ADA4/No visual/recorrerMatriz1Ascendente.c b/ADAs/Greene/ADA4/No visual/recorrerMatriz1Ascendente.c
new file mode 100644
index 0000000..e207653
--- /dev/null
+++ b/ADAs/Greene/ADA4/No visual/recorrerMatriz1Ascendente.c
@@ -0,0 +1,78 @@
+/**
+ * @file recorrerMatriz1Ascendente.c
+ * @author Carlos Enrique Greene Mex (greenecarlos17@gmail.com)
+ * @brief Programa que recorre la zona 1 forma ascendente y no visual de una matriz de NxN
+ * @version 0.1
+ * @date 2020-03-22
+ *
+ * @copyright Copyright (c) 2020
+ *
+ */
+#include
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerMatriz1Ascendente(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerMatriz1Ascendente(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i=j)
+ {
+ printf("%d,%d: %d\t", i, j, arr[i][j]);
+ }
+ }
+ printf("\n");
+ }
+}
\ No newline at end of file
diff --git a/ADAs/Greene/ADA4/No visual/recorrerMatriz1Descendente.c b/ADAs/Greene/ADA4/No visual/recorrerMatriz1Descendente.c
new file mode 100644
index 0000000..e49f949
--- /dev/null
+++ b/ADAs/Greene/ADA4/No visual/recorrerMatriz1Descendente.c
@@ -0,0 +1,78 @@
+/**
+ * @file recorrerMatriz1Descendente.c
+ * @author Carlos Enrique Greene Mex (greenecarlos17@gmail.com)
+ * @brief Programa que recorre la zona 1 forma descendente y no visual de una matriz de NxN
+ * @version 0.1
+ * @date 2020-03-22
+ *
+ * @copyright Copyright (c) 2020
+ *
+ */
+#include
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerMatriz1Descendente(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerMatriz1Descendente(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i=0; i--)
+ {
+ for (int j=0; j<=(N-i-1); j++)
+ {
+ if (i>=j)
+ {
+ printf("%d,%d: %d\t", i, j, arr[i][j]);
+ }
+ }
+ printf("\n");
+ }
+}
\ No newline at end of file
diff --git a/ADAs/Greene/ADA4/No visual/recorrerMatriz2-3Ascendente.c b/ADAs/Greene/ADA4/No visual/recorrerMatriz2-3Ascendente.c
new file mode 100644
index 0000000..d5741ad
--- /dev/null
+++ b/ADAs/Greene/ADA4/No visual/recorrerMatriz2-3Ascendente.c
@@ -0,0 +1,75 @@
+/**
+ * @file recorrerMatriz2-3Ascendente.c
+ * @author Carlos Enrique Greene Mex (greenecarlos17@gmail.com)
+ * @brief Programa que recorre la zona 2 a 3 forma ascendente y no visual de una matriz de NxN
+ * @version 0.1
+ * @date 2020-03-22
+ *
+ * @copyright Copyright (c) 2020
+ *
+ */
+#include
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerMatriz2_3Ascendente(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerMatriz2_3Ascendente(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerMatriz2_3Descendente(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerMatriz2_3Descendente(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i=0; i--)
+ {
+ for (int j = i; j
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerMatriz2Ascendente(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerMatriz2Ascendente(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerMatriz2Descendente(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerMatriz2Descendente(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i=0; i--)
+ {
+ for (int j=0; j<=(N-i-1); j++)
+ {
+ if (i<=j)
+ {
+ printf("%d,%d: %d\t", i, j, arr[i][j]);
+ }
+ }
+ printf("\n");
+ }
+}
\ No newline at end of file
diff --git a/ADAs/Greene/ADA4/No visual/recorrerMatriz3-4Ascendente.c b/ADAs/Greene/ADA4/No visual/recorrerMatriz3-4Ascendente.c
new file mode 100644
index 0000000..98000d8
--- /dev/null
+++ b/ADAs/Greene/ADA4/No visual/recorrerMatriz3-4Ascendente.c
@@ -0,0 +1,75 @@
+/**
+ * @file recorrerMatriz3-4Ascendente.c
+ * @author Carlos Enrique Greene Mex (greenecarlos17@gmail.com)
+ * @brief Programa que recorre la zona 3 a 4 de forma ascendente y no visual de una matriz de NxN
+ * @version 0.1
+ * @date 2020-03-22
+ *
+ * @copyright Copyright (c) 2020
+ *
+ */
+#include
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerMatriz3_4Ascendente(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerMatriz3_4Ascendente(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerMatriz3_4Descendente(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerMatriz3_4Descendente(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i=0; i--)
+ {
+ for (int j = (N-i-1); j
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerMatriz3Ascendente(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerMatriz3Ascendente(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i=N-1)
+ {
+ printf("%d,%d: %d\t", i, j, arr[i][j]);
+ }
+ }
+ printf("\n");
+ }
+}
\ No newline at end of file
diff --git a/ADAs/Greene/ADA4/No visual/recorrerMatriz3Descendente.c b/ADAs/Greene/ADA4/No visual/recorrerMatriz3Descendente.c
new file mode 100644
index 0000000..b0364cc
--- /dev/null
+++ b/ADAs/Greene/ADA4/No visual/recorrerMatriz3Descendente.c
@@ -0,0 +1,80 @@
+/**
+ * @file recorrerMatriz2Ascendente.c
+ * @author Carlos Enrique Greene Mex (greenecarlos17@gmail.com)
+ * @brief Programa que recorre la zona 3 de forma descendente y no visual de una matriz de NxN
+ * @version 0.1
+ * @date 2020-03-22
+ *
+ * @copyright Copyright (c) 2020
+ *
+ */
+#include
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerMatriz3Descendente(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerMatriz3Descendente(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i=0; i--)
+ {
+ for (int j=0; j=N-1)
+ {
+ printf("%d,%d: %d\t", i, j, arr[i][j]);
+ }
+ }
+ printf("\n");
+ }
+}
\ No newline at end of file
diff --git a/ADAs/Greene/ADA4/No visual/recorrerMatriz4Ascendente.c b/ADAs/Greene/ADA4/No visual/recorrerMatriz4Ascendente.c
new file mode 100644
index 0000000..030a6d8
--- /dev/null
+++ b/ADAs/Greene/ADA4/No visual/recorrerMatriz4Ascendente.c
@@ -0,0 +1,78 @@
+/**
+ * @file recorrerMatriz2Ascendente.c
+ * @author Carlos Enrique Greene Mex (greenecarlos17@gmail.com)
+ * @brief Programa que recorre la zona 4 de forma ascendente y no visual de una matriz de NxN
+ * @version 0.1
+ * @date 2020-03-22
+ *
+ * @copyright Copyright (c) 2020
+ *
+ */
+#include
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerMatriz4Ascendente(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerMatriz4Ascendente(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i=j)
+ {
+ printf("%d,%d: %d\t", i, j, arr[i][j]);
+ }
+ }
+ printf("\n");
+ }
+}
\ No newline at end of file
diff --git a/ADAs/Greene/ADA4/No visual/recorrerMatriz4Descendente.c b/ADAs/Greene/ADA4/No visual/recorrerMatriz4Descendente.c
new file mode 100644
index 0000000..d84798a
--- /dev/null
+++ b/ADAs/Greene/ADA4/No visual/recorrerMatriz4Descendente.c
@@ -0,0 +1,78 @@
+/**
+ * @file recorrerMatriz2Ascendente.c
+ * @author Carlos Enrique Greene Mex (greenecarlos17@gmail.com)
+ * @brief Programa que recorre la zona 4 de forma descendente y no visual de una matriz de NxN
+ * @version 0.1
+ * @date 2020-03-22
+ *
+ * @copyright Copyright (c) 2020
+ *
+ */
+#include
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerMatriz4Descendente(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerMatriz4Descendente(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i=0; i--)
+ {
+ for (int j=N-i-1; j=j)
+ {
+ printf("%d,%d: %d\t", i, j, arr[i][j]);
+ }
+ }
+ printf("\n");
+ }
+}
\ No newline at end of file
diff --git a/ADAs/Greene/ADA4/Visual/recorrerDiagonalInvertida.c b/ADAs/Greene/ADA4/Visual/recorrerDiagonalInvertida.c
new file mode 100644
index 0000000..dc42a19
--- /dev/null
+++ b/ADAs/Greene/ADA4/Visual/recorrerDiagonalInvertida.c
@@ -0,0 +1,76 @@
+/**
+ * @file recorrerDiagonalInvertida.c
+ * @author Carlos Enrique Greene Mex (greenecarlos17@gmail.com)
+ * @brief Programa que recorre la diagonal inversa de forma visual de una matriz de NxN
+ * @version 0.1
+ * @date 2020-03-22
+ *
+ * @copyright Copyright (c) 2020
+ *
+ */
+#include
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerDiagonalInvertida(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerDiagonalInvertida(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerDiagonalPrincipal(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerDiagonalPrincipal(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerMatriz1_2Ascendente(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerMatriz1_2Ascendente(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerMatriz1_2Descendente(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerMatriz1_2Descendente(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i=0; i--)
+ {
+ for (int j = 0; j<(N-i); j++)
+ {
+ printf("%d,%d: %d\t", i, j, arr[i][j]);
+ }
+ printf("\n");
+ }
+}
\ No newline at end of file
diff --git a/ADAs/Greene/ADA4/Visual/recorrerMatriz1-4Ascendente.c b/ADAs/Greene/ADA4/Visual/recorrerMatriz1-4Ascendente.c
new file mode 100644
index 0000000..f6f4e19
--- /dev/null
+++ b/ADAs/Greene/ADA4/Visual/recorrerMatriz1-4Ascendente.c
@@ -0,0 +1,75 @@
+/**
+ * @file recorrerMatriz1-4Ascendente.c
+ * @author Carlos Enrique Greene Mex (greenecarlos17@gmail.com)
+ * @brief Programa que recorre la zona 1 a 4 forma ascendente de una matriz de NxN
+ * @version 0.1
+ * @date 2020-03-22
+ *
+ * @copyright Copyright (c) 2020
+ *
+ */
+#include
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerMatriz1_4Ascendente(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerMatriz1_4Ascendente(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerMatriz1_4Desscendente(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerMatriz1_4Desscendente(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i=0; i--)
+ {
+ for (int j = 0; j<=i; j++)
+ {
+ printf("%d,%d: %d\t", i, j, arr[i][j]);
+ }
+ printf("\n");
+ }
+}
\ No newline at end of file
diff --git a/ADAs/Greene/ADA4/Visual/recorrerMatriz1Ascendente.c b/ADAs/Greene/ADA4/Visual/recorrerMatriz1Ascendente.c
new file mode 100644
index 0000000..579de3d
--- /dev/null
+++ b/ADAs/Greene/ADA4/Visual/recorrerMatriz1Ascendente.c
@@ -0,0 +1,78 @@
+/**
+ * @file recorrerMatriz1Ascendente.c
+ * @author Carlos Enrique Greene Mex (greenecarlos17@gmail.com)
+ * @brief Programa que recorre la zona 1 forma ascendente y visual de una matriz de NxN
+ * @version 0.1
+ * @date 2020-03-22
+ *
+ * @copyright Copyright (c) 2020
+ *
+ */
+#include
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerMatriz1Ascendente(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerMatriz1Ascendente(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i=j)
+ {
+ printf("%d,%d: %d\t", i, j, arr[i][j]);
+ }
+ }
+ printf("\n");
+ }
+}
\ No newline at end of file
diff --git a/ADAs/Greene/ADA4/Visual/recorrerMatriz1Descendente.c b/ADAs/Greene/ADA4/Visual/recorrerMatriz1Descendente.c
new file mode 100644
index 0000000..2acc04c
--- /dev/null
+++ b/ADAs/Greene/ADA4/Visual/recorrerMatriz1Descendente.c
@@ -0,0 +1,78 @@
+/**
+ * @file recorrerMatriz1Descendente.c
+ * @author Carlos Enrique Greene Mex (greenecarlos17@gmail.com)
+ * @brief Programa que recorre la zona 1 forma descendente y visual de una matriz de NxN
+ * @version 0.1
+ * @date 2020-03-22
+ *
+ * @copyright Copyright (c) 2020
+ *
+ */
+#include
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerMatriz1Descendente(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerMatriz1Descendente(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i=0; i--)
+ {
+ for (int j=0; j<=(N-i-1); j++)
+ {
+ if (i>=j)
+ {
+ printf("%d,%d: %d\t", i, j, arr[i][j]);
+ }
+ }
+ printf("\n");
+ }
+}
\ No newline at end of file
diff --git a/ADAs/Greene/ADA4/Visual/recorrerMatriz2-3Ascendente.c b/ADAs/Greene/ADA4/Visual/recorrerMatriz2-3Ascendente.c
new file mode 100644
index 0000000..2f750e4
--- /dev/null
+++ b/ADAs/Greene/ADA4/Visual/recorrerMatriz2-3Ascendente.c
@@ -0,0 +1,79 @@
+/**
+ * @file recorrerMatriz2-3Ascendente.c
+ * @author Carlos Enrique Greene Mex (greenecarlos17@gmail.com)
+ * @brief Programa que recorre la zona 2 a 3 forma ascendente y visual de una matriz de NxN
+ * @version 0.1
+ * @date 2020-03-22
+ *
+ * @copyright Copyright (c) 2020
+ *
+ */
+#include
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerMatriz2_3Ascendente(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerMatriz2_3Ascendente(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerMatriz2_3Descendente(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerMatriz2_3Descendente(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i=0; i--)
+ {
+ for (int y = 0; y
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerMatriz2Ascendente(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerMatriz2Ascendente(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerMatriz2Descendente(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerMatriz2Descendente(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i=0; i--)
+ {
+ for (int j=0; j<=(N-i-1); j++)
+ {
+ if (i<=j)
+ {
+ printf("%d,%d: %d\t", i, j, arr[i][j]);
+ }
+ else
+ {
+ printf("\t");
+ }
+ }
+ printf("\n");
+ }
+}
\ No newline at end of file
diff --git a/ADAs/Greene/ADA4/Visual/recorrerMatriz3-4Ascendente.c b/ADAs/Greene/ADA4/Visual/recorrerMatriz3-4Ascendente.c
new file mode 100644
index 0000000..baa85a7
--- /dev/null
+++ b/ADAs/Greene/ADA4/Visual/recorrerMatriz3-4Ascendente.c
@@ -0,0 +1,79 @@
+/**
+ * @file recorrerMatriz3-4Ascendente.c
+ * @author Carlos Enrique Greene Mex (greenecarlos17@gmail.com)
+ * @brief Programa que recorre la zona 3 a 4 de forma ascendente y visual de una matriz de NxN
+ * @version 0.1
+ * @date 2020-03-22
+ *
+ * @copyright Copyright (c) 2020
+ *
+ */
+#include
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerMatriz3_4Ascendente(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerMatriz3_4Ascendente(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerMatriz3_4Ascendente(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerMatriz3_4Ascendente(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i=0; i--)
+ {
+ for (int y = 0; y <(N-1-i); y++)
+ {
+ printf("\t");
+ }
+ for (int j = (N-i-1); j
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 5
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerMatriz3Ascendente(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerMatriz3Ascendente(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i=N-1)
+ {
+ printf("%d,%d: %d\t", i, j, arr[i][j]);
+ }
+ else if(j>=(N-1)/2)
+ {
+ printf("\t");
+ }
+ }
+ printf("\n");
+ }
+}
\ No newline at end of file
diff --git a/ADAs/Greene/ADA4/Visual/recorrerMatriz3Descendente.c b/ADAs/Greene/ADA4/Visual/recorrerMatriz3Descendente.c
new file mode 100644
index 0000000..46d7d29
--- /dev/null
+++ b/ADAs/Greene/ADA4/Visual/recorrerMatriz3Descendente.c
@@ -0,0 +1,84 @@
+/**
+ * @file recorrerMatriz2Ascendente.c
+ * @author Carlos Enrique Greene Mex (greenecarlos17@gmail.com)
+ * @brief Programa que recorre la zona 3 de forma descendente y visual de una matriz de NxN
+ * @version 0.1
+ * @date 2020-03-22
+ *
+ * @copyright Copyright (c) 2020
+ *
+ */
+#include
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerMatriz3Descendente(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerMatriz3Descendente(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i=0; i--)
+ {
+ for (int j=0; j=N-1)
+ {
+ printf("%d,%d: %d\t", i, j, arr[i][j]);
+ }
+ else if(j>=(N-1)/2)
+ {
+ printf("\t");
+ }
+ }
+ printf("\n");
+ }
+}
\ No newline at end of file
diff --git a/ADAs/Greene/ADA4/Visual/recorrerMatriz4Ascendente.c b/ADAs/Greene/ADA4/Visual/recorrerMatriz4Ascendente.c
new file mode 100644
index 0000000..0c5ef68
--- /dev/null
+++ b/ADAs/Greene/ADA4/Visual/recorrerMatriz4Ascendente.c
@@ -0,0 +1,84 @@
+/**
+ * @file recorrerMatriz2Ascendente.c
+ * @author Carlos Enrique Greene Mex (greenecarlos17@gmail.com)
+ * @brief Programa que recorre la zona 4 de forma ascendente y visual de una matriz de NxN
+ * @version 0.1
+ * @date 2020-03-22
+ *
+ * @copyright Copyright (c) 2020
+ *
+ */
+#include
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerMatriz4Ascendente(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerMatriz4Ascendente(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i=j && aux>=N-1)
+ {
+ printf("%d,%d: %d\t", i, j, arr[i][j]);
+ }
+ else if(i>=(N-1)/2)
+ {
+ printf("\t");
+ }
+ }
+ printf("\n");
+ }
+}
\ No newline at end of file
diff --git a/ADAs/Greene/ADA4/Visual/recorrerMatriz4Descendente.c b/ADAs/Greene/ADA4/Visual/recorrerMatriz4Descendente.c
new file mode 100644
index 0000000..4a5de92
--- /dev/null
+++ b/ADAs/Greene/ADA4/Visual/recorrerMatriz4Descendente.c
@@ -0,0 +1,84 @@
+/**
+ * @file recorrerMatriz2Ascendente.c
+ * @author Carlos Enrique Greene Mex (greenecarlos17@gmail.com)
+ * @brief Programa que recorre la zona 4 de forma descendente y visual de una matriz de NxN
+ * @version 0.1
+ * @date 2020-03-22
+ *
+ * @copyright Copyright (c) 2020
+ *
+ */
+#include
+#include
+#include
+
+//Se define el valor de N como constante
+#define N 3
+
+/**
+ * @brief Prototipos de las funciones
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N]);
+void recorrerMatriz4Descendente(int arr[][N]);
+
+/**
+ * @brief Main donde inicia el programa
+ *
+ */
+int main()
+{
+ int arreglo[N][N];
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarArreglo(arreglo);
+
+ recorrerMatriz4Descendente(arreglo);
+
+ return 0;
+}
+
+/**
+ * @brief Función donde asigna los valores que va contener la matriz
+ *
+ * @param arr
+ */
+void asignarArreglo(int arr[][N])
+{
+ for(int i=0; i=0; i--)
+ {
+ for (int j=0; j=j && aux>=N-1)
+ {
+ printf("%d,%d: %d\t", i, j, arr[i][j]);
+ }
+ else if(i>=(N-1)/2)
+ {
+ printf("\t");
+ }
+ }
+ printf("\n");
+ }
+}
\ No newline at end of file
diff --git a/ADAs/Greene/ADA6/.vscode/c_cpp_properties.json b/ADAs/Greene/ADA6/.vscode/c_cpp_properties.json
new file mode 100644
index 0000000..603770a
--- /dev/null
+++ b/ADAs/Greene/ADA6/.vscode/c_cpp_properties.json
@@ -0,0 +1,20 @@
+{
+ "configurations": [
+ {
+ "name": "Win32",
+ "includePath": [
+ "${workspaceFolder}/**"
+ ],
+ "defines": [
+ "_DEBUG",
+ "UNICODE",
+ "_UNICODE"
+ ],
+ "compilerPath": "C:/MinGW/bin/gcc.exe",
+ "cStandard": "c11",
+ "cppStandard": "c++17",
+ "intelliSenseMode": "gcc-x64"
+ }
+ ],
+ "version": 4
+}
\ No newline at end of file
diff --git a/ADAs/Greene/ADA6/Ada6-Listas.c b/ADAs/Greene/ADA6/Ada6-Listas.c
new file mode 100644
index 0000000..d341050
--- /dev/null
+++ b/ADAs/Greene/ADA6/Ada6-Listas.c
@@ -0,0 +1,137 @@
+#include
+#include
+#include
+
+typedef struct animal
+{
+ int edad;
+ struct animal* siguiente;
+}Animal;
+typedef Animal *AnimalPtr;
+
+void insertarOrdenado(AnimalPtr*, int);
+AnimalPtr borrar(AnimalPtr, int);
+void imprimir(AnimalPtr);
+void menu();
+
+int main()
+{
+ AnimalPtr lista=NULL;
+ int _edad, opcion;
+ bool aux=false;
+
+ do
+ {
+ menu();
+ scanf("%d", &opcion);
+
+ switch (opcion)
+ {
+ case 1:
+ scanf("%d", &_edad);
+ insertarOrdenado(&lista, _edad);
+ break;
+
+ case 2:
+ scanf("%d", &_edad);
+ lista = borrar(lista, _edad);
+ break;
+
+ case 3:
+ imprimir(lista);
+ break;
+
+ default:
+ aux=true;
+ break;
+ }
+
+ } while (aux==false);
+ return 0;
+}
+
+void menu()
+{
+ printf("Menú\n");
+ printf("Elige uno de las opciones de acuerdo a su numero para realizar una accion\n");
+ printf("1.\tInsertar un elemento\n");
+ printf("2.\tBorrar un elemento\n");
+ printf("3.\tImprimir la lista\n");
+ printf("Para cerrar el programa preciona otro botón\n");
+}
+
+void insertarOrdenado(AnimalPtr *sPtr, int valor)
+{
+ AnimalPtr nuevo;
+ AnimalPtr anterior;
+ AnimalPtr actual;
+
+ nuevo = (Animal*)malloc(sizeof(Animal));
+ if (nuevo!=NULL)
+ {
+ nuevo->edad=valor;
+ nuevo->siguiente= NULL;
+
+ anterior=NULL;
+ actual=*sPtr;
+
+ while (actual!=NULL && valor>actual->edad)
+ {
+ anterior=actual;
+ actual=actual->siguiente;
+ }
+
+ if (anterior==NULL)
+ {
+ nuevo->siguiente=*sPtr;
+ *sPtr=nuevo;
+ }
+ else
+ {
+ anterior->siguiente=nuevo;
+ nuevo->siguiente=actual;
+ }
+ }
+ else
+ {
+ printf("Sorry men");
+ }
+
+}
+
+AnimalPtr borrar(AnimalPtr actual, int valor)
+{
+ AnimalPtr paraBorrar = NULL;
+ if (actual!=NULL)
+ {
+ if (actual->edad==valor)
+ {
+ paraBorrar=actual;
+ actual=actual->siguiente;
+ free(paraBorrar);
+ }
+ else
+ {
+ actual->siguiente=borrar(actual->siguiente, valor);
+ }
+ }
+ return actual;
+}
+
+void imprimir(AnimalPtr actual)
+{
+ if (actual==NULL)
+ {
+ printf("Sorry men, no hay elementos");
+ }
+ else
+ {
+ printf("Imprimir lista\n");
+ while (actual!=NULL)
+ {
+ printf("%d\n", actual->edad);
+ actual=actual->siguiente;
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/ADAs/Greene/ADA6/Ada6-Listas.exe b/ADAs/Greene/ADA6/Ada6-Listas.exe
new file mode 100644
index 0000000..7d50a9b
Binary files /dev/null and b/ADAs/Greene/ADA6/Ada6-Listas.exe differ
diff --git a/ADAs/Greene/ADA6/Ada6-ListasBusquedaBinaria.c b/ADAs/Greene/ADA6/Ada6-ListasBusquedaBinaria.c
new file mode 100644
index 0000000..a94b6a1
--- /dev/null
+++ b/ADAs/Greene/ADA6/Ada6-ListasBusquedaBinaria.c
@@ -0,0 +1,246 @@
+#include
+#include
+#include
+
+typedef struct animal
+{
+ int edad;
+ struct animal* siguiente;
+}Animal;
+typedef Animal *AnimalPtr;
+
+void menu(int *);
+void leerParaInsertar(int*);
+void insertarOrdenado(AnimalPtr*, int);
+void leerParaBorrar(int*);
+AnimalPtr borrar(AnimalPtr, int);
+void imprimirLista(AnimalPtr);
+void busquedaBinaria(AnimalPtr);
+void leerParaBusqueda(int *);
+int totalNodos(AnimalPtr);
+int compareTo(AnimalPtr, int, int);
+void imprimirBusqueda(int, int);
+
+
+int main()
+{
+ AnimalPtr lista=NULL;
+ int _edad, opcion;
+ bool aux=false;
+
+ do
+ {
+ menu(&opcion);
+
+ switch (opcion)
+ {
+ case 1:
+ leerParaInsertar(&_edad);
+ insertarOrdenado(&lista, _edad);
+ break;
+
+ case 2:
+ leerParaBorrar(&_edad);
+ lista = borrar(lista, _edad);
+ break;
+
+ case 3:
+ imprimirLista(lista);
+ break;
+
+ case 4:
+ busquedaBinaria(lista);
+ break;
+
+ default:
+ aux=true;
+ break;
+ }
+
+ } while (aux==false);
+ return 0;
+}
+
+void menu(int *opcion)
+{
+ printf("Menú\n");
+ printf("Elige uno de las opciones de acuerdo a su numero para realizar una accion\n");
+ printf("1.\tInsertar un elemento\n");
+ printf("2.\tBorrar un elemento\n");
+ printf("3.\tImprimir la lista\n");
+ printf("Para cerrar el programa preciona otro botón\n");
+ scanf("%d", opcion);
+}
+
+void leerParaInsertar(int *_edad)
+{
+ printf("\nIntroduce el dato que quieras insertar");
+ scanf("%d", _edad);
+}
+
+void insertarOrdenado(AnimalPtr *sPtr, int valor)
+{
+ AnimalPtr nuevo;
+ AnimalPtr anterior;
+ AnimalPtr actual;
+
+ nuevo = (Animal*)malloc(sizeof(Animal));
+ if (nuevo!=NULL)
+ {
+ nuevo->edad=valor;
+ nuevo->siguiente= NULL;
+
+ anterior=NULL;
+ actual=*sPtr;
+
+ while (actual!=NULL && valor>actual->edad)
+ {
+ anterior=actual;
+ actual=actual->siguiente;
+ }
+
+ if (anterior==NULL)
+ {
+ nuevo->siguiente=*sPtr;
+ *sPtr=nuevo;
+ }
+ else
+ {
+ anterior->siguiente=nuevo;
+ nuevo->siguiente=actual;
+ }
+ }
+ else
+ {
+ printf("\nSorry men");
+ }
+}
+
+void leerParaBorrar(int *_edad)
+{
+ printf("\nIntroduce el dato que quieras borrar");
+ scanf("%d", _edad);
+}
+
+AnimalPtr borrar(AnimalPtr actual, int valor)
+{
+ AnimalPtr paraBorrar = NULL;
+ if (actual!=NULL)
+ {
+ if (actual->edad==valor)
+ {
+ paraBorrar=actual;
+ actual=actual->siguiente;
+ free(paraBorrar);
+ }
+ else
+ {
+ actual->siguiente=borrar(actual->siguiente, valor);
+ }
+ }
+ return actual;
+}
+
+void imprimirLista(AnimalPtr actual)
+{
+ if (actual==NULL)
+ {
+ printf("\nSorry men, no hay elementos\n");
+ }
+ else
+ {
+ printf("Imprimir lista\n");
+ while (actual!=NULL)
+ {
+ printf("%d\n", actual->edad);
+ actual=actual->siguiente;
+ }
+ }
+
+}
+
+void busquedaBinaria(AnimalPtr nptr)
+{
+ int derecha, izquierda=0, mitad, _edad, resultado, aux=0, numNodo;
+
+ derecha=totalNodos(nptr);
+
+ leerParaBusqueda(&_edad);
+
+ while (izquierda<=derecha)
+ {
+ mitad=(izquierda+derecha)/2;
+ resultado=compareTo(nptr, _edad, mitad);
+
+ if (resultado==0)
+ {
+ numNodo=mitad;
+ aux=1;
+ break;
+ }
+ else if (resultado==1)
+ {
+ izquierda=derecha+1;
+ }
+ else if (resultado==-1)
+ {
+ derecha=mitad-1;
+ }
+ }
+ imprimirBusqueda(numNodo, aux);
+}
+
+int compareTo(AnimalPtr nptr, int _edad, int mitad)
+{
+ int resultado;
+
+ for(int i=0; isiguiente;
+ }
+
+ if (_edad==nptr->edad)
+ {
+ resultado=0;
+ }
+ else if (_edad>nptr->edad)
+ {
+ resultado=1;
+ }
+ else
+ {
+ resultado=-1;
+ }
+
+ return resultado;
+}
+
+void leerParaBusqueda(int *_edad)
+{
+ printf("Introduce la edad que buscas:");
+ scanf("%d", _edad);
+}
+
+int totalNodos(AnimalPtr nodo)
+{
+ int cont=0;
+
+ while (nodo->siguiente!=NULL)
+ {
+ cont++;
+ nodo=nodo->siguiente;
+ }
+ return cont;
+}
+
+void imprimirBusqueda(_numNodo, _aux)
+{
+ if (_aux==0)
+ {
+ printf("\nNo existe el dato que buscas");
+ }
+ else
+ {
+ printf("\nEl dato esta en el nodo %d", _numNodo);
+ }
+}
\ No newline at end of file
diff --git a/ADAs/Greene/ADA6/Ada6-Racionales.c b/ADAs/Greene/ADA6/Ada6-Racionales.c
new file mode 100644
index 0000000..99cad6e
--- /dev/null
+++ b/ADAs/Greene/ADA6/Ada6-Racionales.c
@@ -0,0 +1,198 @@
+#include
+
+typedef struct racional{
+ int numerador;
+ int denominador;
+}racional;
+
+void leerRacional(racional *, racional *);
+racional sumarRacional(racional, racional );
+racional restarRacionales(racional, racional );
+racional multiplicarRacionales(racional, racional);
+racional dividirRacionales(racional, racional);
+void simplificarRacional(racional *);
+void imprimirRacional(racional, racional, racional, racional);
+
+int main(){
+ racional r1, r2, r3, r4, r5, r6;
+
+ leerRacional(&r1, &r2);
+ r3 = sumarRacional(r1, r2);
+ r4 = restarRacionales(r1, r2);
+ r5 = multiplicarRacionales(r1, r2);
+ r6 = dividirRacionales(r1, r2);
+ imprimirRacional(r3, r4, r5, r6);
+
+ return 0;
+}
+
+void leerRacional(racional *r1, racional *r2)
+{
+ int numerador1, denominador1, numerador2, denominador2;
+ scanf("%d", &numerador1);
+ scanf("%d", &denominador1);
+ scanf("%d", &numerador2);
+ scanf("%d", &denominador2);
+
+ r1->numerador=numerador1;
+ r1->denominador=denominador1;
+ r2->numerador=numerador2;
+ r2->denominador=denominador2;
+
+}
+
+racional sumarRacional(racional r1, racional r2)
+{
+ racional resultados;
+ int numerador, denominador, d1, d2, mcm;
+
+ d1=r1.denominador;
+ d2=r2.denominador;
+
+ if (d1%d2==0 || d2%d1==0)
+ {
+ if (d1>d2)
+ {
+ mcm=d1;
+ }
+ else
+ {
+ mcm=d2;
+ }
+ }
+ else
+ {
+ mcm=d1*d2;
+ if (mcm%2==0)
+ {
+ if ((mcm/2)%d1==0 && (mcm/2)%d2==0)
+ {
+ mcm==mcm/2;
+ }
+ }
+
+ }
+
+ numerador = (r1.numerador*mcm/r1.denominador)+(r2.numerador*mcm/r2.denominador);
+ denominador = mcm;
+
+ resultados.numerador = numerador;
+ resultados.denominador = denominador;
+
+ simplificarRacional(&resultados);
+
+ return resultados;
+}
+
+racional restarRacionales(racional r1, racional r2)
+{
+ racional resultados;
+ int numerador, denominador, d1, d2, mcm;
+
+ d1=r1.denominador;
+ d2=r2.denominador;
+
+ if (d1%d2==0 || d2%d1==0)
+ {
+ if (d1>d2)
+ {
+ mcm=d1;
+ }
+ else
+ {
+ mcm=d2;
+ }
+ }
+ else
+ {
+ mcm=d1*d2;
+ if (mcm%2==0)
+ {
+ if ((mcm/2)%d1==0 && (mcm/2)%d2==0)
+ {
+ mcm==mcm/2;
+ }
+ }
+
+ }
+
+ numerador = (r1.numerador*mcm/r1.denominador)-(r2.numerador*mcm/r2.denominador);
+ denominador = mcm;
+
+ resultados.numerador = numerador;
+ resultados.denominador = denominador;
+
+ simplificarRacional(&resultados);
+
+ return resultados;
+}
+
+racional multiplicarRacionales(racional r1, racional r2)
+{
+ racional resultados;
+ int numerador, denominador;
+
+ numerador = r1.numerador*r2.numerador;
+ denominador = r1.denominador*r2.denominador;
+
+ resultados.numerador=numerador;
+ resultados.denominador=denominador;
+
+ simplificarRacional(&resultados);
+
+ return resultados;
+}
+
+racional dividirRacionales(racional r1, racional r2)
+{
+ racional resultados;
+ int numerador, denominador;
+
+ numerador = r1.numerador*r2.denominador;
+ denominador = r1.denominador*r2.numerador;
+
+ resultados.numerador=numerador;
+ resultados.denominador=denominador;
+
+ simplificarRacional(&resultados);
+
+ return resultados;
+}
+
+void simplificarRacional(racional *r1)
+{
+ int aux1=0, aux2=2;
+
+ if(r1->numerador<0){
+ r1->numerador = r1->numerador*(-1);
+ aux1++;
+ }
+ if(r1->denominador<0){
+ r1->denominador = r1->denominador*(-1);
+ aux1++;
+ }
+ while (aux2<=r1->numerador && aux2<=r1->denominador)
+ {
+ if (r1->numerador%aux2==0 && r1->denominador%aux2==0)
+ {
+ r1->numerador=r1->numerador/aux2;
+ r1->denominador=r1->denominador/aux2;
+ }
+ else
+ {
+ aux2++;
+ }
+ }
+ if(aux1==1)
+ {
+ r1->numerador=r1->numerador*(-1);
+ }
+}
+
+void imprimirRacional(racional r3, racional r4, racional r5, racional r6)
+{
+ printf("%d/%d \n", r3.numerador, r3.denominador);
+ printf("%d/%d \n", r4.numerador, r4.denominador);
+ printf("%d/%d \n", r5.numerador, r5.denominador);
+ printf("%d/%d \n", r6.numerador, r6.denominador);
+}
\ No newline at end of file
diff --git a/ADAs/Greene/ADA6/Ada6-Racionales.exe b/ADAs/Greene/ADA6/Ada6-Racionales.exe
new file mode 100644
index 0000000..27fb8e2
Binary files /dev/null and b/ADAs/Greene/ADA6/Ada6-Racionales.exe differ
diff --git a/ADAs/Greene/ADA6/Ada6-Sudoku.c b/ADAs/Greene/ADA6/Ada6-Sudoku.c
new file mode 100644
index 0000000..766315b
--- /dev/null
+++ b/ADAs/Greene/ADA6/Ada6-Sudoku.c
@@ -0,0 +1,140 @@
+#include
+#include
+#include
+#include
+
+typedef struct tableroMenor
+{
+ int matriz[3][3];
+} tableroMenor;
+
+typedef struct sudoku
+{
+ tableroMenor tableroCompleto[3][3];
+} sudoku;
+
+void asignarValores(sudoku *);
+bool verificadorMatriz(int, int _matriz[][3], int, int);
+bool verificadorLineas(int, int _seudoMatriz[][9], int, int);
+bool verificadorColumnas(int, int _seudoMatriz[][9], int, int);
+void imprimirSudoku(sudoku);
+
+int main()
+{
+ sudoku sudoku;
+ time_t t;
+
+ srand((unsigned) time(&t));
+
+ asignarValores(&sudoku);
+
+ imprimirSudoku(sudoku);
+
+ return 0;
+}
+
+void asignarValores(sudoku *_sudoku)
+{
+ int aux1, seudoSudoku[9][9];
+ bool aux2, aux3, aux4;
+ for(int i=0; i<3; i++)
+ {
+ for (int j=0; j<3; j++)
+ {
+ for (int x = 0; x < 3; x++)
+ {
+ for (int y = 0; y < 3; y++)
+ {
+ do
+ {
+ aux1=1+rand() %9;
+ seudoSudoku[x+i*3][y+j*3]=aux1;
+ _sudoku->tableroCompleto[i][j].matriz[x][y]=aux1;
+ aux2=verificadorMatriz(aux1, _sudoku->tableroCompleto[i][j].matriz, x, y);
+ aux3=verificadorLineas(aux1, seudoSudoku, x+i*3, y+j*3);
+ aux4=verificadorColumnas(aux1, seudoSudoku, x+i*3, y);
+ } while (aux2==false || aux3==false || aux4==false);
+ }
+ }
+ }
+ }
+}
+
+bool verificadorMatriz(int num, int _matriz[][3], int x, int y)
+{
+ for (int i = 0; i < 3; i++)
+ {
+ for (int j = 0; j < 3; j++)
+ {
+ if (num==_matriz[i][j])
+ {
+ if (i==x && j==y)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+
+ }
+ }
+ }
+}
+
+bool verificadorLineas(int num, int _seudoMatriz[][9], int x, int y)
+{
+ for (int i = 0; i < 9; i++)
+ {
+ if (num==_seudoMatriz[i][y])
+ {
+ if (x==i)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+
+ }
+ }
+}
+
+bool verificadorColumnas(int num, int _seudoMatriz[][9], int x, int y)
+{
+ for (int i = 0; i < 9; i++)
+ {
+ if (num==_seudoMatriz[x][i])
+ {
+ if (y==i)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+
+ }
+ }
+}
+
+
+void imprimirSudoku(sudoku _sudoku)
+{
+ for(int i=0; i<3; i++)
+ {
+ for (int j=0; j<3; j++)
+ {
+ for (int x=0; x<3; x++)
+ {
+ for (int y=0; y<3; y++)
+ {
+ printf("%d\t", _sudoku.tableroCompleto[i][x].matriz[j][y]);
+ }
+ }
+ printf("\n");
+ }
+ }
+}
\ No newline at end of file
diff --git a/ADAs/Greene/ADA6/Ada6-Sudoku.exe b/ADAs/Greene/ADA6/Ada6-Sudoku.exe
new file mode 100644
index 0000000..fbd3950
Binary files /dev/null and b/ADAs/Greene/ADA6/Ada6-Sudoku.exe differ
diff --git a/ADAs/Greene/Ejercicio30marzo.c b/ADAs/Greene/Ejercicio30marzo.c
new file mode 100644
index 0000000..9c9641f
--- /dev/null
+++ b/ADAs/Greene/Ejercicio30marzo.c
@@ -0,0 +1,191 @@
+#include
+
+struct racional{
+ int numerador;
+ int denominador;
+};
+
+void leerRacional(struct racional *r1, struct racional *r2);
+struct racional sumarRacional(struct racional r1, struct racional r2);
+struct racional restarRacionales(struct racional r1, struct racional r2);
+struct racional multiplicarRacionales(struct racional r1, struct racional r2);
+struct racional dividirRacionales(struct racional r1, struct racional r2);
+void simplificarRacional(struct racional *r1);
+void imprimirRacional(struct racional r3, struct racional r4, struct racional r5, struct racional r6);
+
+main(){
+ struct racional r1, r2, r3, r4, r5, r6;
+
+ leerRacional(&r1, &r2);
+ r3 = sumarRacional(r1, r2);
+ r4 = restarRacionales(r1, r2);
+ r5 = multiplicarRacionales(r1, r2);
+ r6 = dividirRacionales(r1, r2);
+ imprimirRacional(r3, r4, r5, r6);
+
+ return 0;
+}
+
+void leerRacional(struct racional *r1, struct racional *r2)
+{
+ int numerador1, denominador1, numerador2, denominador2;
+ scanf("%d", &numerador1);
+ scanf("%d", &denominador1);
+ scanf("%d", &numerador2);
+ scanf("%d", &denominador2);
+
+ r1->numerador=numerador1;
+ r1->denominador=denominador1;
+ r2->numerador=numerador2;
+ r2->denominador=denominador2;
+
+}
+
+struct racional sumarRacional(struct racional r1, struct racional r2)
+{
+ struct racional resultados;
+ int numerador, denominador, d1, d2, mcm;
+
+ d1=r1.denominador;
+ d2=r2.denominador;
+
+ if (d1%d2==0 || d2%d1==0)
+ {
+ if (d1>d2)
+ {
+ mcm=d1;
+ }
+ else
+ {
+ mcm=d2;
+ }
+ }
+ else
+ {
+ mcm=d1*d2;
+ if (mcm%2==0)
+ {
+ if ((mcm/2)%d1==0 && (mcm/2)%d2==0)
+ {
+ mcm==mcm/2;
+ }
+ }
+ }
+
+ numerador = (r1.numerador*mcm/r1.denominador)+(r2.numerador*mcm/r2.denominador);
+ denominador = mcm;
+
+ resultados.numerador = numerador;
+ resultados.denominador = denominador;
+
+ simplificarRacional(&resultados);
+
+ return resultados;
+}
+
+struct racional restarRacionales(struct racional r1, struct racional r2)
+{
+ struct racional resultados;
+ int numerador, denominador, d1, d2, mcm;
+
+ d1=r1.denominador;
+ d2=r2.denominador;
+
+ if (d1%d2==0 || d2%d1==0)
+ {
+ if (d1>d2)
+ {
+ mcm=d1;
+ }
+ else
+ {
+ mcm=d2;
+ }
+ }
+ else
+ {
+ mcm=d1*d2;
+ if (mcm%2==0)
+ {
+ if ((mcm/2)%d1==0 && (mcm/2)%d2==0)
+ {
+ mcm==mcm/2;
+ }
+ }
+
+ }
+
+ numerador = (r1.numerador*mcm/r1.denominador)-(r2.numerador*mcm/r2.denominador);
+ denominador = mcm;
+
+ resultados.numerador = numerador;
+ resultados.denominador = denominador;
+
+ simplificarRacional(&resultados);
+
+ return resultados;
+}
+
+struct racional multiplicarRacionales(struct racional r1, struct racional r2)
+{
+ struct racional resultados;
+ int numerador, denominador;
+
+ numerador = r1.numerador*r2.numerador;
+ denominador = r1.denominador*r2.denominador;
+
+ simplificarRacional(&resultados);
+
+ return resultados;
+}
+
+struct racional dividirRacionales(struct racional r1, struct racional r2)
+{
+ struct racional resultados;
+ int numerador, denominador;
+
+ numerador = r1.numerador*r2.denominador;
+ denominador = r1.denominador*r2.numerador;
+
+ simplificarRacional(&resultados);
+
+ return resultados;
+}
+
+void simplificarRacional(struct racional *r1)
+{
+ int aux1=0, aux2=2;
+
+ if(r1->numerador<0){
+ r1->numerador = r1->numerador*(-1);
+ aux1++;
+ }
+ if(r1->denominador<0){
+ r1->denominador = r1->denominador*(-1);
+ aux1++;
+ }
+ while (aux2<=r1->numerador && aux2<=r1->denominador)
+ {
+ if (r1->numerador%aux2==0 && r1->denominador%aux2==0)
+ {
+ r1->numerador=r1->numerador/aux2;
+ r1->denominador=r1->denominador/aux2;
+ }
+ else
+ {
+ aux2++;
+ }
+ }
+ if(aux1==1)
+ {
+ r1->numerador=r1->numerador*(-1);
+ }
+}
+
+void imprimirRacional(struct racional r3, struct racional r4, struct racional r5, struct racional r6)
+{
+ printf("%d/%d \n", r3.numerador, r3.denominador);
+ printf("%d/%d \n", r4.numerador, r4.denominador);
+ printf("%d/%d \n", r5.numerador, r5.denominador);
+ printf("%d/%d \n", r6.numerador, r6.denominador);
+}
\ No newline at end of file
diff --git a/Unidad 2-Estructuras de Control/Ejercicio04.c b/Unidad 2-Estructuras de Control/Ejercicio04.c
new file mode 100644
index 0000000..06c28ed
--- /dev/null
+++ b/Unidad 2-Estructuras de Control/Ejercicio04.c
@@ -0,0 +1,47 @@
+//Equipo4
+//Fecha 10/02/2020
+//Autor: Carlos Greene
+//Programa que redondea un número a la centena próxima
+//Entrada: Numero entero positivo
+//Salida: Número redondeado a la centena próxima
+#include