0 / 0 / 0
Регистрация: 14.01.2014
Сообщений: 6
1

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

14.01.2014, 19:33. Показов 1494. Ответов 1
Метки нет (Все метки)

Добрый день всем. Нужна помощь в решении нелегкой (для меня) задачки...
Дана матрица A порядка n. Расставьте элементы строк с четными номерами матрицы
в порядке убывания.
Вот, собственно, тело.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
program matr111;
 
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils, matr;
type
  matr=array[1..100, 1..100] of Real;
var
  a:matr;
 
begin
  VvodM(a,'in.txt',n);
  d:=(n div 2);
 proverka(a,'out.txt');
end.
А вот юнит matr. Что-то у меня не выходит.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
unit matr;
 
interface
 
uses
  SysUtils;
type
  matr=array[1..100, 1..100] of Real;
 
procedure VvodM(var m,n:Integer);
procedure proverka(var a:matr);
 
implementation
 
procedure VvodM(var m,n:Integer);
var
   i,j:integer;
   fin:text;
begin
   assignfile(fin, 'in.txt');
   reset(fin);
   read(fin, m,n);
   for i:=1 to m do
   for j:=1 to n do
   Read(fin, a[i,j]);
   close(fin);
end;
 
procedure provepka(var a:matr);
var
  i,l,j,e,d:Integer;
 dop:real;
 b:array [1..100] of real;
 fout:text;
begin
 assign(fout,'matr.txt');
 rewrite(fout);
 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(fout);
  for j:=1 to n do
   write(fout,a[i,j]:10:3);
 end;
 close(fout);
end;
end.
Не могли бы помочь с ошибками?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.01.2014, 19:33
Ответы с готовыми решениями:

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

Расставить элементы строк с четными номерами матрицы в порядке убывания.
Здравствуйте ув. программисты, вот у меня есть задачка... Условие:Дана матрица A порядка n....

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

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

1
261 / 236 / 161
Регистрация: 10.12.2011
Сообщений: 513
15.01.2014, 11:02 2
Лучший ответ Сообщение было отмечено TemMax как решение

Решение

Интерестно вы ли этот модуль составляли ?)

Внимание !
Pascal
1
procedure VvodM(var m,n:Integer);
Можно передать только две целочисленные переменные.

Ваш код :

Pascal
1
VvodM(a,'in.txt',n);
Вы же умудряетесь передать матрицу, текстовый файл, и размер матрицы ( при этом даже не введя размер, и не инициализируя его). И зачем передавать пустую матрицу ?)

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
uses
  SysUtils, matr;
type
  matr=array[1..100, 1..100] of Real;
var
  a:matr;
 
begin
  VvodM(a,'in.txt',n);
  d:=(n div 2); 
 proverka(a,'out.txt');
end.
И это заработало ? а инициализировать переменную d ( Вопрос зачем она там вообще нужна ).

Перед имплементом поменяйте и в объявлении самой процедуры.

Pascal
1
procedure VvodM(f: text; n:Integer);
Лучше думаю файл in.txt подключить в основном блоке программы, а обработку и создание массива + вывод оставить на откуп модулю.

Pascal
1
2
3
4
5
6
7
8
9
10
11
uses
  SysUtils, matr;
var
  size: shortint;
  f: text;
 
begin
  write('Enter size: ');readln(size);
  assignfile(f, 'in.txt'); 
  VvodM(f,size);
end.

После создания матрицы внутри процедуры надо вызвать процедуру проверки внутри и передать ей массив, например так:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
procedure VvodM(f: text; size:Integer);
var
   i,j:integer;
begin
   reset(f);
   read(f, n);
   for i:=1 to n do
   for j:=1 to n do
   Read(f, a[i,j]);
   close(f);
   proverka(a);
end;
П.с Дальше дерзайте сами. Видно что не вы писали программу. Потому, что даже при вводе матрицы у вас тоже скорее всего возникнут ошибки.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.01.2014, 11:02
Помогаю со студенческими работами здесь

Вывести элементы с нечетными номерами в порядке возрастания номеров, а затем - элементы с четными номерами в порядке убывания номеров
Дан массив A размера N. Вывести вначале его элементы с нечетными номерами в порядке возрастания...

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

Вывести элементы массива с четными номерами в порядке убывания номеров
Элементы массивов задать с помощью генератора случайных чисел (блок присваивания, команда Random)....

Вывести вначале элементы массива с нечетными номерами в порядке возрастания номеров, затем - элементы с четными в порядке убывания номеров
дан массив А размера N.вывести вначале элементы с нечетными номерами в порядке возрастания...


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

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

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