Тёмный

ИЗМЕНИТЬ РАЗМЕР МАССИВА | увеличить массив C# | уменьшить массив | СИ ШАРП ДОМАШНИЕ ЗАДАНИЯ # 12 

#SimpleCode
Подписаться 372 тыс.
Просмотров 81 тыс.
50% 1

В этом уроке мы узнаем как работает метод Resize класса Array, а так же напишем собственную его реализацию. В ходе урока мы выясним как написать метод для изменения размера любого массива (увеличения, уменьшения). При выполнении домашнего задания мы повторим темы массивов, циклов и методов, а так же рассмотрим пример применения ключевого слова ref в языке программирования C#.
➡️ Мой курс C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ на Udemy
👉 www.udemy.com/...
✅ИСХОДНЫЙ КОД УРОКА bit.ly/3029jWQ
✅Если вам нравятся мои уроки, вы хотите поддержать меня и развитие канала, то можете сделать это тут!=)
✅Доступ к исходному коду и спонсорство / simplecode
✅ donatepay.ru/d...
✅BTC кошелек: 12oYfJnvt76wjJbpvfhM41m6KPz6uz4LD4
✅ Telegram канал t.me/SergeySim...
Уроки по программированию
✅Наша группа ВК smplcode
✅Подписывайтесь на канал / @simplecodeit
#сишарп #simplecode #урокипрограммирования

Опубликовано:

 

28 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 171   
@SimpleCodeIT
@SimpleCodeIT 4 года назад
Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =) ✅Доступ к исходному коду и спонсорство www.patreon.com/SimpleCode ✅ donatepay.ru/don/SimpleCode ✅BTC кошелек: 12oYfJnvt76wjJbpvfhM41m6KPz6uz4LD4
@Golden_Dragon_SO2
@Golden_Dragon_SO2 Год назад
пон
@viktorviktor9509
@viktorviktor9509 4 года назад
Круто когда материал по интересующей теме можно найти именно на твоем канале. Спасибо!
@emsigaming8947
@emsigaming8947 4 года назад
Обожаю твои видеоуроки по c# Уже два дня подряд взахлёб поглощаю твой божественный, царский контент. Огромное тебе спасибо за твои видеоролики!!!!!
@Golden_Dragon_SO2
@Golden_Dragon_SO2 Год назад
А я год подряд!
@DmitryDolganov
@DmitryDolganov 4 года назад
Привет, Сергей! Бесконечная тебе благодарность за твои труды!
@firemanhood1526
@firemanhood1526 3 года назад
Спасибо за уроки! Жаль что эти нюансы в начале видео вы не описываете в описании к ДЗ, хочется сделать самому, но не до конца понятно, что именно имел ввиду автор.
@alexmam2886
@alexmam2886 3 года назад
Согласен, было не понятно, что делать со значениями в исходном массиве - удалять или сохранять.
@Кирьян-с3ю
@Кирьян-с3ю 3 года назад
Я сначала удалял значения, но когда услышал в начале видео как надо, все переделал, нпотом продолжил просмотр
@bbnowhat
@bbnowhat 3 года назад
@@Кирьян-с3ю также посмотрел начало и понял как именно надо было, а то изначально я указывал параметр сколько нужно добавить элементов
@maxkun8446
@maxkun8446 2 года назад
я даже код написал но он не подходит { internal class Program { static void Main(string[] args) { int IndexDel = 0; string Info; int[] myArray; Console.WriteLine("Wratin pls Count for myArray: "); int Count = int.Parse(Console.ReadLine()); myArray = new int[Count]; Console.WriteLine("Info"); Info = Console.ReadLine(); Console.WriteLine("IndexDeF"); IndexDel = int.Parse(Console.ReadLine()); switch (Info) { case "Add": ForAddInArray(ref IndexDel, ref myArray); break; case "Deletel": ForDeletelInArray(ref IndexDel, ref myArray); break; } for (int i = 0; i < myArray.Length; i++) { Console.Write(myArray[i] + "\t"); } } static void ForAddInArray(ref int Add, ref int[] arr) { arr = new int[arr.Length + Add]; for (int i = 0; i < arr.Length; i++) { arr[i] = int.Parse(Console.ReadLine()); } } static void ForDeletelInArray(ref int Del, ref int[] arr) { if (arr.Length - Del
@TaxirTaxir
@TaxirTaxir Год назад
Наверное в этом и кайф, пытаться сделать "невозможное"
@ЛевТолстой-ф4р
@ЛевТолстой-ф4р 3 года назад
пока этот канал не нашел вообще не мог структурировать обучение(там что то почитал тут то почитал, а в итоге нифига) наконец то начал понимать и вливаться в этот мир так сказать. код уже не выглядит белибердой, начинаю понемногу понимать что гуглить и в чем искать проблемы и их решения (хочется поскорее до ООП дойти )
@geraltt1455
@geraltt1455 4 года назад
Супер. В каждом уроке что- то интересное
@silent_woolf.
@silent_woolf. 2 года назад
Как же приятно, что домашние задания получаются. Сидишь, перепроверяешь себя, радуешься :)
@ptichkasinichkamia
@ptichkasinichkamia Год назад
Как успехи за 3 месяца?
@silent_woolf.
@silent_woolf. Год назад
@@ptichkasinichkamia к сожалению, у меня обучение программированию отошло на второй план на данный момент. Но весь базовый курс, который дан на данном канале, успешно освоен. Также были частично освоены другие технологии, с помощью которых реализовывал некоторые проекты для себя. Ничего серьёзного не делал, ибо не было нужды/цели, но в очень многих областях знаний покопался. Разве только в геймдев не залезал, хотя интерес есть. От себя скажу, что считаю канал Сергея - это лучшее, что может попасться начинающему программисту, просто чтобы получить хороший (позитивный) пинок. Очень жаль, что курс по C# в итоге так и не закончен :(
@ptichkasinichkamia
@ptichkasinichkamia Год назад
@@silent_woolf. А я как раз для геймдева и учу) Да, согласен, жаль что курс не закончен. Что можете посоветовать после прохождения данного курса?
@silent_woolf.
@silent_woolf. Год назад
​@@ptichkasinichkamia программист чаще всего - это самообучающаяся единица, которая выгрызает информацию из всех щелей, откуда может :)))) Так что после освоения синтаксиса и базиса языка, (что и даёт данный курс) самое лучшее - это начать делать что-либо, а в процессе уже гуглить то, что интересует. :) Вот например из самого простого: я писал ребёнку программу для повторения изученных английских. Интерфейс на WinForms, по своей сути программа изначально банальна донельзя - даётся слово на одном языке, а он должен ввести на другом и наоборот. Можно сделать всё крайне примитивно - рандомное слово из массива и его ответная пара (red - красный, например). Дальше будет, возможно, дикий треш для знающих людей, но Я ХУДОЖНИК - Я ТАК ВИЖУ, поэтому делал так, как придумал и как смог. Рефакторить можно и нужно, но это уже "другая история". Короче, в результате неких размышлений, под возможные будущие доработки и масштабирования (да-да, я люблю мыслить глобально) был выделен аж целый класс WORD всего с двумя полями - СЛОВО и ПЕРЕВОД. Сделал подпрограмму "добавитель слов в словарь", в которой реализовал счётчик слов, убрал некоторые "косяки" интерфейса, добавил возможность изменять/удалять слова, сохранять/загружать словарь, возможность добавлять слова без использования мыши и переключения языка (он переключается автоматически на тот, который должен быть в данном поле - либо русский, либо английский), вход в редактор словаря по паролю (не, ну ребёнок же хитрый, он там подсмотреть сможет иначе :D). В основной же программе банальные счётчики правильных/неправильных ответов, несколько режимов (простой слово-ответ, опрос на N слов без повторов), шанс "выпадения" слов (те, которые хуже отвечает, попадаются в итоге чаще), глобальную статистику, озвучку слова голосом и т.п. и т.д. Я всё это к чему? Каждая из этих вещей требовала некоторых размышлений, изысканий и т.п. Вот так из простой маленькой программки я почерпнул гору опыта. :) В геймдеве всё точно также - осваиваешь, например, базово Unity (если знаешь английский, это вообще шик! Могу порекомендовать пару каналов), а потом ставишь себе цель - запилить какую-то игрушку, пусть даже маленькую, бестолковенькую, но СВОЮ. А дальше уже фантазия не даст спокойно сидеть на попе ровно)))))
@sheonaner
@sheonaner Год назад
@@silent_woolf. Спасибо огромное за совет (кстати, можете пожалуйста порекомендовать эти пару каналов?)
@AlexV-zg6co
@AlexV-zg6co 4 года назад
Очень круто рассказываешь нюансы синтаксиса! «почему именно буква Т» прекрасно отложилось в памяти
@mannas273
@mannas273 4 года назад
сейчас учу С++. кайфую. я тащусь от уроков. сейчас на 48 уроке. раньше учил яву под депрессией, ничего не понимал, но тут нашел это чудо.
@vip51000
@vip51000 4 года назад
Я от джавы тащусь
@mannas273
@mannas273 4 года назад
@@vip51000 добью с++ потом перейду вспоминать джаву.
@bombilovka16gd17
@bombilovka16gd17 Год назад
@@mannas273 , ну как, вспомнил?)))
@mannas273
@mannas273 Год назад
@@bombilovka16gd17 нет
@dimonfunny7434
@dimonfunny7434 10 месяцев назад
@@mannas273 как успехи у тебя сейчас,остался в програмировании,либо перешёл на что-то другое ?
@sleepybro_yt
@sleepybro_yt 3 года назад
"потому что мы пытаемся впихнуть невпихуемое" :D
@amogus407
@amogus407 3 дня назад
😈
@juststart796
@juststart796 4 года назад
Спасибо, как всегда все круто, жду следующих уроков !
@FloatingGames
@FloatingGames 4 года назад
Спасибо за урок, слежу за каждым видео, также как и мой друг, изучаем c#, у тебя очень хорошая подача, не видел у других на Ютубе, перешёл к тебе по рекламе блогера (давно) желаю успехов, жду новые уроки
@chronicum2341
@chronicum2341 4 года назад
Я в программировании - null, но посмотрел все уроки с#, которые вышли и уже начал писать простецкие коды, более того нашел сайт с заданиями и стал выполнять для закрепления. Очень четко и понятно объясняешь. Почти всё с первого раза понимаю! Ты крут!!! Очень крут! Спасибо!
@syndicate2268
@syndicate2268 4 года назад
Не подскажешь название этого сайта?)
@simonsays5614
@simonsays5614 4 года назад
Давай название сайта))
@Grig_Grigoryan
@Grig_Grigoryan 4 года назад
@ChronicuM
@RosochkaTV
@RosochkaTV 2 года назад
И мне тоже))
@alinanur5628
@alinanur5628 3 года назад
Безумно интересно смотреть ваши уроки и делать дз) Спасибо огромное за ваш труд!!!
@Ivan-Shyriaiev
@Ivan-Shyriaiev 4 года назад
Спасибо за урок
@wizardxdeveloper
@wizardxdeveloper 2 года назад
За generic огромный лайк! А то видел иногда такие функции, пытался разобраться - непонятно было. А тут такое понятное объяснение! Вообще уроки очень хорошие! Хотелось бы, чтобы вы продолжали!
@СлаваБирюк-э8к
@СлаваБирюк-э8к Год назад
Супер! Особенно фишка с дженерик
@МаксимНикулин-м9х
@МаксимНикулин-м9х 3 года назад
Как же приятно когда сделал ДЗ именно так, поняв тему.
@name5915
@name5915 11 месяцев назад
Ещё раз спасибо за подобный курс!) До решения в видео я не догадался, хотя 2ю и 3ю часть только так и надо решать. Поэтому решил так, буду рад обратной связи: static void Mass(ref uint Ml) //в методе меняется длина рандомного одномерного массива { Random random = new Random(); int[] mass = new int[Ml]; for (int i = 0; i < mass.Length; i++) { mass[i] = random.Next(); Console.Write(mass[i] + "\t"); //на печать массив и длину (ниже) выводил для себя/удобства } Console.WriteLine(" " + mass.Length); Console.ReadLine(); } Console.WriteLine("Сколько будет элементов в массиве: "); //задаётся новая длина для массива uint Ma = uint.Parse(Console.ReadLine()); Mass(ref Ma);
@k1ntoho
@k1ntoho 4 года назад
Спасибо, классный урок.
@_chill_relax_calm4647
@_chill_relax_calm4647 3 года назад
Поддерживающий комментарий для дальнейшего развития канала
@dimsmoke682
@dimsmoke682 Год назад
блин из-за нагромождения терминологий я перестаю понимать что вообще происходит. не хватает бытовых примеров, смотрю и не понимаю где я могу это применить. кроме калькулятора и обменника валют, примеров не было и поэтому тяжело воспринимаю обучение. но автору огромный респект, человек явно шарющий и с талантом преподавателя.
@simonsays5614
@simonsays5614 4 года назад
А я то думаю чего я после того как увеличил массив он стал весь заполнен нулями)) А оказывается как все хитро придумано. Благодарю за разъяснение, очень познавательно.
@mikkimorfin5406
@mikkimorfin5406 2 года назад
Спасибо тема нужная и важная,успехов Вам,и за помощь благодарен
@artlinestudio6735
@artlinestudio6735 3 года назад
Хороший урок! Спасибо Сергей!
@matem101
@matem101 3 года назад
Спасибо огромное!
@default777
@default777 Год назад
Спасибо за уроки! лучший! )
@ifelru
@ifelru 3 года назад
Спасибо за отличное решение!
@sat1ratv353
@sat1ratv353 Год назад
Я пошел еще дальше и сделал рандомную генерацию как самого массива, так и его длины. А в методе у меня впринципе тоже самое: static void Resize( ref int [] YArray, int F ) { int[] Mass = new int[F]; for (int i = 0; i < YArray.Length && i
@Агентмк
@Агентмк Месяц назад
Я вот так сделал static void GetArray() //Метод, отвечающий а заполнение массива { Random random = new Random(); int[] myArray = new int[11]; for (int i = 0; i < myArray?.Length; i++) { myArray[i] = random.Next(0, 10); } Resize(ref myArray, 6, false); } static void Main(string[] args) { GetArray(); } static void Resize(ref int[] source, int resize, bool absolute) { int currentSize = source.Length; int newSize = absolute ? currentSize + resize : resize; if (newSize < 0) throw new Exception("size of array is less 0"); int[] dest = new int[newSize]; int copySize = newSize > currentSize ? currentSize : newSize; Array.Copy(source, dest, copySize); source = dest; }
@sat1ratv353
@sat1ratv353 Месяц назад
@@Агентмк настоящий абсолют)
@3x__
@3x__ 4 года назад
Спасибо за урок!
@Usmonjk
@Usmonjk 4 года назад
Пртвет Сергей! Спосибо за уроки! Можно узнать когда выйдет следущий?
@Woodyman87
@Woodyman87 3 года назад
12:46 "Впихнуть невпихуемое" )) надо запомнить
@ЕвгенийКадочников-с1ы
Шикарно объяснено! Спасибо
@seraphiiim7
@seraphiiim7 2 года назад
До просмотра так сделал: static void Resize(ref int[] arr, int count) { int[] newArr = new int[count]; if (arr.Length < count) { for (int i = 0; i < arr.Length; i++) { newArr[i] = arr[i]; } } if (arr.Length > count) { for (int i = 0; i < count; i++) { newArr[i] = arr[i]; } } arr = newArr; } static void Main(string[] args) { int[] myArray = {1, 4, 6}; Resize(ref myArray, 10); }
@СергейПетров-б1ф
@СергейПетров-б1ф 4 года назад
Супер!
@sonesoul5668
@sonesoul5668 Год назад
так то можно было захардкодить условие в цикле (i < array.Length-1) но все равно видео полезное, ты отлично объясняешь!
@amay345
@amay345 3 года назад
После ваших подробных уроков дз вообще без проблем выполняю хотелось бы так же по окнам уроки тоже с домашками
@elfinroom1178
@elfinroom1178 3 года назад
лайк и благодарность автору
@ruslanh8106
@ruslanh8106 2 года назад
Ооо, за джинерики огромное спасибо
@ЗлодейПо
@ЗлодейПо 4 месяца назад
Решил так, сначала подумал, что не надо сохранять значения в старом массиве, а в видео их сохранили...переделал под сохранение вот, что вышло: namespace ConsoleApp33 { internal class Program { static void CicleB(ref int b, ref string str) { while (b < 0) { Console.WriteLine("Массив не может быть с отрицательным числом"); StringReturn(ref str); Parse(ref str, ref b); } while (b == default) { Console.WriteLine("Кажется, вы ввели не число"); StringReturn(ref str); Parse(ref str, ref b); } } static void Parse(ref string str, ref int b) { if (str == String.Empty) { Console.WriteLine("Вы ничего не ввели"); } else { int.TryParse(str, out b); } } static void StringReturn(ref string str) { Console.WriteLine("Введите сколько элементов массива вы хотите сделать"); str = Console.ReadLine(); } static void arraynew(ref int[] array, ref int b) { int[] NewArray = new int[b]; for (int i = 0; i < array.Length; i++) { NewArray[i] = array[i]; } array = NewArray; } static void Main(string[] args) { int[] array = { 1, 2, 3, 4, 5 }; int b = 0; string str = "default"; StringReturn(ref str); Parse(ref str, ref b); CicleB(ref b, ref str); arraynew(ref array, ref b); for (int i = 0;i < array.Length;i++) { Console.WriteLine(array[i]); } } } }
@АлексейКарпунов-х8э
17:06 - Я хочу, чтобы на месте null выводилась не пустота, а надпись "пусто", поэтому мне нужно использовать оператор объединения с null. Только как мне это сделать, если вместо типов данных используются "джинерики"?
@Barin.a
@Barin.a 2 года назад
Все понятно и очень круто жалко не всегда сам додумать могу, а так все очень четко!
@ip3779
@ip3779 2 года назад
Спасибо за урок!!! Где то я потерял нить повествования и перестал поинмать что происходит =(. Придется вернуться на несколько уроков назад
@ninjadiestanding5082
@ninjadiestanding5082 3 года назад
Большое спасибо за ДЗ!
@System-Chaos
@System-Chaos 5 месяцев назад
Сначала не понял как делать, потом все же пересилил себя и решил самому сделать все, было куча ошибок но в итоге я сделал без подсказок, но все же у меня не много иначе, массив заполняется рандомными значениями и рандомным размером, далее надо выбрать увеличить или уменьшить и после выбрать число на сколько, и далее если массив увеличивается новые значения заполняются случайными числами. static void Resize(ref int[] array, int newSize) // изменение массива { int[] NewArray = new int[array.Length + newSize]; for (int i = 0; i < NewArray.Length; i++) // присваиваем значения из старого массива в новый { if (i < array.Length) { NewArray[i] = array[i]; } else { NewArray[i] = random.Next(1, 10); } } array = NewArray;// присваиваем новый массив старому }
@cyberpunk1672
@cyberpunk1672 3 года назад
Это ДЗ я смог сделать только через статический метод Resize) Но как он работает додуматься не смог. Спасибо за урок!
@ВладиславКириязи
@ВладиславКириязи 2 года назад
Добрый день. Сделал все тоже самое только через иф=( забыл про логический элемент. На написание программы ушло мин 10-15. Это первый язык программирования. Спасибо за уроки!
@НадеждаИванова-п1с
Благодарю
@deniskholodar4406
@deniskholodar4406 2 года назад
Наверное судьба есть благодаря этому каналу и стану программистом сколько раз бросал
@ohshie
@ohshie Год назад
Урок пока не смотрел. принимаем пользовательский массив и число на которое хотим изменить далее если оно больше 0 (то есть увеличиваем массив) предлагаем пользователю либо самому заполнить либо забить новые значения рандомом. Если меньше т опросто уменьшаем. static void ArraySizeChange(ref int[] userArray, int amount) { Random random = new Random(); int[] newArray = new int[userArray.Length + amount]; if (amount >= 0) { for (int i = 0; i < userArray.Length; i++) { newArray[i] = userArray[i]; } Console.WriteLine(" Fill it with random numbers?"); string choice = Console.ReadLine(); if (choice == "yes") { for (int i = userArray.Length; i < newArray.Length; i++) { newArray[i] = random.Next(100); } } else { for (int i = userArray.Length; i < newArray.Length; i++) { Console.WriteLine("Enter value for index " + i); newArray[i] = int.Parse(Console.ReadLine()); } } } else { for (int i = 0; i < newArray.Length; i++) { newArray[i] = userArray[i]; } } userArray = newArray; }
@ohshie
@ohshie Год назад
после просмотра: задумался над тем, что получется что мой метод делает больше 1 явного действия, что как говорил Сергей не хорошо. Видимо придется перепесать)
@geshoi
@geshoi 2 года назад
Мне аж стало жалко "сборщика мусора", теперь буду стараться не писать лишнего кода =). И еще мне понравилась фраза "впихнуть невпихуемое".
@ObloxaTV
@ObloxaTV 6 месяцев назад
как всегда хорошо
@АлександрПасевич-п1ч
Спасибо!!
@abdusamadjuraev2615
@abdusamadjuraev2615 4 года назад
круто!
@leskhanmuratuly5374
@leskhanmuratuly5374 3 года назад
Спасибо большое))
@MihailSofianou
@MihailSofianou 4 года назад
Спасибо тебе большое бро
@НикитаСолотин
@НикитаСолотин 3 года назад
Спасибо!
@user-io9iq2di4w
@user-io9iq2di4w Год назад
Удивляюсь людям, которым легко делать дз, я так и не понял как его делать, пока не посмотрел начало урока.
@АнтонВасильев-щ7ь
@АнтонВасильев-щ7ь 3 месяца назад
Привет, ещё кодишь? Или забросил?
@user-io9iq2di4w
@user-io9iq2di4w 3 месяца назад
@@АнтонВасильев-щ7ь Привет, все ещё прогаю
@user-io9iq2di4w
@user-io9iq2di4w 3 месяца назад
@@АнтонВасильев-щ7ьПривет, все ещё прогаю
@albertumanets3983
@albertumanets3983 4 года назад
Сергей, добрый день! Я Ваш удаленный ученик. Посмотрел видео, где Вы рассказали про то, как писали первую программу. После этого, у меня созрела идея какое именно нужно написать приложение мне. И уже в процесс создания осваивать материал. В связи с этим у меня вопрос. Приложения для мобильного устройства. Это будет маленький справочник с поисковиком по очень узкой тематике. Графики минимум, в основном таблицы и календарь с привязками к датам и напоминалками. Не буду углубляться. Какой язык для этого более подходит. Буду очень благодарен если вы ответите. Это не означает, что C# я заброшу, он мне очень нравится. При этом я понимаю, что на C# я для компа, смогу реализовать это приложение, написать алгоритм и т.д., но вот для мобильных устройств не знаю какой язык использовать.
@SimpleCodeIT
@SimpleCodeIT 4 года назад
Судя по всему приложение довольно простое и одним из критериев является желание изучать C#. В таком случае я бы посмотрел в сторону Xamarin, он позволяет разрабатывать кросплатформенные приложения на C#.
@oljaolsa7261
@oljaolsa7261 4 года назад
привет а уроки по джаве планируются?)
@artefakt4349
@artefakt4349 3 года назад
Благодарю! Да, да, да! ведь говорилось ранее, что если значение для элемента массива не указано, оно по дефолту заполняется 0 (для инта). А я в нулевые элементы еще раз записал нули... мда.
@darth_korsar
@darth_korsar 3 года назад
А я сделал запрос - сколько добавить и допилил туда еще ввод элементов в цикле.
@I-PixALbI4-I
@I-PixALbI4-I 4 года назад
В принципе ДЗ лёгкое, я смог его даже в уме представить и видео показало что я не ошибался. Спасибо за видео-уроки с ДЗ!
@DARKNETOFFICIAL
@DARKNETOFFICIAL 3 года назад
Я так сделал: static void Resize(ref int[] myArray) { Console.WriteLine("Изменение кол-во элементов массива"); Console.WriteLine(); Console.WriteLine("Введите новое кол-во элементов: "); int opperation = int.Parse(Console.ReadLine()); myArray = new int[opperation]; } static void Main(string[] args) { int[] myArray = new int[10]; Resize(ref myArray); Console.WriteLine("Количество элементов в массиве: " + myArray.Length); }
@Бот5329-и5г
@Бот5329-и5г 3 года назад
А я так ))) static void Resize(ref int[] arr) { int a; int[] b = new int[arr.Length]; for (int i = 0; i < b.Length; i++) { b[i] = arr[i]; } Console.WriteLine("Сколько элементов вы хотите в массиве?"); while (true) { try { a = int.Parse(Console.ReadLine()); } catch (Exception) { Console.WriteLine("Не корректный ввод."); continue; } if (a > 0 && a < 101) { arr = new int[a]; if (arr.Length > b.Length) { for (int i = 0; i < b.Length; i++) { arr[i] = b[i]; } } if (arr.Length < b.Length) { for (int i = 0; i < arr.Length; i++) { arr[i] = b[i]; } } break; } else { Console.WriteLine("Не корректный ввод. Введите целое число от 1 до 100"); } } }
@Kuchizu
@Kuchizu 2 года назад
12:46 Впихнуть невпихуемое как смысл жизни
@DmitriyShvachka
@DmitriyShvachka Год назад
Я бы в метод добавил еще проверку, если вдруг кто-то решит ресайзить, например, массив из 2х элементов в массив из двух элементов: if (array.Length == NewSize) return;
@ЯрославГоловко-ф6и
спасибо
@mannas273
@mannas273 4 года назад
если не понимаете уроков , елси проблемы в восприятии уроков. проверьте себя на депрессию ребята. это реально проблема.
@МаксимДраганов-е8м
тогда + 1 проблема - как избавится от депрессии static condition DepressionRemover(person, target) { person = me; depression = null; }
@JetRiderCBR
@JetRiderCBR 3 года назад
thanks, cool !!!
@edzhadan9852
@edzhadan9852 4 года назад
👍👍👍
@sheonaner
@sheonaner Год назад
Впихнуть невпихуемое)
@frjade6769
@frjade6769 4 года назад
а по динамическим массивам будет видео? Очень интересуют методы с внесением и удалением данных List.
@MapoxeO
@MapoxeO 3 года назад
в C# в safe-коде нельзя устроить динамические массивы, так как в safe-коде нет указателей. Они есть в unsafe-коде, который позваляет работать с указателями и прочими гадостями. В LIst, наверное, есть методы с лишним выделением памяти под массив, чтобы не пересоздавать по многу раз массивы в памяти, либо же методы основаны на unsafe-коде.
@antonsimkin
@antonsimkin 3 года назад
А почему в c# нет методов для добавления или удаления элемента из массива?
@steshapokosova1775
@steshapokosova1775 3 года назад
У меня также, только в добавок я заполнила все нули рандомными значениями =) static void Resize(ref int[] iMassiv, int SIZE, Random Rand) { int[] Array = new int[SIZE]; for (int i = 0; i < Array.Length && i < iMassiv.Length; i++) { Array[i] = iMassiv[i]; } for (int i = iMassiv.Length; i
@wurlak_mmr9813
@wurlak_mmr9813 Год назад
Вот мой пример решения задания, где так же можно увеличить, либо уменьшить количество элементов массива, на определенное значение с сохранением числовой последовательности static void Resize(ref int[] array, int increaseArray, int downArray) { int[] newAray = new int[(array.Length + increaseArray) - downArray]; for (int i = 0; i < array.Length; i++) { for (int j = i; j < newAray.Length; j++) { newAray[j] = j + 1; } } array = newAray; } static void Main(string[] args) { int[] myArray = new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; Resize(ref myArray, 10, 0); for (int i = 0; i < myArray.Length; i++) { Console.Write(myArray[i] + " "); } Console.ReadKey(); }
@Сергей-т9д7в
@Сергей-т9д7в 9 месяцев назад
static void Resize(ref int[] arr, uint size) { if ((arr??=new int[size]).Length==size) return; //обработка null или одинаковый размер int[] newArr = new int[size]; //новый массив нужного размера for(int i=0;i
@АрманРахимов-т5н
@АрманРахимов-т5н 4 года назад
Ура
@KonsulX_Official
@KonsulX_Official 10 месяцев назад
Я короче не понял походу дз, сделал так. Ну изменяет же количество элементов)) internal class Program { static void Resaize(ref int[] a) { int elements = int.Parse(Console.ReadLine()); a = new int[elements]; } static void Main(string[] args) { int[] b = {354, 53, 675 }; Resaize(ref b); Console.WriteLine("Количество элементов массива " + b.Length); } }
@megazeph9887
@megazeph9887 Год назад
Долго думал, но вот, что получилось static void Resize(ref int[] arr, int resizemulti) { int[] Array = new int [resizemulti]; if (Array.Length >= arr.Length) { for (int i = 0; i < arr.Length; i++) { Array[i] = arr[i]; } } else { for (int i = 0; i < Array.Length; i++) { Array[i] = arr[i]; } } arr = Array; } int[] myArray = { 2, 5, 8}; int Value = 6; --- изменяет размер цикла.
@Бот5329-и5г
@Бот5329-и5г 3 года назад
Я по другому написал с одним входящим параметром - самим массивом. А при выполнении метода программа спрашивает сколько должно быть элементов)) Но он работает корректно. Тут в методе 4 строчки кода а у меня 22 ))
@bl_bl_e
@bl_bl_e 4 года назад
незнаю,в тему ли я, но на просторах рунета нет нормальных уроков по опенгл.Можно ли ето исправить плиз ^_^
@mediafile9995
@mediafile9995 3 года назад
А я создал промежуточный массив для хранения данных из старого массива, потом в старой ссылке на массив заменил на новый массив с заданным размером. И все данные из промежуточного массива перевёл в заданный массив... Как-то так: Промежуточный массив = старый массив. Старый массив = новый размер. Цикл
@Бот5329-и5г
@Бот5329-и5г 3 года назад
@Easy Fate Я вот так сделал))) static void Resize(ref int[] arr) { int a; int[] b = new int[arr.Length]; for (int i = 0; i < b.Length; i++) { b[i] = arr[i]; } Console.WriteLine("Сколько элементов вы хотите в массиве?"); while (true) { try { a = int.Parse(Console.ReadLine()); } catch (Exception) { Console.WriteLine("Не корректный ввод."); continue; } if (a > 0 && a < 101) { arr = new int[a]; if (arr.Length > b.Length) { for (int i = 0; i < b.Length; i++) { arr[i] = b[i]; } } if (arr.Length < b.Length) { for (int i = 0; i < arr.Length; i++) { arr[i] = b[i]; } } break; } else { Console.WriteLine("Не корректный ввод. Введите целое число от 1 до 100"); } } }
@EldarNachikov
@EldarNachikov 2 года назад
я сделал по другому использовав сам метод Array.Resize и оператор switch для прибавления или уменьшения количества элементов, правда я не понял как заполнить новые элементы массива не меняя старые
@islambekbillionaire5360
@islambekbillionaire5360 3 года назад
Спасибо за урок ! Можете сказать ,почему когда я это хочу запустить на консоле оно пишет System.Toint32[]?
@nikitasysoev1744
@nikitasysoev1744 3 года назад
Скорее всего вы не зациклили вывод массива. for (int i = 0; i < myArr.Length; i++) { Console.WriteLine(" " + myArr[i]); }
@nata4518
@nata4518 Год назад
А как в новом массиве проименовать элементы???
@_MrMaser_
@_MrMaser_ 4 года назад
добрый день Сергей! у меня есть один вопрос,есть ли на языке с# такой код который изменяет конкретный элемент массива, при этом только тот элемент который вы исправили,а другие элементы которые остались на месте то есть неизменым, есть ли такой код на языке с#!?
@default777
@default777 Год назад
все 3 задания в одном static void Resize(ref int[] arr, int JelaemoeKolichestvo, int min, int max) { int[] gav = new int[JelaemoeKolichestvo]; Array.Copy(arr, gav, Math.Min(arr.Length, JelaemoeKolichestvo)); arr = gav; Random random = new Random(); for (int i = 0; i < arr.Length; i++) arr[i] = random.Next(min, max); } static void AddElementToStart(ref int[] arr, int element) { int[] newArr = new int[arr.Length + 1]; newArr[0] = element; Array.Copy(arr, 0, newArr, 1, arr.Length); arr = newArr; } static void AddElementToEnd(ref int[] arr, int element) { int[] newArr = new int[arr.Length + 1]; Array.Copy(arr, newArr, arr.Length); newArr[arr.Length] = element; arr = newArr; } static void AddElementAtIndex(ref int[] arr, int element, int index) { int[] newArr = new int[arr.Length + 1]; Array.Copy(arr, 0, newArr, 0, index); newArr[index] = element; Array.Copy(arr, index, newArr, index + 1, arr.Length - index); arr = newArr; } static void Main(string[] args) { Random rnd = new Random(); int[] myArray = new int[rnd.Next(50, 100)]; for (int i = 0; i < myArray.Length; i++) myArray[i] = rnd.Next(100, 500); Console.WriteLine($"Сейчас в массиве {myArray.Length} элементов: {string.Join(" ", myArray)}"); Console.Write("Введите желаемое кол-во элементов: "); int a = int.Parse(Console.ReadLine()); Console.WriteLine("Минимальное значение каждого элемента? "); int min = int.Parse(Console.ReadLine()); Console.WriteLine("Максимальное значение каждого элемента? "); int max = int.Parse(Console.ReadLine()); Resize(ref myArray, a, min, max); Console.WriteLine($"Ваш новый массив на {a} элементов: {string.Join(" ", myArray)}"); Console.Write("Введите элемент для добавления в начало массива: "); int startElement = int.Parse(Console.ReadLine()); AddElementToStart(ref myArray, startElement); Console.WriteLine($"Массив после добавления элемента в начало: {string.Join(" ", myArray)}"); Console.Write("Введите элемент для добавления в конец массива: "); int endElement = int.Parse(Console.ReadLine()); AddElementToEnd(ref myArray, endElement); Console.WriteLine($"Массив после добавления элемента в конец: {string.Join(" ", myArray)}"); Console.Write("Введите элемент для добавления: "); int element = int.Parse(Console.ReadLine()); Console.Write("Введите индекс для добавления элемента: "); int index = int.Parse(Console.ReadLine()); AddElementAtIndex(ref myArray, element, index); Console.WriteLine($"Массив после добавления элемента по индексу: {string.Join(" ", myArray)}"); Console.ReadLine(); }
@beshenyy_sobaken
@beshenyy_sobaken Год назад
У меня так вышло :) internal class Program { static void Main(string[] args) { int[] myArray = { 3, 8, 1, 7 }; Resize(ref myArray, 10); for (int i = 0; i < myArray.Length; i++) { Console.Write(myArray[i] + " | "); } Console.WriteLine(); } static void Resize(ref int[] array, int value) { int[] tempArray = new int[value]; for (int i = 0; i < array.Length; i++) { if (i >= tempArray.Length) { break; } tempArray[i] = array[i]; } array = tempArray; } }
@beshenyy_sobaken
@beshenyy_sobaken Год назад
Можно было и без условия после цикла обойтись (в счетчик т.е. в цикл сам прописать), но рада, что правильно мыслила)
@ПавелБойко-ь2д
@ПавелБойко-ь2д 3 года назад
Сделал дз правильно (работает правильно ). Но написал его , как обычно , в 2 раза больше чем у вас ....... АААААА static void Resize( ref int[] array, int size) { int[] newArray = new int[array.Length]; for (int i = 0; i < newArray.Length; i++) newArray[i] = array[i]; array = new int[size]; for (int i = 0; i < newArray.Length && i
@1ofsb
@1ofsb 3 года назад
Сделал 2 метода, которые просто увеличивают массив либо же уменьшают без переноса значений
@dekakrin776
@dekakrin776 5 месяцев назад
11:04 Не понимаю, зачем внутри метода Resize создавать цикл for. Почему нельзя просто сделать так? namespace HomeWork { internal class Program { static void Resize(ref int[] array, int newSize) { array = new int[newSize]; } static void Main(string[] args) { int[] myArray = { 1, 4, 6 }; Array.Resize(ref myArray, 10); } } }
@sadra1d
@sadra1d 7 дней назад
нужно еще чтобы старые значения сохранились, а с таким способом, который ты показал, массив полностью обновиться.
@ShomLZ
@ShomLZ 3 года назад
А знает кто-нибудь как сделать выход из метода void? У меня логика была немного другой, в параметр передавалось число на которое нужно изменить массив, и при проверке нужно было совершить выход из метода, на break компилятор ругался, но выход с ним работал, а потом стал подчеркивать его красным и перестал с ним запускаться почему то. static void Resize(ref int[] MyArray, int SizeChange) { if (MyArray.Length + SizeChange
@MapoxeO
@MapoxeO 3 года назад
обычная строчка: return; - этого достаточно, чтобы выйти из метода.
@pavel6341
@pavel6341 4 года назад
Хмм интересно лайки 620, а просмотров 6к++. Вот халявщики лайки зажали :=)
@lloydlion8959
@lloydlion8959 4 года назад
Ссылка на ссылку... Теперь я видел всё
@fillion6288
@fillion6288 3 года назад
Я узнал, что могу писать название методов и переменных русскими буквами. Как это возможно?
@_chill_relax_calm4647
@_chill_relax_calm4647 3 года назад
int[] newArray = new int [newSize]; Что делает new перед int [newSize] ?
@MapoxeO
@MapoxeO 3 года назад
Создает в управляемой куче (Heap), последовательность, длинной newSize ячеек под int. Так же объявляются и объекты в C#, C++, Java
@maxkun8446
@maxkun8446 2 года назад
мда как обычно я не понял что нужно сделать и написал совсем другой код под совсем другую задачу { internal class Program { static void Main(string[] args) { int IndexDel = 0; string Info; int[] myArray; Console.WriteLine("Wratin pls Count for myArray: "); int Count = int.Parse(Console.ReadLine()); myArray = new int[Count]; Console.WriteLine("Info"); Info = Console.ReadLine(); Console.WriteLine("IndexDeF"); IndexDel = int.Parse(Console.ReadLine()); switch (Info) { case "Add": ForAddInArray(ref IndexDel, ref myArray); break; case "Deletel": ForDeletelInArray(ref IndexDel, ref myArray); break; } for (int i = 0; i < myArray.Length; i++) { Console.Write(myArray[i] + "\t"); } } static void ForAddInArray(ref int Add, ref int[] arr) { arr = new int[arr.Length + Add]; for (int i = 0; i < arr.Length; i++) { arr[i] = int.Parse(Console.ReadLine()); } } static void ForDeletelInArray(ref int Del, ref int[] arr) { if (arr.Length - Del
@maxkun8446
@maxkun8446 2 года назад
я хз кому это будет интересно
@hierayku873
@hierayku873 3 года назад
:)
@gigex159
@gigex159 3 года назад
а почему все так сложно в видео? разве нельзя было сделать вот так? using System; using System.Linq; namespace crossplatforn { class Program { static void grus(ref int[] gif) { Array.Resize(ref gif, int.Parse(Console.ReadLine())); } static void Main(string[] args) { Console.Write("Please enter number of massive elements: "); int[] bio = { 2, 3, 5 }; grus(ref bio); for (int i = 0; i < bio.Length; i++) { Console.WriteLine($"massive:{i} " + bio[i]); } } } }
@gigex159
@gigex159 3 года назад
@@kompotalive логично ))
@unchpokable
@unchpokable 4 года назад
Ещё не посмотрел видос, но хочу предположить, что решение будет примерно таким: public static void Resize (ref T[] OldArr, int NewCap) { T[] Temp = new T[NewCap]; for (int i = 0; i < Temp.Length; i++) { try { Temp[i] = OldArr[i]; } catch { Temp[i] = default(T); } } OldArr = Temp; } З.Ы Делал для любого типа данных
@Tragraph
@Tragraph 4 года назад
ну и зачем тут try catch?
@АлексейМощенко-щ2й
А почему и нет?) Просто здесь применяется дефолтное значение для обобщений, но в уроках этот момент ещё не объяснялся. Немного другая реализация и чуть больше кода, а по факту всё верно.
@Tragraph
@Tragraph 4 года назад
Алексей Мощенко потому что это очень накладная операция в виде вброса исключения и его отлавливание, намного дешевле использовать if
Далее
Rate our flexibility 1-10🔥👯‍♀️😈💖
00:12
Что нового в C# 12
22:36
Просмотров 4,8 тыс.