Прежде всего вы захотите перечитать документацию для for-
и while-loops
. Там есть несколько полезных страниц, например для / , а .
Проблема
Причина, по которой ваш л oop перерывы - это то, что вы инициализируете i
с помощью 0
.
int i = 0;
Внутри вашего l oop вы используете if
-статаль, чтобы разбить l oop, если условие "i
is 0
" встречается.
if (i == 0)
{
min = input;
break;
}
Вводимые пользователем данные для каждой итерации l oop игнорируются вашей программой, поскольку вы никогда не сохраняете такую информацию ни в одной переменной.
while (input != 0)
{
Console.ReadLine();
// ...
}
Возможное решение
Для начинающих полезно решать задачи шаг за шагом. Попробуйте записать каждый из этих шагов, чтобы определить простой алгоритм. Поскольку существует много решений этой проблемы, один из возможных способов может быть следующим:
- Объявить минимальное значение + присвоить ему максимальное значение
- Использовать while l oop и l oop пока не будет выполнено указанное c условие
- Считайте введенные пользователем данные и попробуйте преобразовать их в целое число
- Проверьте, равно ли значение 0
- 4.1. Если значение равно 0, go с шагом 8
- 4.2. Если значение не равно 0, go с шагом 5
- Проверьте, меньше ли значение текущего минимального значения
- 5.1. Если значение меньше, go с шагом 6
- 5.2. Если значение не меньше, go вернуться к шагу 3
- Установить новый минимум
- Go вернуться к шагу 3
- Break l oop
- Конечная программа
Программа, которая обрабатывает вышеуказанные шаги, может выглядеть следующим образом:
using System;
namespace FindMinimum
{
public class Program
{
static void Main(string[] args)
{
// Declare minimum value + assign initial value
int minValue = int.MaxValue;
// Loop until something else breaks out
while (true)
{
Console.WriteLine("Please insert any number...");
// Read io and try to parse it to int
bool parseOk = int.TryParse(Console.ReadLine(), out int num);
// If the user did not provide any number, let him retry
if (!parseOk)
{
Console.WriteLine("Incorrect input. Please insert numbers only.");
continue;
}
// If the user typed in a valid number and that number is zero, break out of the loop
if (parseOk && num == 0)
{
break;
}
// If the user typed in a valid number and that number is smaller than the minimum-value, set the new minimum
if (parseOk && num < minValue)
{
minValue = num;
}
}
// Print the result to the console
Console.WriteLine($"Minimum value: {minValue}.");
// Keep console open
Console.ReadLine();
}
}
}