0 / 0 / 0
Регистрация: 15.07.2019
Сообщений: 69

Как заставить код принять с консоли сразу несколько переменных?

15.07.2019, 05:42. Показов 1137. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Никак не могу заставить его брать сразу несколько переменных с консоли в части кода:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 for (int x = 0; x < M; x++)
            {
                for (int y = 0; y < 2; y++)
                {
 
                    if (y == 0)
                    { *//Чисто для юзерфрендли отображения
 
 * * * * * * * * * * * *Console.Write($"Введите значение Длины для ступеньки №{x + 1}= ");
                    }
                    else
                    {
 
                        Console.Write($"Введите значение Высоты для ступеньки №{x + 1}= ");
                    }
                    mass[x, y] = Convert.ToInt32(Console.ReadLine());
                }
                Console.WriteLine();
            }
Если нужно вот весь код:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Археологи_строители
{
    class Program
    {
        static void Main(string[] args)
        {
            //Объявляем и задаем переменные "M" и "N", а так же переменную для результата
            int M, N = new int();
            int MyResult = 0;
 
            Console.WriteLine("Ведите Текущее количество ступенек и Сколько их должно быть:");
            string[] OutS = Console.ReadLine().Split(' ');
            M = Convert.ToInt32(OutS[0]);
            N = Convert.ToInt32(OutS[1]);
 
            // Создаем массив для хранения данных о ступенях. M-Количество ступенек, Цифра - для колонок длины и высоты
            int[,] mass = new int[M, 2];
 
            // Запись значений в массив
            for (int x = 0; x < M; x++)
            {
                for (int y = 0; y < 2; y++)
                {
 
                    if (y == 0)
                    { *//Чисто для юзерфрендли отображения
 
 * * * * * * * * * * * *Console.Write($"Введите значение Длины для ступеньки №{x + 1}= ");
                    }
                    else
                    {
 
                        Console.Write($"Введите значение Высоты для ступеньки №{x + 1}= ");
                    }
                    mass[x, y] = Convert.ToInt32(Console.ReadLine());
                }
                Console.WriteLine();
            }
 
            /* Как оказалось, самый простой способ определить какую же ступеньку надо "поднимать"-
             * это вычислить площадь гипотетически "заполняемого" пространства над ступенькой и взять
             * наименьшее значение.
             * 
             * Итак, допустим если у нас 5 ступенек, то нам нам необходимо записать 4 значения
             * (в рамках лестницы) площади заполняемых ступенек.
             * 
             * Перемножаем Длину ступеньки N на высоту ступеньки N+1, M-1 раз и сохраняем в массив
             */
            int M2 = M; //Дублируем изначальное число ступенек для контроля цикла
            for (int z = 0; z < M2 - N; z++)
            {
                int[] acreage = new int[M - 1];
 
                for (int x = 0; x < M - 1; x++)
                {
                    for (int y = 0; y < 2; y++)
                    {
                        acreage[x] = mass[x, 0] * mass[x + 1, 1];
                    }
                }
                /*
                 * И так у нас есть все значения гипотетически заполняемой ступеньки.
                 * Ищем минимальное значение площади 
                 */
                int minAcreage = acreage[0];
                for (int i = 0; i < M - 1; i++)
                {
                    if (minAcreage > acreage[i])
                    {
                        minAcreage = acreage[i];
                    }
                }
 
                MyResult = MyResult + minAcreage; //Плюсуем данное значение в переменную результата
 
                // У нас есть минимальная площадь. Найдем номер данной ступеньки
                int IndexAcreage = Array.IndexOf(acreage, minAcreage);
 
                //"Достроим нужную нам ступеньку и запишем обновленные данные во временный массив"
                int[,] tempMass = new int[M - 1, 2]; //Он на размер меньше, т.к. и "полных" ступенек у нас стало меньше
 
 
                for (int x = 0; x < M - 1; x++)
                {
                    for (int y = 0; y < 2; y++)
                    {
 
                        //Ступеньки до IndexAcreage мы просто переписываем во временный массив
                        if (x < IndexAcreage)
                        {
                            tempMass[x, y] = mass[x, y];
                        }
 
                        //2 ступеньки от IndexAcreage мы превращаем в одну (застраивая их блоками)
                        else if (x == IndexAcreage)
                        {
                            tempMass[x, y] = mass[x, y] + mass[x + 1, y];
                        }
 
                        /* и после IndexAcreage мы та же копируем, но со сдвигом вправо, т.к. полноценных 
                         * ступенек стало меньше
                         */
                        else if (x > IndexAcreage)
                        {
                            tempMass[x, y] = mass[x + 1, y];
                        }
                    }
                }
 
                M = M - 1; //Поскольку ступенек теперь меньше, то и их фактическое число необходимо уменьшить
                for (int x = 0; x < M + 1; x++)
                {
                    for (int y = 0; y < 2; y++)
                    {
                        mass[x, y] = 0;
                    }
                }
 
 
                //переписываем данные в основной массив и запускаем следющую интерацию цикла
                for (int x = 0; x < M; x++)
                {
                    for (int y = 0; y < 2; y++)
                    {
                        mass[x, y] = tempMass[x, y];
                    }
                }
            }
            Console.WriteLine($"Минимально необходимое число блоков: {MyResult}");
            Console.ReadKey(true);
 
        }
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.07.2019, 05:42
Ответы с готовыми решениями:

Как принять с консоли сразу несколько переменных?
Пример: int i; Console.WriteLine (&quot;Введите значение i&quot;); i = Convert.ToInt32 (Console.ReadLine()); А мне нужно с одной команды...

Как ввести сразу несколько переменных через пробелы?
Например, в С++ это было так: cin &gt;&gt; a &gt;&gt; b &gt;&gt; с; А в Python так: num1,num2,num3 = input().split(&quot; &quot;) Как такое можно реализовать на...

Как заставить JIT откомпилировать весь код сразу?
При запуске программы возникают тормоза при первом обращении к методам около 3 сек, потом все работает мгновенно Начал разбираться ...

1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16150 / 11271 / 2890
Регистрация: 21.04.2018
Сообщений: 33,142
Записей в блоге: 2
15.07.2019, 10:25
Цитата Сообщение от Bluestick Посмотреть сообщение
Никак не могу заставить его брать сразу несколько переменных с консоли в части кода:
Bluestick, вы же не на Фортране 30-лет назад работаете?!
Это C# современный язык ООП. Что за выкрутасы с
C#
22
23
            // Создаем массив для хранения данных о ступенях. M-Количество ступенек, Цифра - для колонок длины и высоты
            int[,] mass = new int[M, 2];
В массиве должны храниться однотипные даны, имеющие одинаковый смысл.
Создайте тип для обозначения ступеньки, определите в нём парсинг из строки.
Для переменных дайте нормальные имена по которым понятно для чего они.

Пример реализации
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
    /// <summary>Класс данных для одной ступеньки</summary>
    public class StepClass
    {
        /// <summary>Длина ступеньки</summary>
        public int Length { get; set; }
        /// <summary>Высота ступеньки</summary>
        public int Height { get; set; }
 
        /// <summary>Создание нового экземпляра из строки</summary>
        /// <param name="source">Строка с данными</param>
        /// <returns>Новый экземпляр StepClass с данными из строки</returns>
        /// <remarks>Метод создаёт новый экземпляр StepClass из полученной строки.
        /// В строке должны быть записанны целые числа разделённые слешем '/'.
        /// Первое число длина ступеньки, второе - высота.
        /// Если строка содержит неправильные данные - выкидывается исключение</remarks>
        public static StepClass Parse(string source)
        {
            string[] src = source.Split('/');
            return new StepClass()
            {
                Length = int.Parse(src[0].Trim()),
                Height = int.Parse(src[1].Trim())
            };
        }
 
        /// <summary>Создание нового экземпляра из строки</summary>
        /// <param name="source">Строка с данными</param>
        /// <param name="step">Новый экземпляр или null</param>
        /// <returns><see langword="true"/> если удалось создать новый экземпляр</returns>
        /// <remarks>Метод создаёт новый экземпляр StepClass из полученной строки.
        /// В строке должны быть записаны целые числа разделённые слешем '/'.
        /// Первое число длина ступеньки, второе - высота.
        /// Если строка содержит неправильные данные - возвращается <see langword="false"/></remarks>
        public static bool TryParse(string source, out StepClass step)
        {
            try
            {
                step = Parse(source);
                return true;
            }
            catch (Exception)
            {
                step = null;
                return false;
            }
        }
    }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
                Console.WriteLine("Ведите Текущее количество ступенек и, через пробел, Сколько их должно быть:");
                string[] OutS = Console.ReadLine().Split(' ');
                int countStepsCurrent = Convert.ToInt32(OutS[0]);
                int countStepsTarget = Convert.ToInt32(OutS[1]);
                StepClass[] steps = new StepClass[countStepsCurrent];
 
                // Запись значений в массив
                for (int x = 0; x < countStepsCurrent; x++)
                {
                    bool tryParse = true;
                    do
                    {
                        Console.Write($"Введите значение Длины и Высоты (через слеш '/') для ступеньки №{x + 1}= ");
                        if (tryParse = !StepClass.TryParse(Console.ReadLine(), out steps[x]))
                            Console.Write("Ошибка ввода! Повторите ввод!");
                    } while (tryParse);
                }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.07.2019, 10:25
Помогаю со студенческими работами здесь

Как считать с консоли сразу несколько чисел через пробел в одной строке?
Есть два вопроса. 1)Как например считать число с консоли. Я пишу int a = Console.Read(); Console.Write(Convert.ToString(a)); ...

Как заставить apache + php принимать сразу несколько http запросов?
Как заставить apache + php принимать сразу несколько http запросов не дожидаясь окончания остальных у одно и того же клиента? Суть в том...

Как установить сразу несколько переменных среды?
Здравствуйте!Мне нужно установить хотя бы 2 переменных среды для path переменной или 2 строковые переменные пути к интерпритаторам python и...

Как сразу задать несколько переменных в одном InputBox ?
Я ввожу в свой скрипт несколько переменных: plata = InputBox(&quot;Введите номер платы&quot;,&quot;Ввод данных&quot;) 'ввожу цифры от 1 до 10 pon =...

Как вывести в название консоли несколько переменных?
Как вывести в название консоли несколько переменных? Что-бы там было ( a = переменная и b = переменная ).


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru