LINUX.ORG.RU

Как сделать размерность матрицы вводом с клавиатуры

 , ,


0

1

Есть задание, помогите разобраться. Собственно, вопрос в том, как сделать мерность массива (тобиш размерность матрицы) вводом с клавиатуры? Остальное +- понял как прикрутить. https://ibb.co/qsRdX8Q

Ответ на: комментарий от Siborgium

Зачем? rand() % 200 ничем не хуже для этой задачи

Деление с остатком не обеспечивает равномерного распределения случайных значений. Да, тут это не важно, но зачем плохому учить?


Выше дважды написали, почему это не сработает

Ты про то, что у std::array нельзя изменить размер? Во-первых, задачу можно решить по-разному, в том числе через создание второго экземпляра иного размера, чем ТС скорее всего и воспользуется. Если захочет именно менять размеры — уверен, заменить array на vector он сможет. Во-вторых, я не был уверен, что ТС вообще хоть что-то сможет написать, поэтому для начала ограничился простой заменой сишных массивов на более безопасный контейнер. Не конечное же решение давать!

XMs ★★★★★
()
Ответ на: комментарий от rumgot

Да, я подумал именно так. Но на сях я не писал уже очень давно…

Zhbert ★★★★★
()
Ответ на: комментарий от luke

Потому что забыл. Действительно, лучше будет использовать std::swap

XMs ★★★★★
()
Ответ на: комментарий от XMs

Ты про то, что у std::array нельзя изменить размер?

Нет.

Siborgium ★★★★★
()
Ответ на: комментарий от peregrine

Юзер введет число, не удовлетворяющее заданным условиям, или введет не число. Остальные проблемы не должны рассматриваться в рамках подобной лабы.

Siborgium ★★★★★
()
Ответ на: комментарий от XMs

не обеспечивает равномерного распределения случайных значений

Покажи мне строчку в задании, где требуется равномерное распределение.

Siborgium ★★★★★
()
Ответ на: комментарий от peregrine

Как бы уже ответили. Остальное в рамках лабы (или что это?) действительно не важно

XMs ★★★★★
()
Ответ на: комментарий от Siborgium

По хорошему должны, хотя бы для того чтобы челик пошел и разобрался с внутренними механизмами работы потоков (биты там у него есть и средства для работы с ними), но ТС-у уже поздно. А сама задача создания объекта размера, узнаваемого в ходе работы программы весьма тривиальна и не должна вызывать трудностей, если челик был на лекциях и препод что-то делал. Хотя народ в теме усердно не может (потому как ошибается) написать лабу за первый семестр заборостроительного колледжа.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 3)
Ответ на: комментарий от Siborgium

Сказано заполнять случайными числами. Если какие-то значения встречаются чаще остальных, что получаем при делении с остатком, это уже не совсем [псевдо]случайные числа. И повторюсь:

Да, тут это не важно, но зачем плохому учить?

XMs ★★★★★
()
Ответ на: комментарий от XMs

Если какие-то значения встречаются чаще остальных, что получаем при делении с остатком, это уже не совсем [псевдо]случайные числа

Вообще-то случайные. Возможно вы имели ввиду, что они не являются равномерно-распределёнными. Это да, но к случайности это не имеет отношения.

fsb4000 ★★★★★
()
Ответ на: комментарий от peregrine

Инициатива наказуема. В лабе за первый семестр заборостроительного колледжа, если ты троечник, следует писать ровно то, что ожидают видеть в лабе за первый семестр заборостроительного колледжа. Все, что ты наумничаешь сверху, тебе придется защищать. Те, кто способны защитить, на лоре спрашивать не будут.

Siborgium ★★★★★
()
Последнее исправление: Siborgium (всего исправлений: 1)
Ответ на: комментарий от XMs

Это не плохое. Это простой способ выполнить условие задачи с наименьшими усилиями. Достаточно знать, что где-то там в STL лежит <random>, из которого можно взять генераторы для нормального рандома, если вдруг такой потребуется.

Siborgium ★★★★★
()

TO ALL.

Не понимаю, сейчас «плюсы» принято с STL изучать что-ли? ТС элементарно не знает как память выделяется, где, когда и почему?! В циклах путается… Ему бы с Си разобраться немного, new/delete С++. А вы ему о шаблонах толкуете??!! Тогда можно и за него всё написать и готовый код отдать. Но, это как бы его обучению не поможет и мозгов не прибавит.

Stack77
()
Ответ на: комментарий от Stack77

ТС элементарно не знает как память выделяется, где, когда и почему

Именно поэтому лично я стараюсь увести от ручной работы с памятью в сторону готовых контейнеров, чтобы он об этом не так сильно парился

XMs ★★★★★
()
Ответ на: комментарий от PURGEN143

В смысле как сделать это в коде? Я же написал

vector<int> matrix;
int a = matrix[y * W + x];
matrix[y * W + x] = b;

Что тут еще непонятно?

Aswed ★★★★★
()
Ответ на: комментарий от Stack77

Ему бы с Си разобраться немного, new/delete С++

Си не нужно изучать, нужно изучать С++. Времени на С нет и не будет, Курсы С++ в которых изучают С вместо плюсов нужно сжигать.

fsb4000 ★★★★★
()
Ответ на: комментарий от fsb4000

Си не нужно изучать, нужно изучать С++.

Это как? Начинать с ООП и STL? Я не о либах, а о синтаксисе. Как раз с Си нормальные лекторы/преподователи погружение и должны в «плюсы» начинать. А не с синтаксического сахара.

Тех, кто о контейнерах рассказывает, но не объясняет как память устроена - таких «учителей» лучше сразу на пенсию.

Ко всему, судя по темам ТС, он хочет в электронику, а тут не только Си обязателен, но и Асм желателен.

Stack77
()
Последнее исправление: Stack77 (всего исправлений: 1)
Ответ на: комментарий от Stack77

Это как?

Да вот так. У тебя есть 16 часов. Всё. 16 часов. Уже есть С++20. Что ты за 16 часов расскажешь? Будешь С рассказывать, чтобы у учеников сложилось впечатление что С++ это хрень устаревшая в которой нужно закатывать Солнце в ручную и он забыл бы эти плюсы как страшный сон?

stl и весь сахарок нужен по максимуму. А то тут весь лор плюсы не знает и хаит, потому что их учили С, а не плюсам.

Вот же новость, на курсе С++ нужно учить С++, кто бы мог подумать.

Да, да. Включи асм в курс по плюсам. Пусть ученик из плюсов узнает ничего.

fsb4000 ★★★★★
()
Последнее исправление: fsb4000 (всего исправлений: 1)
Ответ на: комментарий от Stack77

как память устроена

А на хрена? Не умеешь в абстракции, лучше сразу уйди из программирования. Я когда учила плюсы сразу начала с stl, итераторов, шаблонов и т.д., это и есть современный С++, а не то легаси говно, где надо с указателями мучаться.

anonymous
()
Ответ на: комментарий от fsb4000

Жесть такое на форуме по Linux слышать. Ну, ладно, может сейчас так «правильно», хз. Я не согласен, конечно, с таким подходом. За Асм исключительно в контексте электроники упомянул (желательно, немного знать, на мой взгляд).

Stack77
()
Последнее исправление: Stack77 (всего исправлений: 1)
Ответ на: комментарий от Stack77

И нам рассказывали, что С++ вбирает в себя лучшие практики из мира разработки. В С вообще нихрена даже намека на это нет, все осталось на уровне 70 годов.

anonymous
()
Ответ на: комментарий от Stack77

Ассемблер обычно преподается отдельным курсом. Другое дело, что под курсом С++ обычно понимают курс С/С++, и учить студентов С++ никто не стал бы, если бы и мог – просто не хватит времени, да и, по большому счету, незачем.

Siborgium ★★★★★
()
Ответ на: комментарий от Siborgium

Про типы интересно, спасибо. Про лабы и валидность - по феншую вообще через итератор бегать (кроме случаев когда Что-то типа OpenMP юзается).

Norgat ★★★★★
()
Ответ на: комментарий от fsb4000

Это что за 16 часов такие? В мое время нам на первом курсе давали C++ в рамках целого семестра лекций и практик по ЯП высокого уровня. Плюс еще семестр базовых алгоритмов, где практика шла по методичке с натаскиванием на STL.

Norgat ★★★★★
()
Ответ на: комментарий от fsb4000

А практикумы, а семинары? Там минимум х3 должно быть по часам (я уж молчу о том, что лекция это 1.5 часа или два академических).

Norgat ★★★★★
()
Ответ на: комментарий от Norgat

по феншую вообще через итератор бегать (кроме случаев когда Что-то типа OpenMP юзается).

Да и кроме OpenMP много мест, где либо кастомный итератор писать, либо ручками по индексам.

Siborgium ★★★★★
()
Последнее исправление: Siborgium (всего исправлений: 1)
Ответ на: комментарий от Norgat

по феншую вообще через итератор бегать

Тут нет понятия по-феншую/не-по-феншую, зачем ты их сюда тянешь? Все зависит от задачи. Если тебе нужен индекс внутри цикла - тогда по индексу, если нет - тогда итератор или range-based-for или for_each.

rumgot ★★★★★
()
Ответ на: комментарий от Siborgium

Ну это если препод козёл только лет 70+. Я то сам учился и знаю что требуется, ТС-а бы у меня всё равно выгнали или отправили на пересдачу, лаба с ЛОР-а ему не помогла бы, но у меня нормальные преподы были, только один придурошный, но если ты у такого будешь учиться основной специальности, то лучше сразу уходить, потому что времени 4 года (вроде сейчас на бакалавриате столько сидят) жалко, его можно и продуктивнее потратить, даже сходив в армию, устроившись на завод и играя в доту по выходным под пивас на 2k. Хоть на заводе может что-то полезное сделаешь и в армии. А так тупо штаны просидишь, примерно с такой же пользой как от доты (настроение испортят и за инициативу репортов насуютпо шапке надают).

peregrine ★★★★★
()
Ответ на: комментарий от fsb4000

Если у вас 16 часов, то лучше просто открыть книжку и сказать, на странице такой-то есть hello world, перепечатайте и идите учить основную специальность, кресты вам не нужны.

peregrine ★★★★★
()
Ответ на: комментарий от Norgat

У меня 1 год шли, но только потому что дальше другие ЯП были, основные + ещё были предметы из серии cs (устройство пекича, OSI и так далее), так там тот же препод что лабы по крестам вёл, и там тоже, внезапно писали на крестах, ну и на ассемблере иногда. А ещё с ним можно было после пар разобрать что не понял, отличный мужик был (и есть надеюсь). Но он и сеньором работал лет 15, прежде чем в универ пойти работать, а так фрилансил параллельно, а не просто голый теоретик.

peregrine ★★★★★
()
int* A;
int i, j, n, m;
scanf("%d%d", &n, &m);
A=malloc(n*m*sizeof(int));
for (i = 0; i < n; ++i) {
  for (j = 0; j < m; ++j) {
    scanf("%d", &A[i*m+j]);
  }
}

// some code
 
free(A);
Reset ★★★★★
()
Ответ на: комментарий от Reset

О, а то уже от угловых скобок в глазах рябит. А то напридумывают, шаблонизаторы-энтузиасты. И эти люди ещё на ЛОРе пишут! Ужас :D

Как ведь изящно ни сишечке.

Stack77
()
Ответ на: комментарий от peregrine

лаба не моя, кстати, знакомой обещал сделать. у нас 2 часа в неделю, учу по ютубу, ибо трудно улавливать на слух, одно слово не понял - дальше сидишь щелкаешь всю пару. препод сам настаивает «берите книжки, изучайте интернеты». Хз что там на сессии будет, еще не смотрел, как обычно 40 вопросов всего, спросят 5.

PURGEN143
() автор топика

Как сделать размерность матрицы вводом с клавиатуры

Две пачки пургена выпить …

anonymous
()
Ответ на: комментарий от fsb4000

«Эх вы, серость! Это же Бубль-гум!» (с) Это же МИНИМАЛЬНЫЙ пример для ТС! Я и такой приводить не стал, пускай сам разбирается. Смысл давать готовые решения?

Надумает свою «лабу» в космос запускать для потомства, конечно, валидацию нужно сделать. Ибо будет мучительно больно перед наследием…

Stack77
()
Ответ на: комментарий от Stack77

А я к примеру и ничего не написал. Я написал к вашему восхищению. Сишка изяшна только в примерах сишных дыр. Правильно написанный сишный код далёк от изящества, особенно код в котором продумывалось юнит тестирование всего изначально.

fsb4000 ★★★★★
()
Ответ на: комментарий от fsb4000

Сишка изяшна только в примерах сишных дыр.

Так говоришь, вроде плюсы - это какая-то панацея от дыр. Наговнокодить можно на чем угодно. Rust тоже как панацея задумывался, а говонокодят и на нем.

Просто я художник, я так вижу. Мне в таком минимальном задании Си видится ближе и код кажется красивее. Если нужно писать быстрее и меньше думать - да, «плюсы» лучше. В последних стандартах сахарку насыпали «мама не горюй». Но, тоже, обратные последствия имеются.

В общем, что-то для одного хорошо, что-то для другого. Я вон, вообще, сейчас в C# ушел. Так что я не «фанатик», спорить особо не о чем. Инструмент есть инструмент.

Stack77
()
Ответ на: комментарий от PURGEN143

знакомой обещал сделать

Ну, значит, кто сделает, тот и будет твою знакомую «таво». А как ты хотел?

deep-purple ★★★★★
()
Ответ на: комментарий от fsb4000

Правильно написанный сишный код далёк от изящества

+100500, пишу щас на сишке, зае***** соломки подкладывать. Но всёравно — я люблю сишку.

deep-purple ★★★★★
()
Ответ на: комментарий от deep-purple

А в чём проблема добавить проверки?

В том что их не добавляют. Так как тогда код перестаёт быть изящным.

fsb4000 ★★★★★
()
Ответ на: комментарий от BackDoorLover

Честно, поражаюсь местным сообществом (в очень хорошем смысле слова). Можно задать простяцкий вопрос, а получить ответ: как построить андронный коллайдер, причем со схемой и инструкцией :)

Stack77
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.