На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
  
> Копирование элементов
    Здравствуйте! Помогите, пожалуйста. Нужно переформировать матрицу таким образом, чтобы ее столбцы располагались по возрастанию их последних элементов. Вот код:

    ExpandedWrap disabled
      type vecd=array of integer;
           matrd=array of vecd;
       
      Var a,b:matrd;
          rab,p:vecd;
          per,m,n,k,i,j,buf:integer;
       
      procedure input(m1:integer; n1:integer; var a1:matrd);
      var i,j:integer;
      begin
       for i:=0 to m1-1 do setlength(a1[i],n1);
       writeln('Введите исходную матрицу: ');
       for i:=0 to m1-1 do
        for j:=0 to n1-1 do read(a1[i,j]);
       readln;
      end;
       
      procedure output(var m1:integer; n1:integer; a1:matrd);
      var i,j:integer;
      begin
       for i:=0 to m1-1 do
       begin
        for j:=0 to n1-1 do
        write(a1[i,j]:4);
        writeln;
       end;
      end;
       
      Begin
       writeln('Введите размеры матрицы: ');
       write('m=');readln(m);
       write('n=');readln(n);
       setlength(a,m);
       for i:=0 to m-1 do setlength(a[i],n);
       setlength(b,n);
       for i:=0 to n-1 do setlength(b[i],m);
       setlength(p,n);setlength(rab,n);
       input(m,n,a);
       writeln('Данная матрица A: ');
       output(m,n,a);
       
       for i:=0 to m-1 do
        for j:=0 to n-1 do  b[j,i]:=a[i,j];
       writeln('Транспонированная матрица A: ');
       output(n,m,b);
       
       for i:=0 to n-1 do p[i]:=b[i,m]; //Вся проблема в этой строчке
       writeln('Последний столбец транспонированной матрицы: ');
         for i:=0 to n-1 do write(p[i]:4);
       writeln;
       
       per:=0;
       for i:=0 to n-2 do
        for k:=i downto 0 do
         if p[k]>p[k+1] then
         begin
          buf:=p[k]; p[k]:=p[k+1]; p[k+1]:=buf;
          rab:=b[k]; b[k]:=b[k+1]; b[k+1]:=rab;
          inc(per);
         end;
       if per<>0 then
       begin
        writeln('Измененная транспонированная матрица: ');
        output(n,m,b);
        for i:=0 to n-1 do
         for j:=0 to m-1 do  a[j,i]:=b[i,j];
       
        writeln('Полученная матрица: ');
        output(m,n,a);
       end
       else
       writeln('Матрица не изменена.');
       a:=nil; p:=nil; rab:=nil; b:=nil;
       readln;
      End.


    Откуда берутся числа - неизвестно. Получается, например, так:

    Введите размеры матрицы:
    m=3
    n=2
    Введите исходную матрицу:
    4 5 6 7 8 9
    Данная матрица A:
    4 5
    6 7
    8 9
    Транспонированная матрица A:
    4 6 8
    5 7 9
    Последние элементы строк транспонированной матрицы:
    26 22
    Измененная транспонированная матрица:
    5 7 9
    4 6 8
    Полученная матрица:
    5 4
    7 6
    9 8
        Der_Meister, это, конечно, замечательно, только С++ я не знаю вообще =(
          http://www.google.com/search?client=opera&rls=en&q=%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0+%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B+pascal&sourceid=opera&ie=utf-8&oe=utf-8

          ссылка №1
            Цитата
            for i:=0 to n-1 do p[i]:=b[i,m]; //Вся проблема в этой строчке

            for i:=0 to n-1 do p[i]:=b[i,m-1]; //Вся проблема в этой строчке

            ЗЫ. Запустила с этим изменением. На указанном примере работает правильно.
            Печатает 8, 9 и матрица не изменена.
            Сообщение отредактировано: Swetlana -
              Swetlana, спасибо Вам! ^_^ Вот я глупая :lool:
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0459 ]   [ 15 queries used ]   [ Generated: 3.05.24, 03:08 GMT ]