Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2012, 18:24   #1
Dominik74
 
Регистрация: 25.12.2011
Сообщений: 5
Хорошо Задача с модулями + массив Pascal

Помогите решить задачу с модулями:
- Дан двумерный массив. Найти сумму элементов с k1 до k2 строки.
Dominik74 вне форума Ответить с цитированием
Старый 24.03.2012, 18:26   #2
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

Наработки есть?
Levsha100 вне форума Ответить с цитированием
Старый 24.03.2012, 18:32   #3
Dominik74
 
Регистрация: 25.12.2011
Сообщений: 5
По умолчанию

есть код, не могу понять как сделать с модулями
Код:
const
  n = 5;
var
  mass: array[1..n, 1..n] of integer;
  Summa: integer;
  k1, k2, i, j: byte;
begin
  randomize;
  writeln('Исходный массив: ');
  for i:=1 to n do
  begin
    for j:=1 to n do
    begin
      mass[i, j]:=random(20);
      write(mass[i, j]:4);
    end;
    writeln;
  end;
  writeln('Введите номера двух строк: ');
    write('K1: ');
    readln(k1);
    write('K2: ');
    readln(k2);
  for i:=k1 to k2 do
    for j:=1 to n do
      inc(Summa, mass[i, j]);
  writeln('Сумма строк с ', k1, ' по ', k2, ': ', Summa);
end.
Dominik74 вне форума Ответить с цитированием
Старый 24.03.2012, 19:02   #4
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Ну вот вам модуль!
Код:
Unit Example; 
{--------------------------------} 
Interface 
     function GetSum (const mas: array of integer; const rows, k1, k2: byte): integer; 
{---------------------------------} 
Implementation 
     function GetSum;
     var
          i, j: byte;
     begin 
          GetSum := 0;
          if (k1 > 0) and (k2 <= n) then
              for i := k1 to k2 do
                  for j := 1 to rows do
                      GetSum := GetSum + mas[i,j];  
     end ; 
end.
писал с потолка
может быть неверен
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 24.03.2012, 19:18   #5
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

Файл Unit1.pas:
Код:
unit Unit1;

interface

const
  n = 5;

type
  AArray = array[1..n, 1..n] of integer;

function SumOfRows(const Arr: AArray; const K1, K2: Integer): Integer;

implementation

function SumOfRows(const Arr: AArray; const K1, K2: Integer): Integer;
var
  i, j: Integer;
begin
  Result := 0;
  for i := k1 to k2 do
    for j := 1 to n do
      inc(Result, Arr[i, j]);
end;

end.
Сама программа:
Код:
uses 
  Unit1; // <= !!!

var
  mass: AArray; // <= !!!
  k1, k2, i, j: byte;
begin
  randomize;
  writeln('Исходный массив: ');
  for i:=1 to n do
  begin
    for j:=1 to n do
    begin
      mass[i, j]:=random(20);
      write(mass[i, j]:4);
    end;
    writeln;
  end;
  writeln('Введите номера двух строк: ');
    write('K1: ');
    readln(k1);
    write('K2: ');
    readln(k2);

  writeln('Сумма строк с ', k1, ' по ', k2, ': ', SumOfRows(mass, k1, k2)); // <= !!!
end.
просто вынесли описание и работу с массивом в модуль... я бы вынес и заполнение массива туда, хотя не знаю нужно ли вам такое

Hacker19_90, увы, не совсем верно, хотя проверка на диапазона у меня вот отсутствует, что тоже не есть гуд

Последний раз редактировалось GreenWizard; 24.03.2012 в 19:26. Причина: ошибка в коде... var => type
GreenWizard вне форума Ответить с цитированием
Старый 24.03.2012, 19:45   #6
Dominik74
 
Регистрация: 25.12.2011
Сообщений: 5
По умолчанию

в общем сделал модули так, но ошибка: "Ошибка времени выполнения: Индекс выходит за границы массива - numb2.pas inc(Summa, x[i, j]);" Подскажите где ошибка?

файл numb1.pas
Код:
unit numb1;
Interface
const
  n = 5;
type  mass=array[1..n, 1..n] of integer;
implementation
end.
файл numb2.pas
Код:
unit numb2;
Interface
uses numb1;
procedure vvod_v_mas(var x:mass);
procedure vivod(var x:mass);
procedure SM(var x:mass);

implementation
var
  Summa: integer;
  k1, k2, i, j: integer;
  
{Процедура ввода в массив}  
procedure vvod_v_mas;
var i,j: integer;
begin
for i:=1 to n do
    for j:=1 to n do
        x[i,j]:=random(10);
end; 

{Процедура вывода} 
procedure vivod;
var i,j:integer;
begin
for i:=1 to n do
    begin
    for j:=1 to n do
        write(x[i,j]:4);
    writeln;
    end;
end;

{Процедура суммирования}
procedure SM;
var i,j: integer;
begin
  for i:=k1 to k2 do
    for j:=1 to n do
      inc(Summa, x[i, j]);
end;
end.
Сама программа:
Код:
uses numb1, numb2;
var   a:mass;
      Summa: integer;
      k1, k2: integer;
{Начало программы}
begin
vvod_v_mas(a);
vivod(a);
writeln('Введите номера двух строк: ');
readln(k1);
readln(k2);
SM(a);
writeln('Сумма строк с ', k1, ' по ', k2, ': ', Summa);
end.
Dominik74 вне форума Ответить с цитированием
Старый 24.03.2012, 20:02   #7
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

см. мой код и по аналогии пиши
главная ошибка: обьявление переменных глобальных в модулях
ещё ладно там хранение массива, k1 и k2... они реально одни на всю задачу, а i, j, summa? вот summa используется в задаче ввода массива? всё это локально пиши
а код компилируй вначале... я бы тоже матюкался, если бы мне тут обьявили процедуру с параметрами, а ниже уже без них... ты бы как отреагировал, если препод скажет "5", а в зачётке вдруг "1"?
GreenWizard вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с модулями с модулями DesignIntf и DesignEditors. Где найти их dcu? DrAndriy Общие вопросы Delphi 13 22.12.2017 20:55
[Pascal] Задача на массив. Kirimba Помощь студентам 2 05.12.2010 13:47
Задача на массив Pascal shozanah Помощь студентам 5 20.11.2010 23:44
помогите написать программу в Pascal c модулями ...Dreamer... Помощь студентам 2 07.05.2009 13:58