Двумерные массивы
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
-
- Сообщения: 5
- Зарегистрирован: 14 дек 2014, 10:04
Ребят спасайте 1 задание 1 лабы осталось с прошлого семестра. вообще не пойму как её сделать. В общем Задать двумерный массив размерности NXM натуральных случайных чисел из интервала (-10; 10). Предусмотреть автоматический и ручной способ ввода элементов массива. Вывести на экран в виде таблицы исходный массив и преобразованный с соответствующими заголовками. Ну тут все понятно а вот само задание В матрице первый элемент каждой строки – шифр детали, остальные элементы – ее характеристики. Выявить и удалить из матрицы номера строк с совпадающими шифрами и несовпадающими характеристиками. Вывести матрицу после резекции. Если скинете сразу код будет очень круто!
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Во-первых, строки матрицы можно не удалять, а просто их не выводить, если они нам не подходят. Это упростит алгоритм.
Во-вторых, понятно, что нам понадобится цикл в цикле для того, чтобы найти строки с совпадающими шифрами. В идеале внутренний цикл должен начинаться от индекса наружного цикла + 1 и бежать до количества строк, однако в этом случае, если мы решили, что строку следует не показывать, нам нужно не показывать как текущую строку (индекс наружного цикла), так и подбираемую строку (индекс внутреннего цикла), так что понадобится некоторый вспомогательный массив, чтобы помнить, что строка должна быть проигнорирована, когда текущая строка доберётся до значения подбираемой. Поэтому, дабы ещё раз упростить алгоритм, предлагаю бежать оба цикла с самого начала. Это замедлит работу программы, зато улучшит её понимание.
Предоставляю код на изобретённом мной алгоритмическом языке, чтобы дать идею, но не дать готового решения.
Во-вторых, понятно, что нам понадобится цикл в цикле для того, чтобы найти строки с совпадающими шифрами. В идеале внутренний цикл должен начинаться от индекса наружного цикла + 1 и бежать до количества строк, однако в этом случае, если мы решили, что строку следует не показывать, нам нужно не показывать как текущую строку (индекс наружного цикла), так и подбираемую строку (индекс внутреннего цикла), так что понадобится некоторый вспомогательный массив, чтобы помнить, что строка должна быть проигнорирована, когда текущая строка доберётся до значения подбираемой. Поэтому, дабы ещё раз упростить алгоритм, предлагаю бежать оба цикла с самого начала. Это замедлит работу программы, зато улучшит её понимание.
Предоставляю код на изобретённом мной алгоритмическом языке, чтобы дать идею, но не дать готового решения.
Код: Выделить всё
Константа N = 100;
Константа M = 10;
Массив Arr[N][M];
Считать(Arr);
Цикл по i от 0 do N-1
{
Print = истина;
Цикл по j от 0 до N-1
{
// В этом месте i - это индекс текущей строки, а j - индекс подбираемой строки.
// Печатаем или пропускаем строку мы исключительно по индексу i, индекс j используется только для
// для определения есть ли ещё строки с таким шифром или нет.
Если (i не равно j) // это условие необходимо, чтобы мы не сравнивали строку с самой собой
и (Arr[i][0] равно Arr[j][0]) // проверка равенства шифров текущей и подбираемой строки
{
// Если шифры равны, то задача проверить равны ли все характеристики
column = 1;
Цикл пока column < M
{
Если (Arr[i][column] не равно Arr[j][column])
{
Прервать цикл;
}
Инкремент column;
}
Если (column не равно M) // значит найдены неравные характеристики
{
Print = ложь;
Прервать цикл;
}
}
}
Если (Print)
{
Напечатать строку i;
}
}
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
А что ты делал в прошлом семестре?
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Уж что нибудь одно. Или от минус десяти, или натуральных. Ноль ещё можно причислить к натуральным на том основании, что в first floor - это второй этаж, под ним ещё ground floor, который, если его обозначить числовым номером, и будет нулевой. Но отрицательных номеров не бывает.Dimonserg1996 писал(а):натуральных случайных чисел из интервала (-10; 10).
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
То естьRomeo писал(а):Во-первых, строки матрицы можно не удалять, а просто их не выводить, если они нам не подходят. Это упростит алгоритм.
. Сказано удалить, а не вывести без.У меня есть решение, но к задаче оно не подходит.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.