[ Foro de C# ]

Ejercicio 4.1.3.6

19-Apr-2020 14:12
MVC MVC
2 Respuestas

Buenas tardes, he estado intentando este código y además de no poder completarlo bien me queda muy farragoso. Con lo que debería saber hasta ahora me gustaría saber como mejorarlo (por que obviamente, ademas de estar mal, esta farragoso).

Me ha roto los esquemas no poder usar comparadores booleanos con dos strings, lo que me habría solucionado todo el problema.

Os dejo mi código  espero que podáis ayudarme, un saludo.


/*(4.1.3.6) Un programa que pida 10 nombres y los memorice (pista: esta vez se
trata de un array de "string"). Después deberá pedir que se teclee un nombre y
dirá si se encuentra o no entre los 10 que se han tecleado antes. Volverá a pedir
otro nombre y a decir si se encuentra entre ellos, y así sucesivamente hasta que se
teclee "fin".*/

using System;

public class Ej_4_1_3_6
{
	public static void Main()
	{
		string[] Nombres= new string[10];
		string Nomint;
		
		for(int v=0;v<10;v++)
				{
				Console.WriteLine("escribe el nombre {0}: ", (v+1));
				Nombres[v] = Convert.ToString(Console.ReadLine());
				}
					
		Console.WriteLine("Escribe un nombre y te dire si pertenece a los nombres que has ibntroducido (si quieres acabar escribe fin): ");
		Nomint = Convert.ToString(Console.ReadLine());
		
		while (Nomint != "fin")
		{
			
			if (Nomint == (Nombres[0]))
					Console.WriteLine("{0} esta entre tu lista de nombres\a",Nomint);
			if (Nomint == (Nombres[1]))
					Console.WriteLine("{0} esta entre tu lista de nombres\a",Nomint);
			if (Nomint == (Nombres[2]))
					Console.WriteLine("{0} esta entre tu lista de nombres\a",Nomint);
			if (Nomint == (Nombres[3]))
					Console.WriteLine("{0} esta entre tu lista de nombres\a",Nomint);
			if (Nomint == (Nombres[4]))				
					Console.WriteLine("{0} esta entre tu lista de nombres\a",Nomint);
			if (Nomint == (Nombres[5]))
					Console.WriteLine("{0} esta entre tu lista de nombres\a",Nomint);
			if (Nomint == (Nombres[6]))
					Console.WriteLine("{0} esta entre tu lista de nombres\a",Nomint);
			if (Nomint == (Nombres[7]))
					Console.WriteLine("{0} esta entre tu lista de nombres\a",Nomint);
			if (Nomint == (Nombres[8]))
					Console.WriteLine("{0} esta entre tu lista de nombres\a",Nomint);
			if (Nomint == (Nombres[9]))
					Console.WriteLine("{0} esta entre tu lista de nombres\a",Nomint);
							
			else
					Console.WriteLine("{0} no esta entre tu lista de nombres",Nomint);
			
			Console.WriteLine("Escribe un nombre y te dire si pertenece a los nombres que has introducido (si quieres acabar escribe fin): ");
			Nomint= Convert.ToString(Console.ReadLine());
			
		}
		
		Console.WriteLine("Gracias por jugar");
	}
}

Al principio en vez de tal cantidad de ifs hice esto pero ya veo que el compilador me lo rechazaba.

while (Nomint != "fin")
		{
			
			if (Nomint == (Nombres[0]|| Nombres[1]|| Nombres[2] || Nombres[3] || Nombres[4] || Nombres[5] || Nombres[6] || Nombres[7] || Nombres [8]|| Nombres [9]))
					Console.WriteLine("{0} esta entre tu lista de nombres\a",Nomint);
			else
					Console.WriteLine("{0} no esta entre tu lista de nombres",Nomint);
			
			Console.WriteLine("Escribe un nombre y te dire si pertenece a los nombres que has introducido (si quieres acabar escribe fin): ");
			Nomint= Convert.ToString(Console.ReadLine());


Muchas gracias de antemano.

Un saludo


17-May-2020 13:29
MVC MVC

Buenas! refloto el post a ver quien puede ayudar. un saludo!


17-May-2020 18:46
Nacho Cabanes (+84)

No puedes comparar con los 10 elementos del array de forma individual. Si ahora es trabajoso, imagino si tuvieras 1.000 datos, o un millón.

Deberás llevar un booleano para ver si aparece, o un contador de cuántas veces se ha encontrado.

Mira este apartado del curso:

https://www.aprendeaprogramar.com/cursos/verApartado.php?id=4033
 






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)