Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.10.2016, 17:46   #1
Keniro
Пользователь
 
Регистрация: 27.09.2015
Сообщений: 21
Вопрос Ввод данных с клавиатуры в одномерный массив. C#

Здравствуйте. У нас есть массив из 16 элементов, с клавиатуры вводятся 16 различных цифр подряд (1234567890675923) после того как мы ввели цифры программа проверяет не вышел ли пользователь за пределы массива. Например, если он ввел 17 цифр то программа напишет что пользователь ввел более 16 цифр и вернет его обратно на ввод.
Keniro вне форума Ответить с цитированием
Старый 09.10.2016, 19:24   #2
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Не напутай в количестве девяток (999999....)


60.jpg

Последний раз редактировалось ura_111; 09.10.2016 в 19:32.
ura_111 вне форума Ответить с цитированием
Старый 10.10.2016, 10:59   #3
armory
Пользователь
 
Аватар для armory
 
Регистрация: 06.10.2016
Сообщений: 37
По умолчанию

не нравится мне решение ura_111

поэтому у меня вопросы:
- можно ли здесь реализовать более простой вариант через проверку Length для строки?
- можно ли здесь ввести защиту от дурака, чтобы пользователь не мог физически ввести более # символов?
- если я введу букву, это приведёт к Exception, значит код уже уязвим к ошибкам;
- зачем мы пишем long a = 1, если далее мы объявляем эту переменную как вводимую пользователем? проще написать тогда long a = <парс или конвертация>;
- что более эффективно с точки зрения написания кода: парсинг или конвертация?
- я бы разбил программу на мейн + подпрограмму ввода, в подпрограмме будет выполняться задача, а в мейне будет проверяться условие корректности ввода; и при бОльшем количестве символов, будет снова отправлять в подпрограмму.
Учусь кодить на C#/Java.
Не ищу готовых решений.
Всегда благодарен вам за помощь.
armory вне форума Ответить с цитированием
Старый 10.10.2016, 11:03   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от armory Посмотреть сообщение
- можно ли здесь реализовать более простой вариант через проверку Length для строки?
- можно ли здесь ввести защиту от дурака, чтобы пользователь не мог физически ввести более # символов?
можно конечно


Цитата:
Сообщение от armory Посмотреть сообщение
- что более эффективно с точки зрения написания кода: парсинг или конвертация?
Что такое парсинг и конвертация? Как по вашему конвертация работает?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 10.10.2016, 11:21   #5
armory
Пользователь
 
Аватар для armory
 
Регистрация: 06.10.2016
Сообщений: 37
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Что такое парсинг и конвертация? Как по вашему конвертация работает?
я, к сожалению, пока не очень разобрался в отличиях "механики" между TryParse/<тип переменной>.Parse и Convert.To<тип переменной>
поэтому я и спросил что из них с точки зрения построения кода более эффективно работает? а также интересует в плане продуктивности взаимодействия с ОЗУ и скорости билда и выполнения самой программы
Учусь кодить на C#/Java.
Не ищу готовых решений.
Всегда благодарен вам за помощь.
armory вне форума Ответить с цитированием
Старый 10.10.2016, 11:39   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Они почти одинаковые
https://referencesource.microsoft.co...onvert.cs,1112


Цитата:
Сообщение от armory Посмотреть сообщение
с точки зрения построения кода более эффективно работает
это как?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 10.10.2016 в 11:58.
Alex11223 вне форума Ответить с цитированием
Старый 10.10.2016, 12:09   #7
armory
Пользователь
 
Аватар для armory
 
Регистрация: 06.10.2016
Сообщений: 37
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
это как?
подразумевались скорости компиляции и работы кода внутри скомпилированной программы
Учусь кодить на C#/Java.
Не ищу готовых решений.
Всегда благодарен вам за помощь.
armory вне форума Ответить с цитированием
Старый 10.10.2016, 16:26   #8
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

Цитата:
Сообщение от armory Посмотреть сообщение
я, к сожалению, пока не очень разобрался в отличиях "механики" между TryParse/<тип переменной>.Parse и Convert.To<тип переменной>
поэтому я и спросил что из них с точки зрения построения кода более эффективно работает? а также интересует в плане продуктивности взаимодействия с ОЗУ и скорости билда и выполнения самой программы
Не могу утверждать, но последнее требует ещё и всякой рефлексивной магии, поэтому может быть не эффективной
Parse кидает исключения, поэтому может быть не эффективно, если там сплошные ошибки в входных данных (редкая ситуация, если не жопорук)
TryParse может быть эффективнее Parse, да и более читаемо при валидации

P. s. если упёрся в скорость этих операций, то стоит пойти к хирургу и руки пересадить на плечи... грубо, но, поверь, это признак абсолютно кривой постановки\решения задачи
GreenWizard вне форума Ответить с цитированием
Старый 10.10.2016, 16:35   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от GreenWizard Посмотреть сообщение
Не могу утверждать, но последнее требует ещё и всякой рефлексивной магии, поэтому может быть не эффективной
Если версию принимающую object вызывать, то будет каст к IConvertible (стандартные типы его реализуют, например String https://referencesource.microsoft.co...string.cs,3341).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 10.10.2016, 17:23   #10
armory
Пользователь
 
Аватар для armory
 
Регистрация: 06.10.2016
Сообщений: 37
По умолчанию

Цитата:
Сообщение от GreenWizard Посмотреть сообщение
P. s. если упёрся в скорость этих операций, то стоит пойти к хирургу и руки пересадить на плечи... грубо, но, поверь, это признак абсолютно кривой постановки\решения задачи
нисколько не упирался, мне лишь было интересно много ли я могу выиграть в производительности при оптимизации кода в таких вещах
спасибо
Учусь кодить на C#/Java.
Не ищу готовых решений.
Всегда благодарен вам за помощь.
armory вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввод данных с клавиатуры NataPl Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 7 16.09.2013 15:14
java, массив, цикл и ввод с клавиатуры. Mcduff Помощь студентам 4 06.11.2012 18:15
Ввод данных с клавиатуры (Eclipse) k0tone Помощь студентам 0 28.01.2011 21:38
ввод данных с клавиатуры juden Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 07.05.2008 18:05