@TargeT_PoweR

Как заполнять массив введёнными пользователем числами?

Здравствуйте.
Столкнулся с непростой для себя задачей:

Пользователь вводит числа, и программа их запоминает.
Как только пользователь введёт команду sum, программа выведет сумму всех веденных чисел.
Выход из программы должен происходить только в том случае, если пользователь введет команду exit.
Программа должна работать на основе расширения массива.
Внимание, нельзя использовать List и Array.Resize

Моё решение выглядело как :

int sum = 0;
int[] firstMas = new int[0];
while (true)
{
string userInput = Console.ReadLine();
if (userInput == "exit")
{
break;
}
else if (userInput == "sum")
{
Console.WriteLine("Сумма введённых чисел равна " + sum);
break;
}
int[] secondMas = new int[firstMas.Length + 1];
int number = Convert.ToInt32(userInput);
secondMas[secondMas.Length - 1] = number;
firstMas = secondMas;
sum += number;
Console.WriteLine("Длинна массива: " + firstMas.Length);

Решение не приняли, вопрос - в чём мои ошибки?
  • Вопрос задан
  • 2452 просмотра
Решения вопроса 1
twobomb
@twobomb
Ваш вариант, исправленный
int[] firstMas = new int[0];
            while (true) {
                string userInput = Console.ReadLine();
                if (userInput == "exit")
                {
                    break;
                }
                else if (userInput == "sum")
                {
                    int sum = 0;
                    for (int i = 0; i < firstMas.Length; i++)
                        sum += firstMas[i];
                        Console.WriteLine("Сумма введённых чисел равна " + sum);
                }
                else
                {
                    int[] secondMas = new int[firstMas.Length + 1];
                    int number = Convert.ToInt32(userInput);
                    secondMas[secondMas.Length - 1] = number;
                    for (int i = 0; i < firstMas.Length; i++)
                        secondMas[i] = firstMas[i];
                    firstMas = secondMas;
                    Console.WriteLine("Длинна массива: " + firstMas.Length);
                }

Новый вариант
int[] arr = new int[0];
            while (true){
                string s = Console.ReadLine();
                switch (s){
                    case "exit":
                        return;
                    case "sum":
                        Console.WriteLine(String.Format("Сумма введённых чисел = '{0}'", arr.Sum()));
                        break;
                    default:
                        int result;
                        if (int.TryParse(s, out result))
                            arr = arr.Concat(new int[] { result }).ToArray();
                        break;

                }
            }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы