0 / 0 / 0
Регистрация: 30.11.2017
Сообщений: 6

Работа с матрицами, поиск наибольшей строки с ее выводом и выводом ее суммы

11.12.2017, 22:14. Показов 1849. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать программу: дана прямоугольная матрица размером m на n. Выделить в ней строку имеющую наибольшую сумму. Вывести значение суммы и эту строку
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.12.2017, 22:14
Ответы с готовыми решениями:

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

ComboBox Поиск по ячейке с выводом полной строки
В combobox выбираем критерии фильтрации, если в 4 столбце имеется такое значения, то строка эта остается, если нет, то скрыть. 1)Как...

Действия с матрицами. Ошибка 94. Проблемы с выводом результата
Вот условие задачи Заданы одномерные матрицы размерностью 40 элементов, заполненные случайными числами из диапазона . Перемножить их...

9
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
11.12.2017, 22:30
А вам — тоже готовое, или сами писать будете?
0
0 / 0 / 0
Регистрация: 30.11.2017
Сообщений: 6
11.12.2017, 22:58  [ТС]
Готовое, да. Я в данный момент изучаю lisp, очень тяжело для меня дается переход на функц. языки. На примере кода, хотел бы разобраться. Буду очень благодарен.
0
 Аватар для _sg
4709 / 4404 / 380
Регистрация: 12.05.2012
Сообщений: 3,101
11.12.2017, 23:22
Lisp
1
2
3
4
5
6
(defun maxx (w &aux (m (loop for a in w maximize (reduce #'+ a))))
  (loop for a in w when (= (reduce #'+ a) m) return (values m a)))
 
> (maxx '((0 0 1) (0 0 2) (0 0 3)))
3
(0 0 3)
Добавлено через 4 минуты
Lisp
1
2
3
4
5
6
7
8
(defun maxxx (w &aux (m (loop for a in w maximize (reduce #'+ a))))
  (loop for a in w
        when (= (reduce #'+ a) m) collect a into v
        finally (return (values m v))))
 
> (maxxx '((0 0 1) (0 1 2) (0 0 3)))
3
((0 1 2) (0 0 3))
1
0 / 0 / 0
Регистрация: 30.11.2017
Сообщений: 6
11.12.2017, 23:36  [ТС]
Выдает ошибку на homelisp

Assoc: символ for не имеет значения (не связан).
> ERRSTATE
0
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
12.12.2017, 00:13
Цитата Сообщение от Dzirten Посмотреть сообщение
очень тяжело для меня дается переход на функц. языки.
Вас обманули. Лисп не функциональный.
0
 Аватар для _sg
4709 / 4404 / 380
Регистрация: 12.05.2012
Сообщений: 3,101
12.12.2017, 08:57
варианты Common Lisp:
Lisp
1
2
3
4
5
6
7
8
9
10
11
(defun maxx (w
              &aux
              (m (reduce #'max w
                         :key #'(lambda (a)
                                  (reduce #'+ a)))))
  (loop for a in w
        when (= (reduce #'+ a) m) return (values m a)))
 
> (maxx '((0 0 1) (0 1 2) (0 0 3)))
3
(0 1 2)
Добавлено через 1 минуту
Lisp
1
2
3
4
5
6
7
8
9
10
11
(defun maxx (w
              &aux
              (m (reduce #'max w
                         :key #'(lambda (a)
                                  (eval (cons '+ a))))))
  (loop for a in w
        when (= (eval (cons '+ a)) m) return (values m a)))
 
> (maxx '((0 0 1) (0 1 2) (0 0 3)))
3
(0 1 2)
Добавлено через 3 минуты
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
(defun maxxx (w
              &aux
              (m (reduce #'max w
                         :key #'(lambda (a)
                                  (reduce #'+ a)))))
  (loop for a in w
        when (= (reduce #'+ a) m) collect a into v
        finally (return (values m v))))
 
> (maxxx '((0 0 1) (0 1 2) (0 0 3)))
3
((0 1 2) (0 0 3))
Добавлено через 56 секунд
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
(defun maxxx (w
              &aux
              (m (reduce #'max w
                         :key #'(lambda (a)
                                  (eval (cons '+ a))))))
  (loop for a in w
        when (= (eval (cons '+ a)) m) collect a into v
        finally (return (values m v))))
 
> (maxxx '((0 0 1) (0 1 2) (0 0 3)))
3
((0 1 2) (0 0 3))
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,709
Записей в блоге: 14
12.12.2017, 10:17
Лучший ответ Сообщение было отмечено Dzirten как решение

Решение

HomeLisp:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(defun task (matr)
  (let* ((sums (mapcar (lambda (x) (apply '+ x)) matr))
         (maxs (apply 'max sums))
         (pairs (mapcar 'list (range 0 (- (length sums) 1)) sums))
         (nmax (remove-if (lambda (p) (< (cadr p) maxs)) pairs)))
     (printline maxs)
     (mapcar (lambda (r) (printline (nth (car r) matr))) nmax)))
 
(task '((1 2 3 4) (4 2 0 1) (7 5 -6 3) (1 1 7 1) (2 0 3 1)))
10  ;; это максимальная сумма
(1 2 3 4) ;; это первая строка с макс. суммой
(1 1 7 1) ;; это вторая
 
==> ((1 2 3 4) (1 1 7 1))
2
0 / 0 / 0
Регистрация: 30.11.2017
Сообщений: 6
14.12.2017, 20:26  [ТС]
Выдает ошибку в home lisp:
EVFUN: Не найдена функция MAPCAR
Функция: MAPCAR Аргументы ((LAMBDA (X) (APPLY (QUOTE +) X)) MATR)
==>ERRSTATE

Добавлено через 7 минут
Скачал другую версию homelisp, все заработало

Добавлено через 9 минут
Спасибо большое за помощь!
0
 Аватар для _sg
4709 / 4404 / 380
Регистрация: 12.05.2012
Сообщений: 3,101
14.12.2017, 20:32
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(defun maxxxx (w &aux (m (maxx w)))
  (list m (maxxx w m)))
 
(defun maxxx (w m)
  (cond ((null w) nil)
        ((= (sum (car w)) m) (cons (car w) (maxxx (cdr w) m)))
        (t (maxxx (cdr w) m))))
 
(defun maxx (w
             &optional (m (sum (car w)))
             &aux (n (sum (car w))))
  (cond ((null w) m)
        ((> n m) (maxx (cdr w) n))
        (t (maxx (cdr w) m))))
 
(defun sum (w)
  (if w (+ (car w) (sum (cdr w))) 0))
 
> (maxxxx '((0 0 1) (0 1 2) (0 0 3)))
(3 ((0 1 2) (0 0 3)))
Добавлено через 3 минуты
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
(defun maxxxx (w &aux (m (maxx w)))
  (progn (princ m) (maxxx w m)))
 
(defun maxxx (w m)
  (cond ((null w) nil)
        ((= (sum (car w)) m) (cons (car w) (maxxx (cdr w) m)))
        (t (maxxx (cdr w) m))))
 
(defun maxx (w
             &optional (m (sum (car w)))
             &aux (n (sum (car w))))
  (cond ((null w) m)
        ((> n m) (maxx (cdr w) n))
        (t (maxx (cdr w) m))))
 
(defun sum (w)
  (if w (+ (car w) (sum (cdr w))) 0))
 
> (maxxxx '((0 0 1) (0 1 2) (0 0 3)))
3
((0 1 2) (0 0 3))
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.12.2017, 20:32
Помогаю со студенческими работами здесь

Есть ли разница между обычным выводом через echo и выводом с использованием HEREDOC-синтаксиса?
Есть ли разницы между двумя многострочными выводами ? первый записывается как строка, второй код вроде как специальный многострочный вывод...

Ассемблер\Работа с файлами\Поиск в файле\ввод искомого символа с клавиатуры с выводом результата на екран.
Всем доброго времени суток. проблема то вот в чем: мне необходимо сделать програму,вводишь с клавиатуры искомый символ(-лы),результат...

Перемножение полей формы с выводом суммы
Всем привет. Помогите))) Как перемножение два поля в форме с виводом суми в трете поле даной форми. Спасибо за внимание.

Проблемы с выводом общей суммы из файла в мемо
У меня было вот такое задание: 1.Составить программу записи в файл сведений о налиии N различных видов деталей на складе.Для каждой...

Поиск по таблице с выводом
Доброго дня. Есть таблица. На первом листе много разных данных, но нам нужны конкретные столбцы. Пример кину. Поиск должен проходить по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru