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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2018, 15:37   #1
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию Размер массива

Здравствуйте!
Начал изучать шарп, вроде всё понятно, но есть некоторые вопросы. Вот например, массивы размером не константные, но в то же время нельзя использовать ввод размера массива в процессе исполнения пользователем.
Подскажите пожалуйста, почему так?
KAMLS вне форума Ответить с цитированием
Старый 25.05.2018, 16:40   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от KAMLS Посмотреть сообщение
но в то же время нельзя использовать ввод размера массива в процессе исполнения пользователем.
А кто Вам запрещает?
Код:
    int n;
    Console.WriteLine("Enter size of index:");
    n= int.Parse(Console.ReadLine());
    int [] myarray = new int[n];
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.05.2018, 07:35   #3
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Всё-таки это возможно!! С++ меня своей строгостью совсем зашугал!
А если массив уже заполнен и я решил изменить размер массива, то есть повтор ввода n. Это допустимо?
А скажите ещё пожалуйста, почему консоль при выполнении программы не задерживается в С#? В С++ это помогал сделать _getche, а тут как?
KAMLS вне форума Ответить с цитированием
Старый 26.05.2018, 08:02   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от KAMLS Посмотреть сообщение
С++ меня своей строгостью совсем зашугал!
Я вас удивлю, но:
Код:
int* myarray = new int[n];
сработает и в С++.

Цитата:
Сообщение от KAMLS Посмотреть сообщение
В С++ это помогал сделать _getche, а тут как?
В С. В С++ cin.get().

Цитата:
Сообщение от KAMLS Посмотреть сообщение
А скажите ещё пожалуйста, почему консоль при выполнении программы не задерживается в С#?
Потому что как и во всех других языках - что написали, то и выполняется. Программа завершилась и закрылась.
Код:
System.Console.ReadKey()
p51x на форуме Ответить с цитированием
Старый 26.05.2018, 09:05   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
сработает и в С++
Только потом надо не забыть осводить память. Поэтому обычно удобнее std::vector и т.п.

В C# тоже часто лучше взять List и т.п., тогда и с изменением размера нет проблем.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 26.05.2018, 10:18   #6
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Цитата:
Сообщение от KAMLS Посмотреть сообщение
А если массив уже заполнен и я решил изменить размер массива, то есть повтор ввода n. Это допустимо?
Вот об этом скажите пожалуйста. То есть я так понимаю, при уменьшении данные должны потеряться, если вообще возможно менять размер массива "на ходу".
KAMLS вне форума Ответить с цитированием
Старый 26.05.2018, 10:20   #7
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Потому что как и во всех других языках - что написали, то и выполняется. Программа завершилась и закрылась.
Код:

System.Console.ReadKey()
То есть этот код то же самое что и в С++ вместо _getche? Там тоже программа выполнилась, но при наличии getche консоль не закрывается, а показывает результат.
KAMLS вне форума Ответить с цитированием
Старый 26.05.2018, 10:50   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от KAMLS Посмотреть сообщение
Вот об этом скажите пожалуйста. То есть я так понимаю, при уменьшении данные должны потеряться, если вообще возможно менять размер массива "на ходу".
C# это не какая-то магия. Все как и везде - хотите изменить размер, выделяете, копируете/перемещаете, старое очищаете. Можно взять что-нибудь из структур на связных списках, тот же List. Это ж вроде на информатике рассказывают.

Цитата:
Сообщение от KAMLS Посмотреть сообщение
То есть этот код то же самое что и в С++ вместо _getche? Там тоже программа выполнилась, но при наличии getche консоль не закрывается, а показывает результат.
Что за делитанский подход? Что делает _getche? Удерживает консоль? Нет.
https://docs.microsoft.com/en-us/cpp...getche-getwche
Цитата:
The _getche and _getwche functions read a single character from the console with echo, meaning that the character is displayed at the console.
Что делает System.Console.ReadKey()?
https://msdn.microsoft.com/en-us/lib...v=vs.110).aspx
Цитата:
Obtains the next character or function key pressed by the user. The pressed key is displayed in the console window.
Аналог это или нет? Читать доку или нет?..
p51x на форуме Ответить с цитированием
Старый 26.05.2018, 11:04   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Можно взять что-нибудь из структур на связных списках, тот же List.
Он же на массиве, как std::vector. Только все перевыделения при изменении размера скрыты внутри, и происходят не тупо при каждом добавлении (см. Count, Capacity).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 26.05.2018, 11:05   #10
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Спасибо вам большое! Всё как всегда. Самый эффективный форум. Пусть в России будет больше знающих программистов. Ваш вклад в это существеннен.
KAMLS вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить пару наиболее удаленных друг от друга позиций массива, в которых располагаются совпадающие элементы. (Размер массива не указан) Jackyliry Паскаль, Turbo Pascal, PascalABC.NET 1 24.12.2017 16:37
Помогите решить проблему: Найти из заданного пользователём массива самое большое число (размер массива вводит пользователь) Kokosaki Паскаль, Turbo Pascal, PascalABC.NET 16 29.12.2015 21:21
Размер массива BaronVik C# (си шарп) 1 05.01.2012 10:08
Размер массива huzik Общие вопросы C/C++ 10 15.10.2009 18:15
размер массива nosuchathing Общие вопросы C/C++ 6 15.01.2009 11:40