Nuevas instrucciones de las cuales no estaba al tanto:
-
Environment.Exit(0);
Terminar de ejecutar el programa. -
Array.IndexOf(userNames, userToSearch);
Buscar dato en especifico en un Array y obtener la posición de ese dato.
Introducción a C#
¿Por qué aprender C#? ¿Para qué sirve?
Instalación de Visual Studio Community
Conoce .NET 6
Introducción a Visual Studio y nuestro primer "Hola, mundo" en consola
¡Nuestro primer "Hola, mundo" en una aplicación gráfica!
¿Cómo funcionan los Namespaces en C#?
Lógica de programación
Tipos de datos
Variables
Manejo de strings
Trabajando con números y operadores aritméticos
Operadores lógicos
Operadores relacionales
Cómo leer datos de un usuario en C#
Arreglos en C#
Listas
Métodos o methods
Métodos de strings
Cómo crear tus propios métodos
Bucles y estructuras de control en C#
La sentencia if
La sentencia switch
Ciclo for
Ciclo while
Proyecto
Introducción del proyecto: sistema de registros de usuarios
Creando la búsqueda y el registro de usuarios
Finalizado del proyecto: mostrando la lista de usuarios registrados
Tus siguientes pasos con C#
POO: tu siguiente paso con C#
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
No se trata de lo que quieres comprar, sino de quién quieres ser. Aprovecha el precio especial.
Antes: $249
Paga en 4 cuotas sin intereses
Termina en:
Ricardo Celis
Aportes 21
Preguntas 3
Nuevas instrucciones de las cuales no estaba al tanto:
Environment.Exit(0);
Terminar de ejecutar el programa.
Array.IndexOf(userNames, userToSearch);
Buscar dato en especifico en un Array y obtener la posición de ese dato.
Hola,
Si como yo, siguieron al pie de la letra el código (full copy page 😀🤙🏽) y no les funcionó como se ve en la lección, es debido a que falta código que me puso la clase en modo díficil jajaja. En el min 7:20 nuestro querido maestro “termina” el bloque de código y pasa a ejecutar directamente, aquí esta el easter egg 😬.
ANTES
DESPUÉS
Las líneas que hacían falta tienen un trabajo MUY IMPORTANTE, no tenerlas implica que el programa no funcioné (hablo desde mi experiencia 👎🏽😢). Una línea te va a indicar que el nombre en efecto se guardó y a pesar de que su ausencia no rompa el código igual es lindo saber en la interfaz que si entró el dato; y la otra línea arrayCurrenIndex;++ evita que cambiemos el mismo nombre de la casilla de nuestro array por la eternidad y sobreescribamos el mismo espacio del array sin guardar los nombres ya ingresados🙄😥; en lugar de eso si agregamos esta línea, avanzaremos por la listar de arrays hasta llegar al último espacio, en este caso el décimo nombre de nuestro comensal guardando los nombres ya ingresados en las casillas anteriores.
…
Espero te haya ayudado si también te pasó esto. Saludos ✌🏽🤠
El Array.IndexOf no me lo sabía en C#, solo lo conocía del lado de JS. Excelente, anotado!
Ahí va mi código
string[] userNames = new string[10] { "Marco", "", "", "", "", "", "", "", "", "" };
int arrayCurrentIndex = 1;
string isRegisteredUser;
Console.WriteLine("Welcome to the best restaurent in the world!");
while (true)
{
Console.WriteLine("Are you a registred user? Y/N: ");
isRegisteredUser = Console.ReadLine();
if (isRegisteredUser == "Y")
{
//Es un usuario registrado
Console.WriteLine("Please, enter your user name: ");
string userToSearch = Console.ReadLine();
Console.WriteLine("The user you searched is {0}", userToSearch);
if (userNames.Contains(userToSearch))
{
Console.WriteLine("Welcome {0}, It/s a pleasure to give you food", userToSearch);
}
else
{
Console.WriteLine("Sorry, user not found, please try again: ");
}
}
else
{
//No es un usuario registrado
if(arrayCurrentIndex <= 9)
{
Console.WriteLine("Please, enter your name");
string userToPost = Console.ReadLine();
userNames[arrayCurrentIndex] = userToPost;
Console.WriteLine("User {0} has been registered!", userToPost);
arrayCurrentIndex++;
}
else
{
Console.WriteLine("Reservations are over!");
}
}
}
Coloque una extra. Es una validacion en caso de que la persona escriba false, no repita un usuario ya existente.
using System;
/*
* 1-Validar si es usuario existente y registrarse o login.
* 2-El programa debe ser capaz de darle la bienvenida al usuario si existe.
* 3-El programa debe repetirse hasta que se registre los 10 comensales.
*/
namespace Restaurante10TableReservationSystem
{
class Program
{
static void Main(string[] args)
{
string[] userNames = new string[10] { "", "", "","","","","","","","" };
int arrayCurrentIndex = 0;
bool userType;
Console.WriteLine("Welcome to the Best Restuarant in the World!");
while (true)
{
if(arrayCurrentIndex== 10)
{
Console.WriteLine("The register is full, try again next year");
Environment.Exit(0); //Le dice a C++ que el programa termino de ejecutar.
}
Console.WriteLine("\n \n Are you registered user? Write True or false to register");
userType = Convert.ToBoolean(Console.ReadLine());
if(userType == true)
{
Console.WriteLine("Welcome, you a registered user, please enter your user ID");
string userToSearch = Console.ReadLine(); //Se usa variable inline cuando solo se va a usar una vez.
Console.WriteLine("The user is : {0}", userToSearch); //El 0 representa la posicion de las variables.
int index = Array.IndexOf(userNames, userToSearch); //1 Donde vas a buscar . 2-Que vas a buscar.
if(index == -1)
{
Console.WriteLine("User not found, try again or register");
}
else
{
Console.WriteLine("Welcome {0}, it is a pleasure to give your food", userNames[index]);
}
}
else if(userType== false){
Console.WriteLine("Please write and remember your username");
userNames[arrayCurrentIndex] = Console.ReadLine();
int prueba = Array.IndexOf(userNames, userNames[arrayCurrentIndex]);
if(prueba != -1)
{
Console.WriteLine("Your has been succesfully \n" + "Your username is : {0}", userNames[arrayCurrentIndex]);
arrayCurrentIndex++;
}
else
{
Console.WriteLine("This user is registered");
}
}
}
}
}
}
Mejoré mi código y añadí para que se pudieran registrar, aunque si en registrar presionan la tecla enter sin escribir nada, lo toma como que se ha registrado correctamente, pues originalmente el array no tiene nada (""). Podria ponerse una serie de caracteres en cada array para que nadie se pueda logear sin antes haberse registrado, y cuando se registran, se sobreescriben esos caracteres que vendrian siendo un “placeholder”.
Código normal:
string[] usernames = new string[10] {"", "", "", "", "", "", "", "", "", ""};
Console.WriteLine("Welcome to the best restaurant of the world!");
for (var i = 0; i < 10; i++)
{
Console.WriteLine("\nCurrently, we have " + (10 - i) + " reservation slots left.\nAre you registered? Type y for yes, or n for no");
string strRegistered = Console.ReadLine();
switch (strRegistered)
{
case "y":
bool isRegistered = true;
Console.WriteLine("You are a registered user, please type your username");
string userToSearch = Console.ReadLine();
Console.WriteLine("Searching for " + userToSearch + "...");
int doesUserExist = Array.IndexOf(usernames, userToSearch);
if (doesUserExist == -1)
{
Console.WriteLine(userToSearch + " is not registered on our data base");
i = i - 1;
}
else
{
Console.WriteLine("Welcome, " + usernames[i] + "! You are the " + (i + 1) + "° user of the year to reserve a table");
}
break;
case "n":
isRegistered = false;
Console.WriteLine("To register yourself, please type your username");
usernames[i] = Console.ReadLine();
Console.WriteLine("User " + usernames[i] + " has been successfully registered. You can now log in to reserve a table");
i = i - 1;
break;
default:
Console.WriteLine("Error: invalid answer, please try again");
i = i - 1;
break;
}
}```
Inicio del código cambiado para hacerlo aleatorio y que no se logeen con una cuenta que no es
Random rnd = new Random();
long placeholder = Convert.ToInt64(rnd.Next(1, 32767) * rnd.Next(1, 32767) - rnd.Next(1, 1073676289));
string[] usernames = new string[10] { Convert.ToString(placeholder), Convert.ToString(placeholder), Convert.ToString(placeholder), Convert.ToString(placeholder), Convert.ToString(placeholder), Convert.ToString(placeholder), Convert.ToString(placeholder), Convert.ToString(placeholder), Convert.ToString(placeholder), Convert.ToString(placeholder)};
Console.WriteLine(“Welcome to the best restaurant of the world!”);```
Pueden hacer que Console.WriteLine diga el placeholder para comprobar que, efectivamente, puede tomar valores tanto positivos como negativos, aumentando aun mas la complejidad
Array.IndexOf: Busca el objeto especificado y devuelve el índice de su primera aparición en una matriz unidimensional o en un rango de elementos de la matriz.
En general es mala práctica utilizar el método Exit(0) de la clase Environment para salir del bucle, en su lugar se debe controlar el fin del ciclo en el mismo while con una sentencia como:
bool isRegisterUserFull = false;
while(!isRegisterUserFull)
{
//sentencias
if(arrayCurrentIndex == userName.Length)
{
isRegisterUserFull = true;
}
}
Finalice mi version del projecto para el restaurante “La caldera del caos”
using System;
namespace CSharpDotnet
{
// 1- Generar un sistema de registro o login
// 2- Validar si es usuario existente o si debe registrar
// 3- Dar la bienvenida si el usuario existe
// 4- Debe repetirse hasta que 10 usuarios esten registrados
class Program
{
static void Main(string[] args)
{
int index;
string[] listaReserva = new string[10];
Console.WriteLine("\nBienvenido al caldero del Caos.\n" +
"Estimados comensales, por este medio informamos que solo podremos realizar 10\n" +
"reservas en total. Las primeras 10 personas en registrarse podran obtener una reserva");
for (int i = 0; i < listaReserva.Length; i++)
{
bool dejeloPasar = false;
do
{
int opcion;
Console.WriteLine("\nPara ver el estado de su reserva, necesita ingresar con su cuenta. " +
"\nIngrese el numero de la accion que desee realizar:" +
"\n 1- Iniciar Sesion\n 2- Registrarse\n Seleccion: ");
opcion = Convert.ToInt32(Console.ReadLine());
switch (opcion)
{
case 1:
Console.WriteLine("\nIngrese su nombre de usuario: ");
string loginUsuario = Console.ReadLine();
index = Array.IndexOf(listaReserva, loginUsuario);
if (index != -1)
{
i--;
dejeloPasar = true;
Console.WriteLine($"\nBienvenido {listaReserva[index]}. Usted tiene una reserva para este dia.");
break;
}
else
{
Console.WriteLine("\nUsted no tiene una reserva. Puede solicitar una reserva registrandose.");
}
break;
case 2:
Console.WriteLine("\nIngrese el nombre de usuario para poder registrar su reserva: ");
string usuario = Console.ReadLine();
index = Array.IndexOf(listaReserva, usuario);
if (index != -1)
{
Console.WriteLine($"\nEl usuario {usuario} ya esta registrado");
break;
} else
{
dejeloPasar = true;
Console.WriteLine($"\nBienvenido {usuario}, su reserva ha sido registrada");
listaReserva[i] = usuario;
Console.WriteLine($"\n{i + 1}/{listaReserva.Length} reservas realizadas. Aun se pueden realizar otra reserva");
}
break;
default:
Console.WriteLine("\nIngrese una opcion valida.");
break;
}
} while (dejeloPasar == false);
if (i == 9)
{
string aviso = "\nYa no se pueden realizar mas reservas. ";
string listado = "Los usuarios con reserva son los siguientes: \n";
Console.WriteLine(aviso + listado);
for (int j = 0; j < listaReserva.Length; j++) { Console.WriteLine(listaReserva[j]); }
Console.WriteLine("\nMuchas gracias por su preferencia.");
}
}
}
}
}
Yo lo realicé de esta manera, es una forma fácil de verlo:
for(short i=0;i<=10;i++)
{
Console.WriteLine(“Esta usted registrado? Escriba si o no”);
string escritura_usuario = Console.ReadLine();
if (escritura_usuario == "si")
{
Console.WriteLine("Digite su usuario por seguridad");
string usuario1 = Console.ReadLine();
Console.WriteLine("Bienvenido " + usuario1+ "Usted es el usuario numero "+ i);
}
else if (escritura_usuario == "no")
{
Console.WriteLine("Digite su usuario para la creacion de usuario");
string usuario2 = Console.ReadLine();
Console.WriteLine("Felicidades " + usuario2 + "acaba de crear su usuario, usted es el usuario numero "+i);
}
}
Algo bueno que pense es en validar que si alguien escribe false y repite un nombre que ya existe, se lo rechace.
Les comparto mi solucion no lo hice igual que en el video pero el resultado es el mismo:
List<string> reservas = new List<string>();
while(reservas.Count() <= 10)
{
Console.WriteLine("Ingrese el usuario");
string user = Console.ReadLine();
if (reservas.Count() < 10)
{
if (reservas.Contains(user))
{
Console.WriteLine($"Bienvenido {user} ya cuentas con una reserva \n");
}
else
{
reservas.Add(user);
Console.WriteLine($"reserva realizada con exito para el usuario {user}");
Console.WriteLine($"actualmente se llevan {reservas.Count()} reservas \n");
}
}
else
{
Console.WriteLine("Excedido el maximo de reservas");
break;
}
}
Yo queriendo ir mas adelantado a la clase para buscar si el usuario existia cree un codigo bien gaucho XD
Console.WriteLine("Ingrese su usuario: ");
string whoYouare = Console.ReadLine();
for (int i = 0; i < users.Length; i++) {
if (users[i] == whoYouare)
{
userLog = true;
} else
{
userLog = false;
}
Bueno ahora se que existe Array.IndexOf
Se puede simplificar el id escribiendo if (userType) en lugar de if (userType == true)
Hola compañeros yo hice el ejercicio de está forma con mi lógica espero les sirva:
class Program
{
static void Main(string[] args)
{
//Arrelo con las 10 posiciones para los usuarios
string[] comensales;
comensales = new string[] { "", "", "", "", "", "", "", "", "", "" };
Console.WriteLine("Bienvenido al restaurante X ingrese su nombre para registrar");
string user;
int contadorArreglo = 0;
int contador = 0;
while (contadorArreglo < 10)
{
Console.WriteLine("Ingrese su nombre");
user = Console.ReadLine();
int indice = Array.IndexOf(comensales, user);
if (indice > -1)
{
Console.WriteLine("El nombre de usuario: " + user + " ya se encuentra registrado");
}
else
{
Console.WriteLine("Bienvenido " + user + " te has registrado correctamente, bienvenido al restaurante X");
comensales[contadorArreglo] = user;
contadorArreglo++;
}
}
Console.WriteLine("Gracias por venir al restaurante X, ya tenemos todas nuestras reservas llenas por los siguientes clientes:");
Console.WriteLine("Por favor venir el ano que viene");
foreach (string cliente in comensales)
{
Console.WriteLine("Cliente {0}, con nombre {1}", contador+1, comensales[contador]);
contador++;
}
}
}
string[] userName = new string[10] { " ", " ", " ", " ", " ", " ", " ", " ", " ", " "};
bool arrayComplete=false;
int i = 0;
string name;
while (arrayComplete == false)
{
Console.WriteLine(“Desea registrar un nuevo cliente? si/no”);
string resp = Console.ReadLine();
if (resp == "si")
{
Console.WriteLine("\nIngrese el nombre");
name = Console.ReadLine();
int check = Array.IndexOf(userName, name);
if (check == -1)
{
userName[i] = name;
i++;
Console.WriteLine($"Bienvenido {name} a nuestro restaurante");
Console.WriteLine($"\nla cantidad de usuarios ingresados hasta el momento son {i}/10\n");
if (i == 10)
{
Console.WriteLine("\nListado completado. La lista de clientes completa es: ");
for (int j = 0; j < 10; j++)
{
Console.WriteLine($"{j + 1}.- {userName[j]}");
}
arrayComplete = true;
}
}
else
{
Console.WriteLine("\nUsuario ya ingresado. Los usuarios ingresados hasta el momento son: ");
for (int j = 0; j < 10; j++)
{
Console.WriteLine($"{j + 1}.- {userName[j]}");
}
Console.WriteLine(" ");
}
} else if(resp=="no")
{
Console.WriteLine("\nlos clientes ingresados hasta el momento son: ");
for (int j = 0; j < 10; j++)
{
Console.WriteLine($"{j + 1}.- {userName[j]}");
}
Console.WriteLine(" ");
}
}
Asi me quedó haciendolo yo mismo
Repasando ando
Yo lo habia realizado la busqueda con un for
for (int i = 0; i < userToSearch.Length; i++)
{
if (userNames[i] == userToSearch)
{
Console.WriteLine($"Okay {userToSearch} welcome, please sit down");
break;
}
else
{
Console.WriteLine("You are a not registred, please register");
userType = false;
}
}
Gran clase que esto se reduce a unas lineas de codigo
Hago mi aporte de código un poco distinto, espero les sirva:
using System;
using System.Collections.Generic;
/*
1· Validar si es usuario existente o si se debe registrar, y generar un sistema de registro o login
2· El programa, debe ser capaz de darle la bienvenida a un usuario existente si en efecto existe
3· El programa debe repetirse hasta que se registren las 10 personas
*/
namespace restaurantSystem
{
class Program
{
static void Main(string[] args)
{
List<String> personas = new List<String>(10);
string nombre = "";
do
{
Console.WriteLine("------------------------------------------------------------------------------");
Console.WriteLine("\n¡Hola, bienvenido al sistema del restaurante Tilin!");
Console.Write("¿Usted se encuentra registrado en el sistema? (s/n): ");
char option = char.Parse(Console.ReadLine());
switch(option)
{
case 's':
Console.Write("Ingrese su nombre:");
nombre = Console.ReadLine();
if (personas.Contains(nombre))
Console.WriteLine($"Bienvenido Sr. {nombre}, su mesa esta lista");
else
Console.WriteLine($"El usuario {nombre} no se encuentra registrado actualmente, intente registrarse");
break;
case 'n':
Console.Write("Por favor, ingrese su nombre:");
nombre = Console.ReadLine();
personas.Add(nombre);
Console.WriteLine($"El usuario {nombre} fue registrado exitosamente");
break;
default:
Console.WriteLine("Opción invalida, intentalo de nuevo...");
break;
}
} while (personas.Count < 3);
Console.WriteLine("Las personas registradas son: ");
foreach (string persona in personas)
Console.WriteLine(persona);
}
}
}
Here is my code 😃
using System;
//1. Validate if the user exists or must be registered and generate a login
//2. Welcome to the user if exists
//3. The program must be repeated till be registered 10 peoples
namespace usersRegister
{
class Program
{
static void Main(string[] args)
{
string[] userNames = new string[10] {
"", "", "", "", "", "", "", "", "", ""
};
int userCounter = 0;
while (userCounter<10)
{
Console.WriteLine("Welcome to our Michelin restaurant");
Console.WriteLine("*Art and gastronomy have always formed a perfect tandem* \nDo you want to live the experience?\nType true if you want to go for it, else type false to close the app");
bool isEnter = Convert.ToBoolean(Console.ReadLine());
if (isEnter) {
Console.WriteLine("Please introduce your name to check if you have reservation for today");
string userToSearch = Console.ReadLine();
if (Array.Exists(userNames, element => element == userToSearch))
{
Console.WriteLine("You have a reservation in our restaurant, welcome " + userToSearch + "\nWe are pleasant to serve you food");
Console.Clear();
}
else
{
Console.WriteLine("You are have no reservation, but we have space.\nPlease, enter your name if you want to reserve a table \n");
string name = Console.ReadLine();
if (name != userToSearch)
{
Console.WriteLine("Please, write your name again, there is a typo mistake");
name = Console.ReadLine();
}
userNames[userCounter] = name;
userCounter++;
Console.WriteLine("Congrats " + name + " now you have a reservation in our restaurant!\n");
Console.Clear();
}
}else
{
Console.WriteLine("Come back another time when you feel ready to take this challenge!!!");
Environment.Exit(0);
}
}
Console.WriteLine("****GEST_LIST****");
for(int i = 0; i<userNames.Length; i++)
{
Console.WriteLine(i+1 + " --- " + userNames[i]);
}
Console.WriteLine("*******************");
if (userCounter == 10) {
Console.WriteLine("Sorry, we are out of space, you can come back the next year");
}
Environment.Exit(0);
}
}
}
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?