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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2008, 15:09   #1
I n n a
Новичок
Джуниор
 
Регистрация: 04.05.2008
Сообщений: 1
Вопрос Pascal двумерные массивы

Помогите пожалуйста решить задачу:
выполнить обработку числового двумерного массива, имеющего 4 строки и 5 столбцов.
Элементы массива должны вводиться с клавиатуры и для их ввода следует разработать процедуру.
Обработку и вывод результата необходимо выполнять с помощью подпрограмм.
Вычислить произведение элементов для каждого столбца. Поменять местами столбцы с максимальным и минимальным значением произведения.
I n n a вне форума Ответить с цитированием
Старый 06.05.2008, 01:58   #2
Vedun
Пользователь
 
Аватар для Vedun
 
Регистрация: 05.05.2008
Сообщений: 22
Радость Решение

Вот код программы,должна работать по правилам...

Код:
Program masi;
var
 mas:array[1..4,1..5] of integer;
 i,j:integer;
 min,max:integer;
 sch:array[1..5] of integer;
 n,x:integer;
Procedure vved;
 begin
  for i:=1 to 4 do
   for j:=1 to 5 do
    begin
     Write('Strok: ',i,'Stolb: ',j,': ');
     ReadLn(mas[i,j]);
    end;
 end;
Procedure vid;
 begin
  for j:=1 to 5 do
   begin
    for i:=1 to 4 do
     Write(mas[i,j],' ');
    ReadLn;
   end;
 end;
function st(i:integer):integer;
 var a:integer;
 begin
  a:=1;
  for j:=1 to 5 do
   a:=a*mas[i,j];
   st:=a;
 end;
begin
 vved;
 ClrScr;
 for i:=1 to 4 do
  if max<st(i) then max:=st(i);
 min:=max;
 for i:=1 to 4 do
  if min>st(i) then min:=st(i);
 for i:=1 to 4 do
  begin
   if max=st(i) then x:=i;
   if min=st(i) then n:=i;
  end;
 for j:=1 to 5 do
  begin
   sch[j]:=mas[x,j];
   mas[x,j]:=mas[n,j];
   mas[n,j]:=sch[j];
  end;
 vid;
 ReadLn;
end.
C#, MySQL, F*cking, Rock'n'roll and smile.

Последний раз редактировалось Vedun; 06.05.2008 в 02:10. Причина: Написал красивее:o
Vedun вне форума Ответить с цитированием
Старый 08.05.2008, 10:29   #3
veter_s_morya
ФорумчанинДжуниор
 
Аватар для veter_s_morya
 
Регистрация: 05.05.2008
Сообщений: 606
По умолчанию

Код не работаеть! error : Anrnown identifier!!!!! Вроде ввел как написано
------------------------------
Ум без разума –это беда!

Последний раз редактировалось veter_s_morya; 08.05.2008 в 10:31.
veter_s_morya вне форума Ответить с цитированием
Старый 08.05.2008, 13:50   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Приведенная программа работает, только в нвчале нужно добавить модуль Crt;, иначе программа не признает clrscr;
Однако что выдает эта программа одному богу известно, потому что в ней сплошной сумбур. Постоянно путаются строки со столбцами, никаких пояснений при выводе данных на экран. Переделал программу, стараясь по возможности сохранить стиль.
Код:
Program masi;
uses crt;
//объявляем тип, чтобы можно было работать с процедурами
type Tmatr=array[1..4,1..5] of integer;
var  
 mas:Tmatr;
 i,j:integer;   
Procedure vvod;  //объединил две процедуры в одну
begin  
  for i:=1 to 4 do  
   for j:=1 to 5 do
    begin  
     Write('Stroka: ',i,' Stolb: ',j,': ');
     ReadLn(mas[i,j]);   
    end;
clrscr;
writeln('Ishodnaia matrica:');
  for i:=1 to 4 do
   begin
    for j:=1 to 5 do
    Write(mas[i,j]:4);
    writeln;
   end;
end;
function Prz(j:integer):integer;//переименовал, больше похоже на произведение
var a:integer;
begin
  a:=1;
  for i:=1 to 4 do
  a:=a*mas[i,j];
  Prz:=a;
end;
Procedure Perest(var ms:Tmatr);  //по условию преобразования нужно оформить                  
                                  //процедурой
var max,min,jmax,jmin,x:integer;
begin
max:=Prz(1);min:=Prz(1);jmax:=1;jmin:=1;
 for j:=1 to 5 do
 if Prz(j)>Prz(j+1) then
     begin
        max:=Prz(j);
        jmax:=j;
     end
 else if Prz(j)<min then
      begin
        min:=Prz(j);
        jmin:=j;
      end;
 for i:=1 to 4 do
      begin
       x:=ms[i,jmin];
       ms[i,jmin]:=ms[i,jmax];
       ms[i,jmax]:=x;
      end;
 writeln('Perestanovka:');
 for i:=1 to 4 do
    begin
      for j:=1 to 5 do
      write(ms[i,j]:4);
      writeln;
    end;
end;
begin
 clrscr;
 vvod;
 for j:=1 to 5 do  //по условию нужно определить произведение в каждом 
                    //столбце(не в строке)
 writeln('Proizvedenie v stolbce ',j,'=',Prz(j));
 Perest(mas);
 ReadLn;
end.
puporev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[QBasic|Pascal] двумерные массивы PBJack Помощь студентам 5 06.12.2011 20:39
Двумерные массивы 3 (Pascal) Дима82 Помощь студентам 6 08.06.2008 14:38
Двумерные массивы 2 (Pascal) Дима82 Помощь студентам 3 08.06.2008 09:41
Двумерные массивы (Pascal) Дима82 Помощь студентам 11 07.06.2008 16:54