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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2009, 21:52   #1
jorjinho10
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 11
По умолчанию Помогите решить задачку на матрицу

ребята , помогите решить такую задачку:
Создать матрицу , вывести на экран , найти строку с наименьшей и наибольшей суммой элементов , вывести 2 эти строки и посчитать сумму их элементов (по отдельности).
Примечание : Матрица должна на экране выглядеть как матрица,(не в виде столбца(строки) с номером строки и столбца)

ВОПРОС ТАКОЙ КАК СДЕЛАТЬ ЭТО БЕЗ ФУНКЦИИ ИЛИ ПРОЦЕДУРЫ, НА ПРИМИТИВНОМ УРОВНЕ

Код:
program labrab5;
uses crt;
Const
Nmax=10;
NMAXIMUM=999999;
var i,j,imax,imin,min,max,m,n,b,c,l:integer;
    a,h,p:string[40];
    k:array[1..Nmax,1..Nmax] of real;

function Summ(t:integer):real;
var i:integer;
    sum:real;
begin
 sum:=0;
 for i:=1 to n do sum:=sum+k[t,i];
 summ:=sum;
end;

begin
 repeat
 repeat
 writeln('Vvedite kolvo strok v matrice (do ',Nmax,')');readln(p);
 until (p[1]<>'0') or (p[2]='.');
 val(p,m,l);
 if (l<>0) or (m<1) or (m>Nmax) or (p[1]='0') then Writeln('Oshibka! Povtorite vvod! ');
 until (l=0) and (m>=1) and (m<=Nmax);
 repeat
 repeat
 writeln('Vvedite kolvo stolbcov v matrice (do ',Nmax,')');readln(h);
 until (h[1]<>'0') or (h[2]='.');
 val(h,n,b);
 if (b<>0) or (n<1) or (n>Nmax) or (h[1]='0') then Writeln('Oshibka! Povtorite vvod! ');
 until (b=0) and (n>=1) and (n<=Nmax);
 writeln;

 for i:=1 to m do
 for j:=1 to n do
 begin
 repeat
 repeat
 write('k[',i,',',j,']: ');readln(a);
 until (a[1]<>'0') or (a[2]='.');
 val(a,k[i,j],c);
 if (c<>0) or (k[i,j]<-NMAXIMUM) or (k[i,j]>NMAXIMUM) then writeln('Oshibka! Povtorite vvod !');
 until (c=0) and (k[i,j]>=-NMAXIMUM) and (k[i,j]<=NMAXIMUM);
end;

 writeln;
 writeln('Vvedennaya matrica:');
 writeln;
 for i:=1 to m do
 begin
  for j:=1 to n do write(k[i,j]:7:1,' ');
  writeln;
 end;

 min:=1;
 imin:=1;
 max:=1;
 imax:=1;
 for i:=1 to m do if Summ(i)>=max then
 begin
 max:=i;
 imax:=i;
 end
 else if summ(i)<=min then
 begin
 min:=i;
 imin:=i;
 end;
 writeln;

 write('MIN: ');
 for i:=1 to n do write(k[min,i]:7:1,' ');
 writeln('  Summa= ',summ(min):5:1,' index=',imin);

 write('MAX: ');
 for i:=1 to n do write(k[max,i]:7:1,' ');
 writeln('  Summa= ',summ(max):7:1,' index=',imax);
 readln;
 clrscr;
end.

Последний раз редактировалось jorjinho10; 16.04.2009 в 21:58.
jorjinho10 вне форума Ответить с цитированием
Старый 16.04.2009, 22:55   #2
Викдон
Форумчанин
 
Аватар для Викдон
 
Регистрация: 11.11.2008
Сообщений: 161
По умолчанию

Код:
const n=10; m=10;

var Matrica: array[1..n,1..m] of integer;
    size1,size2,i,j:integer;
    number_min, number_max, summa ,min, max:integer;
begin
 repeat
  write('Vvedite chislo strok: (max 10)');
  readln(size1);
   if (size1>0) and (size1<=10) then
    break;
 until (false);

 repeat
  write('Vvedite chislo stolbcov: (max 10)');
  readln(size2);
   if (size2>0) and (size2<=10) then
     break;
 until (false);

  for i:=1 to size1 do
   for j:=1 to size2 do
    begin
     write('Vvedite element ',i,j,' :');
     readln(Matrica[i,j]);
    end;


  for i:=1 to size1 do
   begin
    write('|');
     for j:=1 to size2 do
      write(Matrica[i,j],' ');
    writeln('|');
   end;

   for i:=1 to size2 do
      summa:=summa+Matrica[1,i];
   min:=summa;
   max:=summa;
   number_min:=1;
   number_max:=1;


   for i:=1 to size1 do
    begin
    summa:=0;
      for j:=1 to size2 do
       summa:=summa+Matrica[i,j];
      if (min>summa) then
       begin
        min:=summa;
        number_min:=i;
       end
      else if (max<summa) then
       begin
        max:=summa;
        number_max:=i;
       end;

    end;

   write(' Stroka s min Summoi: ');
   summa:=0;
   for j:=1 to size2 do
    begin
    write(Matrica[number_min,j],' ');
    summa:=summa+Matrica[number_min,j];
    end;
   writeln(' Summa= ',summa);


   write(' Stroka s max Summoi: ');
   summa:=0;
   for j:=1 to size2 do
   begin
    summa:=summa+Matrica[number_max,j];
    write(Matrica[number_max,j],' ');
   end;
   write(' Summa= ',summa);
readln;
end.
Викдон вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите решить матрицу в паскале Deis Паскаль, Turbo Pascal, PascalABC.NET 14 22.01.2009 10:16
Помогите решить матрицу по матем Rymata Помощь студентам 2 12.06.2008 16:52
помогите решить задачку gorez Паскаль, Turbo Pascal, PascalABC.NET 10 08.04.2008 14:49