Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 26.12.2016, 23:23   #1 (permalink)
Smolny
Новичок
 
Регистрация: 26.12.2016
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Проблема с задачами по Паскалю

Дана матрица M*N. Найти сумму среди положительных и четных элементов в каждой строке с записью в оперативную память. Задание переписано дословно из лабораторной работы, помогите пожалкйста
Smolny вне форума   Ответить с цитированием

Старый 26.12.2016, 23:23
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Эти обсуждения очень схожи с вашей темой

Помогите с задачами на С++
Помощь с задачами, Pascal

Старый 26.12.2016, 23:46   #2 (permalink)
Uncle Vasya
Member
 
Регистрация: 04.12.2016
Сообщений: 131
Сказал(а) спасибо: 25
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3445
По умолчанию

Ну и в чём проблема? Если "с записью в оперативную память", то, очевидно, потребуется одномерный массив размерностью M для хранения суммы. Пройтись по матрице от 1 до M, для каждой строки перебрать все элементы от 1 до N и если он положительный и чётный, то в сумму для этой строки его добавить.
Uncle Vasya вне форума   Ответить с цитированием
Старый 27.12.2016, 12:38   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Uncle Vasya Посмотреть сообщение
Ну и в чём проблема? Если "с записью в оперативную память", то, очевидно, потребуется одномерный массив размерностью M для хранения суммы.
Ох, боюсь тут не так просто. Скорее всего, "с записью в оперативную память" означает использование динамических переменных и указателей. Вообще-то я в этом не очень, но ладно, после обеда, если будет время, попробую.
Vladimir_S вне форума   Ответить с цитированием
Старый 27.12.2016, 15:43   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Как-то так:
Код:
{$r-}
Const
 M=10;
 N=12;

Type
 T=Array[1..1] of Integer;

Var
 A,V:^T;
 D:^Integer;
 i,j:Integer;

Begin
 GetMem(A, SizeOf(Integer)*M*N);
 GetMem(V, SizeOf(Integer)*M);
 GetMem(D, SizeOf(Integer));

 Randomize;

 WriteLn('Matrix A:');
 for i:=1 to M do
  for j:=1 to N do
   A^[N*(i-1)+j]:=-10+Random(20);

 for i:=1 to M do
  begin
   for j:=1 to N do
    Write(A^[N*(i-1)+j]:5);
   WriteLn;
  end;
 WriteLn;
 Writeln;

 for i:=1 to M do
  begin
   New(D);
   D^:=0;
   for j:=1 to N do
    if (A^[N*(i-1)+j]>0) and ((A^[N*(i-1)+j] mod 2)=0) then D^:=D^+A^[N*(i-1)+j];
   V^[i]:=D^;
   Dispose(D);
  end;

 Writeln('Sums:');
 for i:=1 to M do Write(V^[i]:5);

 FreeMem(A, SizeOf(Integer)*M*N);
 FreeMem(V, SizeOf(Integer)*M);

 ReadLn;
END.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 19:01.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.