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

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

Вернуться   Форум программистов > Работа для программиста > Фриланс
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2007, 16:11   #1
Ассоль
Новичок
Джуниор
 
Регистрация: 23.12.2007
Сообщений: 0
Восклицание 3 лёгкие задачи)

1. Составьте программу упорядочения всех элементов по убыванию матрицы A(N, N).
2. Составьте программу вычисления среднего арифметического каждого столбца под главной диагональю (диагональ включать) матрицы B(N, N) и запишите данные значения в последний столбец данной матрицы.
3. Составьте программу удаления строки и столбца, которые содержат минимальный элемент матрицы C(N, N).

--------------------------------------------------------------------------------
ЛЮДИ ДОБРЫЕ ПОМОГИТЕ РЕШИТЬ! пожалуйста! срочно надо
Ассоль вне форума Ответить с цитированием
Старый 23.12.2007, 18:44   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Задача 1.
Способ может и не самый удачный, но работает.
Сначала разворачиваем в линейный массив, сортируем и обратно сворачиваем.
Код:
program mass1;
uses crt;
var n,i,j,k,m,x:integer;
    a:array[1..20,1..20] of integer;
    b:array[1..40]of integer;
begin
clrscr;
write('n=');readln(n);
randomize;
writeln('ischodnaia matrica:');
for i:=1 to n do
  begin
    for j:=1 to n do
      begin
        a[i,j]:=random(10);
        write(a[i,j]:2);
      end;
  writeln;
  end;
readln;
{lineiny massiv}
k:=0;
for i:=1 to n do
for j:=1 to n do
  begin
    k:=k+1;
    b[k]:=a[i,j];
  end;
{sortirovka po ubyvaniu}
for i:=1 to k-1 do
for j:=1 to k-1 do
if b[j]<b[j+1] then
   begin
     x:=b[j];b[j]:=b[j+1];b[j+1]:=x;
   end;
writeln('otsortirovannaia matrica:');
k:=1;
for i:=1 to n do
for j:=1 to n do begin
a[i,j]:=b[k];k:=k+1;
end;
for i:=1 to n do
  begin
    for j:=1 to n do
      begin
        write(a[i,j]:2);
      end;
  writeln;
  end;
readln;
end.
for i:=1 to n-1 do
for j:=1 to n-1 do
if a[j]>a[j+1] then begin x:=a[j];a[j]:=a[j+1];a[j+1]:=x;end;
for i:=1 to n do write(a[i],' ');readln
end.
puporev вне форума Ответить с цитированием
Старый 23.12.2007, 18:57   #3
Ассоль
Новичок
Джуниор
 
Регистрация: 23.12.2007
Сообщений: 0
По умолчанию

спасибо большое конечно))) а нельзя как-нибудь по-проще обойтись???
Ассоль вне форума Ответить с цитированием
Старый 23.12.2007, 19:29   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Предложите другой способ, я переделаю, хотя и в этом способе ничего сложного нет. Двухмерный массив, это тот же линейный, только выведенный по строкам. Значения матрицы все равно хранятся в линейном массиве [a11,a12..a1n,a21,a22..a2n,..ann], поэтому и сортировать его удобнее там.
Задача 2.
Код:
program mass1;
uses crt;
var n,i,j,k,m,x:integer;
    a:array[1..20,1..20] of integer;
    b:array[1..40]of integer;
begin
clrscr;
write('n=');readln(n);
randomize;
writeln('ischodnaia matrica:');
for i:=1 to n do
  begin
    for j:=1 to n do
      begin
        a[i,j]:=random(10);
        write(a[i,j]:2);
      end;
  writeln;
  end;
readln;
{lineiny massiv}
k:=0;
for i:=1 to n do
for j:=1 to n do
  begin
    k:=k+1;
    b[k]:=a[i,j];
  end;
{sortirovka po ubyvaniu}
for i:=1 to k-1 do
for j:=1 to k-1 do
if b[j]<b[j+1] then
   begin
     x:=b[j];b[j]:=b[j+1];b[j+1]:=x;
   end;
writeln('otsortirovannaia matrica:');
k:=1;
for i:=1 to n do
for j:=1 to n do begin
a[i,j]:=b[k];k:=k+1;
end;
for i:=1 to n do
  begin
    for j:=1 to n do
      begin
        write(a[i,j]:2);
      end;
  writeln;
  end;
readln;
end.
for i:=1 to n-1 do
for j:=1 to n-1 do
if a[j]>a[j+1] then begin x:=a[j];a[j]:=a[j+1];a[j+1]:=x;end;
for i:=1 to n do write(a[i],' ');readln
end.
Задача 3.
Код:
program mass3;
uses crt;
var n,i,j,min,imin,jmin:integer;
    c:array[1..20,1..20] of integer;
begin
clrscr;
write('n=');readln(n);
randomize;
writeln('ischodnaia matrica:');
for i:=1 to n do
  begin
    for j:=1 to n do
      begin
        c[i,j]:=random(20);
        write(c[i,j]:3);
      end;
  writeln;
  end;
readln;
{poisk min}
min:=c[1,1];imin:=1;jmin:=1;
for i:=1 to n do
for j:=1 to n do
if c[i,j]<min then
    begin
       min:=c[i,j];
       imin:=i;jmin:=j;
    end;
writeln('min=',min,' imin=',imin,' jmin=',jmin);
readln;
{udal stb}
for i:=1 to n do
   begin
     for j:=jmin to n do
       begin
         c[i,j]:=c[i,j+1];
       end;
   end;
{udal str}
for j:=1 to n do
   begin
     for i:=imin to n do
       begin
         c[i,j]:=c[i+1,j];
       end;
   end;
for i:=1 to n-1 do
   begin
     for j:=1 to n-1 do
       begin
         write(c[i,j]:3);
       end;
     writeln;
   end;
readln;
end.

Последний раз редактировалось puporev; 23.12.2007 в 19:56.
puporev вне форума Ответить с цитированием
Старый 23.12.2007, 20:19   #5
Ассоль
Новичок
Джуниор
 
Регистрация: 23.12.2007
Сообщений: 0
По умолчанию

спасибо большое) просто есть маленький нюанс. эти программы заданы в школе. т.е. были пройдены всего две темы- как задать двумерный массив,и 3 способа сортировки. больше никаких дополнительных возможностей не было узнано. и на основе этих знаний надо составить эти три программы(
Ассоль вне форума Ответить с цитированием
Старый 23.12.2007, 20:42   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

В первой задаче использовано создание двухмерного массива, который создается, как я уже говорил, из линейного массива данных. Потом выполнена сортировка этих данных методом "пузырька" и вывод отсортированного вектора(линейного массива) в виде матрицы.
В задаче три по условию нужно находить минимум, удалять столбцы и, если вы это не прроходили, то зачем задают?
Вместо второй задачи я еще раз выдал первую, вы похоже даже не заметили. Если вы не понимаете эти задачи, значит вас плохо учили и сами вы их не решите.
Задача 2.
Код:
program mass2;
uses crt;
var n,i,j,k:integer;
    b:array[1..20,1..20] of real;
    c:array[1..20]of real;
    sum,sar:real;
begin
clrscr;
write('n=');readln(n);
randomize;
writeln('ischodnaia matrica:');
for i:=1 to n do
  begin
    for j:=1 to n do
      begin
        b[i,j]:=random(10)+random;
        write(b[i,j]:5:2);
      end;
  writeln;
  end;
readln;
writeln('sar po stb:');
for j:=1 to n do
  begin
    sum:=0;
    for i:=j to n do
      begin
        sum:=sum+b[i,j];
        sar:=sum/(n-j+1);
      end;
    c[j]:=sar;
  end;
for i:=1 to n do
write(c[i]:5:2,' ');
readln;
writeln('Rezultat:');
j:=n;
for i:=1 to n do
b[i,j]:=c[i];
for i:=1 to n do
   begin
     for j:=1 to n do
       begin
         write(b[i,j]:5:2);
       end;
     writeln;
   end;
readln;
end.
puporev вне форума Ответить с цитированием
Старый 23.12.2007, 21:04   #7
Ассоль
Новичок
Джуниор
 
Регистрация: 23.12.2007
Сообщений: 0
По умолчанию

в любом случае бооольшое спасибо.
Ассоль вне форума Ответить с цитированием
Старый 22.07.2008, 16:17   #8
Albert2008
Пользователь
 
Регистрация: 17.07.2008
Сообщений: 26
По умолчанию

А теперь, будьте так любезны привести код для Delphi а не для Pascal и написать коммент к каждой строчке
Albert2008 вне форума Ответить с цитированием
Старый 22.07.2008, 16:28   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
А теперь, будьте так любезны привести код для Delphi а не для Pascal и написать коммент к каждой строчке
А это уже за деньги в Фриланс.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.07.2008, 00:46   #10
nikleb
Форумчанин
 
Регистрация: 04.04.2007
Сообщений: 131
По умолчанию

Первую можно решить просче:
Код:
program forum1;
uses crt;
var a:array[1..100,1..100]of integer;
    i,i2,min,n,v:integer;
begin
clrscr;
randomize;
writeln('Vvedi "N"');
readln(n);
for i:=1 to n do
    begin
    for i2:=1 to n do
        begin
        a[i,i2]:=random(10)+1;
        write(a[i,i2]:3);
        end;
    writeln;
    end;
for i:=1 to n do
    for i2:=2 to n do
        begin
        if (a[i,i2-1]<a[i,i2]) then
           begin
           v:=a[i,i2-1];
           a[i,i2-1]:=a[i,i2];
           a[i,i2]:=v;
           end;
        end;
writeln;
for i:=1 to n do
    begin
    for i2:=1 to n do
        write(a[i,i2]:3);
    writeln;
    end;
readln;
end.
Ну конечно и остальные тоже можно но не хочется. На Delphi нужно?
nikleb вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачи на С++ Nemisoi Фриланс 7 06.10.2011 22:55
Задачи... Раймир Фриланс 2 15.08.2008 17:13
задачи Evgenii Помощь студентам 1 04.01.2008 23:47
Задачи Настена Помощь студентам 1 18.12.2007 06:45
2 Задачи Stan Помощь студентам 4 02.06.2007 19:47