3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
1

Расставить элементы строк с четными номерами матрицы в порядке убывания.

24.09.2008, 22:53. Показов 2411. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте ув. программисты, вот у меня есть задачка...
Условие:Дана матрица A порядка n. Расставить элементы строк с четными номерами матрицы в порядке убывания.(Ну и записать его в текстовый файл, но это не важно...)
Решил использовать такой код для сортировки:

Код
procedure provepka(var a:matr;namefil:stroka);
var
    dop:real;
    b:array [1..100] of real;
    w:text;
begin
    assign(w,namefil);
    rewrite(w);
    for i:=1 to n do
        e:=1;
    begin
        for j:=1 to n do
            If (j mod 2)=0 then
            begin
                b[e]:=a[i,j];
                e:=e+1;
            end;
        for l:=2 to d do
        begin
            for e:=d downto l do
                if b[e-1]<b[e] then
                begin
                    dop:=b[e-1];
                    b[e-1]:=b[e];
                    b[e]:=dop;
                end;
        end;
        e:=1;
        for j:=1 to n do
            if (j mod 2)=0 then
            begin
                a[i,j]:=b[e];
                e:=e+1;
            end;
        end;
        for i:=1 to n do
        begin
            writeln(w);
            for j:=1 to n do
                write(w,a[i,j]:10:3);
        end;
        close(w);
    end;
Делаю пошагово на листке бумаги работает, делаю на паскале пишет мне такую же матрицу которую и вводил...Мне надо что-бы вы мне указали где у меня ошибка.
Для сортировки использовал пузырьковый метод.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.09.2008, 22:53
Ответы с готовыми решениями:

Расставить эл. строк с четными № в порядке убываниядке
Дана матрица A порядка n. Расставьте элементы строк с четными номерами матрицы в порядке убывания.

Вывести элементы массива с четными номерами в порядке возрастания номеров
Данный массив А размера N (N - четное число). Вывести его элементы с четными номерами в порядке...

Вывести элементы матрицы, расположенные в строках с четными номерами
Помогите плиз зделать задачку Дана матрица размера M x N Вывести её элементы расположенные в...

Расставить цифры в порядке убывания.
Нужно расставить любые пять цифр в порядке убывания. Помогите, пожалуйста.

5
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
24.09.2008, 22:59  [ТС] 2
Ну да, забыл я про регистрацию, кстати stroka заранее описана, так что не думайте об этом, матрица вводится заранее пользователем и используется этой процедурой для сортировки.
0
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
25.09.2008, 00:26 3
Что-то совсем неправильно написана программа, поэтому трудно править. Я лучше Вам напишу другую, а Вы исправите свою.
Код
uses crt;
var R:array[1..15,1..15]of integer;//матрица, а не линейный массив, как у Вас
n,i,j,k,x:integer;
begin
clrscr;
write('n=');readln(n);
writeln('Ishodnaia matrica:');
for i:=1 to n do  //создаем и выводим на экран матрицу (у Вас чтение из файла)
     begin
      for j:=1 to n do
        begin
          R[i,j]:=random(20);
          write(R[i,j]:3);
      end;
writeln;
end;
readln;
for i:=1 to n do
if i mod 2=0 then //если строка нечетная
     begin
        for j:=1 to m-1  do  //сортируем методом пузырька (Ваш метод не понял)
        for k:=1 to m-1  do
        if R[i,k]>R[i,k+1] then
            begin
              x:=R[i,k];
              R[i,k]:=R[i,k+1];
              R[i,k+1]:=x;
            end;
       end;
for i:=1 to n do  //выводим на экран
    begin
       for j:=1 to m do
       write(R[i,j]:3);
       writeln;
    end;
readln;
end.
0
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
25.09.2008, 01:11  [ТС] 4
ув. Puporev
Не хотел бы усомнится в ваших знаниях, т.к. читал форум и видел что человек вы знающий паскаль, но помоему вы не правильно поняли условие задачи... разжовываю ... я писал ранее что мне надо сделать сортировку чётных элементов и по убыванию, в вашем коде во-первых я не понял почему
if i mod 2=0 then //если строка нечетная
(как мне казалось 1 mod 2=5??? а например 2 mod 2=0).Мне надо рассортировать чётные элементы во всех строках, а не в чётных или не чётных (ну типа элементы A[1,2] A[1,4] и т.д.).Я использовал строчный массив не для матрицы, а т.к. думал занести в этот массив все чётные элементы i-ой строки
Код
for j:=1 to n do
   If j mod 2=0 then
   begin
    b[e]:=a[i,j];
    e:=e+1;
   end;
потом рассортировать этот строчный массив
Код
for l:=2 to d do
   begin
    for e:=d downto l do
     if b[e-1]<b[e] then
    begin
     dop:=b[e-1];
     b[e-1]:=b[e];
     b[e]:=dop;
    end;
   end;
а потом всем чётным элементам i-ой строки присвоить значения отсортированного одномерного массива...
Код
  e:=1;
   for j:=1 to n do
    if j mod 2=0 then
    begin
     a[i,j]:=b[e];
     e:=e+1;
    end;
ну и повторить эти действия для всех строк...

Добавлено через 32 минуты 15 секунд
Всё работает !!!! Ухааа, как всегда ошибка была в теле программы, а не в описании процедур... рассказываю мот кому пригодится... значит процедуру сортировки малёк подкорректировал
Код
procedure provepka(var a:matr;namefil:stroka);
var
 dop:real;
 b:array [1..100] of real;
 w:text;
begin
 assign(w,namefil);
 rewrite(w);
 for i:=1 to n do
 begin
  for l:=1 to d do
  j:=2;
  begin
   for e:=d downto l do
   if a[i,j]<a[i,j+2] then
    begin
     dop:=a[i,j];
     a[i,j]:=a[i,j+2];
     a[i,j+2]:=dop;
    end;
   j:=j+2;
   end;
  end;
 for i:=1 to n do
 begin
  writeln(w);
  for j:=1 to n do
   write(w,a[i,j]:10:3);
 end;
 close(w);
end;
а ошибка у меня была вот в чём, я использовал в своей сортировке 'd' имея ввиду что d=n div 2; и использовал его как бы числом которое показывает количество чётных чисел...Вот так раньше тело программы у меня было такое...
Код
begin
 d:=(n div 2);
 vvodmatr(a,'matrica1.txt',n);
 provepka(a,'matrica2.txt');
end.
и конечно я не задумывался что d у меня здесь равно '0'... а теперь я сделал так...
Код
begin
 vvodmatr(a,'matrica1.txt',n);
  d:=(n div 2);
 provepka(a,'matrica2.txt');
end.
И всё норм Puporev всё-таки не так понял моё условие задачи и кстати этот метод пузырька я просто вычитал и использовал на своём частном примере, он не совсем стандартный
0
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
25.09.2008, 07:10 5
Извини конечно, не понял я потому что задание надо излагать четче и желательно с примером, что имеем и что хотим, да и времени у меня был третий час ночи.
0
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
25.09.2008, 14:12  [ТС] 6
Задание изложена в такой же форме и у меня в методичке так-что не легко приходится, а тему можно close.
0
25.09.2008, 14:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.09.2008, 14:12
Помогаю со студенческими работами здесь

Расставить цифры в числе в порядке убывания
Нужно написать прогу, в которую вводится число, а она выдаёт максимальное число из цифр заданного...

Напечатать элементы второй строки матрицы в порядке убывания
Дано квадратную матрицу размерности n x n.Напечатать элементы второй строки в порядке убывания.

Вычислить суммы элементы строк матрицы, номера которых определяются номерами положительных элементов вектора
помогите с решением задачи, условий ограничивающих нет: в полученной матрице вычислить суммы...

Среднее арифметическое значение строк массива с четными номерами
С помощью текстового редактора «Блокнот» сформируйте текстовый файл, «Data1.txt», содержащий 10...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru