Skip to content

Commit adf4f7e

Browse files
authored
Merge pull request mouredev#4394 from jamerrq/roadmap-22
#22 - C#
2 parents c7377d5 + bd49b24 commit adf4f7e

File tree

1 file changed

+125
-0
lines changed
  • Roadmap/22 - FUNCIONES DE ORDEN SUPERIOR/c#

1 file changed

+125
-0
lines changed
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
/*
2+
* EJERCICIO:
3+
* Explora el concepto de funciones de orden superior en tu lenguaje
4+
* creando ejemplos simples (a tu elección) que muestren su funcionamiento.
5+
*
6+
* DIFICULTAD EXTRA (opcional):
7+
* Dada una lista de estudiantes (con sus nombres, fecha de nacimiento y
8+
* lista de calificaciones), utiliza funciones de orden superior para
9+
* realizar las siguientes operaciones de procesamiento y análisis:
10+
* - Promedio calificaciones: Obtiene una lista de estudiantes por nombre
11+
* y promedio de sus calificaciones.
12+
* - Mejores estudiantes: Obtiene una lista con el nombre de los estudiantes
13+
* que tienen calificaciones con un 9 o más de promedio.
14+
* - Nacimiento: Obtiene una lista de estudiantes ordenada desde el más joven.
15+
* - Mayor calificación: Obtiene la calificación más alta de entre todas las
16+
* de los alumnos.
17+
* - Una calificación debe estar comprendida entre 0 y 10 (admite decimales).
18+
*/
19+
20+
using System;
21+
22+
namespace Roadmap22
23+
{
24+
class SuperFunctions
25+
{
26+
public static double Average(double[] numbers)
27+
{
28+
double sum = 0;
29+
foreach (double number in numbers)
30+
{
31+
sum += number;
32+
}
33+
return sum / numbers.Length;
34+
}
35+
36+
public static double Max(double[] numbers)
37+
{
38+
double max = numbers[0];
39+
foreach (double number in numbers)
40+
{
41+
if (number > max)
42+
{
43+
max = number;
44+
}
45+
}
46+
return max;
47+
}
48+
49+
public static double Min(double[] numbers)
50+
{
51+
double min = numbers[0];
52+
foreach (double number in numbers)
53+
{
54+
if (number < min)
55+
{
56+
min = number;
57+
}
58+
}
59+
return min;
60+
}
61+
62+
public static double[] Filter(double[] numbers, Func<double, bool> condition)
63+
{
64+
int count = 0;
65+
foreach (double number in numbers)
66+
{
67+
if (condition(number))
68+
{
69+
count++;
70+
}
71+
}
72+
73+
double[] result = new double[count];
74+
int index = 0;
75+
foreach (double number in numbers)
76+
{
77+
if (condition(number))
78+
{
79+
result[index] = number;
80+
index++;
81+
}
82+
}
83+
84+
return result;
85+
}
86+
87+
public static double[] Map(double[] numbers, Func<double, double> operation)
88+
{
89+
double[] result = new double[numbers.Length];
90+
for (int i = 0; i < numbers.Length; i++)
91+
{
92+
result[i] = operation(numbers[i]);
93+
}
94+
return result;
95+
}
96+
97+
public static double[] Reduce(double[] numbers, Func<double, double, double> operation)
98+
{
99+
double result = numbers[0];
100+
for (int i = 1; i < numbers.Length; i++)
101+
{
102+
result = operation(result, numbers[i]);
103+
}
104+
return new double[] { result };
105+
}
106+
107+
public static void Main(string[] args)
108+
{
109+
double[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
110+
111+
Console.WriteLine("Average: " + Average(numbers));
112+
Console.WriteLine("Max: " + Max(numbers));
113+
Console.WriteLine("Min: " + Min(numbers));
114+
115+
double[] evenNumbers = Filter(numbers, number => number % 2 == 0);
116+
Console.WriteLine("Even numbers: " + string.Join(", ", evenNumbers));
117+
118+
double[] squaredNumbers = Map(numbers, number => number * number);
119+
Console.WriteLine("Squared numbers: " + string.Join(", ", squaredNumbers));
120+
121+
double[] sum = Reduce(numbers, (a, b) => a + b);
122+
Console.WriteLine("Sum: " + sum[0]);
123+
}
124+
}
125+
}

0 commit comments

Comments
 (0)