Universidad Abierta y a Distancia de México
Programación NET I.
Unidad 3
Actividad EA: Programa en C# que utilice
condiciones y ciclos.
Alumno: Yair Gigael Basilio López
Matrícula: ES17200648
Tabla de contenido
Instrucciones:.............................................................................................................3
Problema 1.................................................................................................................3
Problema 2.................................................................................................................4
Código........................................................................................................................5
Pantallas de funcionamiento del programa...............................................................8
Referencias..............................................................................................................10
Instrucciones:
Analiza cada uno de los problemas siguientes, para ello puedes apoyarte de
diagramas de flujo, historias de usuario, pseudocódigo u otro elemento que te
facilite la comprensión del problema, la solución de los mismos debe incluir
estructuras de control cíclicas y/o estructuras de control selectivas cíclicas y
cíclicas.
Problema 1
Un fotógrafo tomó muchas fotografías en películas en color y en blanco y negro.
Luego lo desarrolló y tradujo a una forma digital. Pero ahora, las fotos en color y
en blanco y negro están en una carpeta y, para ordenarlas, ¡es necesario dedicar
mucho tiempo!
Debes ayudarlo de la siguiente forma aplicando tu conocimiento en programación.
La foto se puede representar como una matriz de tamaño n × m, y cada elemento
de la matriz almacena un símbolo que indica el color de píxel correspondiente.
Solo hay 6 colores:
'C' (cian)
'M' (magenta)
'Y' (amarillo)
'W' (blanco)
'G' (gris)
'B' (negro)
La foto se considera en blanco y negro si solo tiene píxeles blancos, negros y
grises. Si hay alguno de los píxeles cian, magenta o amarillo en la foto, se
considera en color.
Entrada
La primera línea de la entrada contiene dos números enteros n y m (1 ≤ n, m ≤
100): el número de filas y columnas de la matriz de píxeles de la foto,
respectivamente.
Luego siguen n líneas que describen filas de matriz. Cada uno de ellos contiene m
caracteres separados por espacios que describen los colores de los píxeles en
una fila. Cada carácter de la línea es uno de los 'C', 'M', 'Y', 'W', 'G' o 'B'.
Salida
Imprime el "# Blanco y Negro" (sin comillas), si la foto es en blanco y negro y el
"#Color" (sin comillas), si es de color, en la única línea.
Problema 2
Tiene n cubos. Decidió construir una pirámide a partir de ellos. Quiere construir la
pirámide de la siguiente manera: el nivel superior de la pirámide debe constar de 1
cubo, el segundo nivel debe constar de 1 + 2 = 3 cubos, el tercer nivel debe tener
1 + 2 + 3 = 6 cubos, y así sucesivamente. Por lo tanto, el i-ésimo nivel de la
pirámide debe tener 1 + 2 + ... + (i - 1) + i cubos.
Quiere saber cuál es la altura máxima de la pirámide que puede hacer usando los
cubos dados.
Entrada
La primera línea contiene el número entero n (1 ≤ n ≤ 104), el número de cubos
que le dio el usuario.
Salida
Imprime la altura máxima posible de la pirámide en una sola línea.
Código.
Solución de ambos problemas con un menú que nos ayuda a seleccionar cual de
ambos problemas queremos ingresar la información para que sea procesada.
using System;
namespace U3EvidenciaAprendizaje
{
class EvidenciAprendizaje
{
public void fotoIdentificador()
{
int n, m;
String tipoFoto = "";
Console.WriteLine("Ingrese los siguientes datos de la matriz: ");
Console.Write("ingrese el numero de FILAS: ");
n = Convert.ToInt32(Console.ReadLine());
Console.Write("ingrese el numero de COLUMNAS: ");
m = Convert.ToInt32(Console.ReadLine());
String[,] pixeles = new String[n,m];
if (n >= 1 && n <= 100 && m >= 1 && m <= 100)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
Console.Write("Ingrese los valores de la FILA " + (i + 1) +
" Columna " + (j + 1) +": ");
pixeles[i, j] = Console.ReadLine();
}
}
Console.WriteLine("Foto ingresada: ");
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
Console.Write(pixeles[i, j] + " ");
}
Console.WriteLine();
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if (pixeles[i, j] == "W" || pixeles[i, j] == "G" ||
pixeles[i, j] == "B")
{
tipoFoto = "#Blanco y negro";
}
else if (pixeles[i, j] == "C" || pixeles[i, j] == "M" ||
pixeles[i, j] == "Y")
{
tipoFoto = "#Color";
break;
}
else
{
tipoFoto = "FOTO INVALIDA";
}
}
if (tipoFoto == "#Color")
{
break;
}
}
Console.WriteLine("La foto es: " + tipoFoto + "\n");
}
else
{
Console.WriteLine("Numeros de FILAS o CILUMNAS muy altos o
invalidos, INTENTA OTRA VEZ \n");
}
}
public void piramide()
{
int x;
Console.WriteLine("Ingrese el número de cajas con las que se armará la
piramide, (X >= 1 y X <= 104) ");
x = Convert.ToInt32(Console.ReadLine());
if (x == 1)
{
Console.WriteLine("Altura de piramide: 1 nivel \n");
}
else if (x >= 4 && x <= 9)
{
Console.WriteLine("Altura de piramide: 2 niveles \n");
}
else if (x >= 10 && x <= 19)
{
Console.WriteLine("Altura de piramide: 3 niveles \n");
}
else if (x >= 20 && x <= 34)
{
Console.WriteLine("Altura de piramide: 4 niveles \n");
}
else if (x >= 35 && x <= 55)
{
Console.WriteLine("Altura de piramide: 5 niveles \n");
}
else if (x >= 56 && x <= 83)
{
Console.WriteLine("Altura de piramide: 6 niveles\n");
}
else if (x >= 84 && x <= 104)
{
Console.WriteLine("Altura de piramide: 7 niveles \n");
}
else if (x > 104)
{
Console.WriteLine("Numero muy alto intenta otra vez \n");
}
else
{
Console.WriteLine("Numero invalido, INTENTA OTRA VEZ \n");
}
}
static void Main(string[] args)
{
EvidenciAprendizaje z = new EvidenciAprendizaje();
int opcion = 0;
do
{
Console.WriteLine("Elija una opción: ");
Console.WriteLine("1.- Revisar Foto");
Console.WriteLine("2.- Piramide de cajas");
Console.WriteLine("3.- Salir \n");
opcion = int.Parse(Console.ReadLine());
Console.WriteLine();
switch (opcion)
{
case 1:
z.fotoIdentificador();
break;
case 2:
z.piramide();
break;
case 3:
break;
default:
Console.WriteLine("OPCION NO VALIDA, INTENTA OTRA VEZ" +
"\n");
break;
}
} while (opcion != 3);
}
}
}
Pantallas de funcionamiento del programa.
Referencias
MyCyberAcademy. (09 de Febrero de 2013). YouTube. Obtenido de Tutorial C# -
13 - Ciclo FOR: https://www.youtube.com/watch?v=BjewFZKBsOo
UNADM. (2021). campus.unadmexico.mx. Obtenido de ampus.unadmexico.mx:
https://campus.unadmexico.mx/contenidos/DCEIT/BLOQUE1/DS/05/DPRN
1/U3/descargables/Unidad%203.%20Estructuras%20de%20control.pdf