Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 15.07.2019
Сообщений: 69

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

15.07.2019, 05:42. Показов 1123. Ответов 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
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,110
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Программный отбор элементов справочника Номенклатура по группе 1С
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор под наименованию группы (на. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор элементов справочника Сотрудники по перечислениям 1С
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru