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 ★★★★★
()
Ответ на: комментарий от Norgat

Это что за 16 часов такие?

В семестре 16 недель. Одна лекция в неделю, ваш кэп.

fsb4000 ★★★★★
()
Последнее исправление: fsb4000 (всего исправлений: 2)
Ответ на: комментарий от 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
()
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.