Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
338 / 127 / 114
Регистрация: 09.04.2011
Сообщений: 246
1

Получить упорядоченную по невозрастанию последовательность длины n+m из членов исходных

19.05.2011, 18:31. Показов 1393. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Даны две упорядоченные по невозрастанию последовательности a(1..m) и b(1..n) . Получить упорядоченную по невозрастанию последовательность длины n+m из членов данных последовательностей.

(Разбить задачу на подзадачи таким образом, чтобы решение каждой подзадачи описывалось подпрограммой, а основная программа состояла бы из последовательности вызовов подпрограмм)

Pascal
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
Program lab4rr;
const
  m=3;
  n=4;
type
  TA = array [1..m] of integer;
  TB = array [1..n] of integer;
  TC = array [1..m+n] of integer;
procedure someproc(a:TA;b:TB;var c:TC);
var
  i:integer;
  ixA,ixB:integer;
begin
  ixA:=1;
  ixB:=1;
  for i := 1 to m+n do
    if (a[ixA]>b[ixB]) or (ixB>n) then
      begin
        c[i]:=a[ixA];
        inc(ixA)
      end
    else
      begin
        c[i]:=b[ixB];
        inc(ixB)
      end
end;
var
  a:TA;
  b:TB;
  c:TC;
  i:integer;
begin
  a[1]:=3;
  a[2]:=2;
  a[3]:=1;
  b[1]:=8;
  b[2]:=5;
  b[3]:=3;
  b[4]:=1;
  someproc(a,b,c);
  writeln;
  for i := 1 to m+n do
    write(c[i],',');
  writeln;
  readln;
end.
Программа работает, но не для всех последовательностей.
Например при a=12 11 10 и b=4 3 2 1 происходит выход за границы.
Исправьте пожалуйста, буду чрезмерно благодарен.
Да и ввод нужно сделать с клавиатуры, а не так:

Pascal
1
2
3
4
5
6
7
8
begin
  a[1]:=3;
  a[2]:=2;
  a[3]:=1;
  b[1]:=8;
  b[2]:=5;
  b[3]:=3;
  b[4]:=1;
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.05.2011, 18:31
Ответы с готовыми решениями:

Получить упорядоченную по невозрастанию последовательность длины n+m из членов данных последовательностей
Задание: Даны две упорядоченные по невозрастанию последовательности a длины n и b длины m. Получить...

Получить упорядоченную по невозрастанию последовательность
Даны две последовательности. Получить упорядоченную по невозрастанию последовательность, состоящую...

Получить упорядоченную по невозрастанию последовательность
Даны две упорядоченные по невозрастанию последовательности a(1..m) и b(1..n) . Получить...

Получить упорядоченную по невозрастанию последовательность, состоящую из тех членов первой последовательности, которых нет во второй
кот Бегемот, а на Паскале можешь первую задачу написать?

3
Просто хороший человек
392 / 182 / 24
Регистрация: 26.04.2011
Сообщений: 434
19.05.2011, 20:29 2
Твой алгоритм некорректный.
В данной задаче ничего сложного нет. Все что нужно сделать это:
1. Перегнать данных два массива в одни массив.
2. Отсортировать массив по убыванию. (смотри методы сортировки массивов)
1
338 / 127 / 114
Регистрация: 09.04.2011
Сообщений: 246
19.05.2011, 20:38  [ТС] 3
Цитата Сообщение от sannee Посмотреть сообщение
Твой алгоритм некорректный.
В данной задаче ничего сложного нет. Все что нужно сделать это:
1. Перегнать данных два массива в одни массив.
2. Отсортировать массив по убыванию. (смотри методы сортировки массивов)
Это уже другой вариант программы... В начальном варианте примерно так и делал, но там было много ошибок и начал снова другим путем.
Могли бы вы написать ваш вариант первого пункта (процедурой) ?
1
Просто хороший человек
392 / 182 / 24
Регистрация: 26.04.2011
Сообщений: 434
19.05.2011, 21:09 4
Лучший ответ Сообщение было отмечено как решение

Решение

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



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
uses crt;
var
  a:array [1..9999] of integer;
  b: array [1..9999] of integer;
  c: array [1..9999] of integer;
  max, max1, max2: integer;
 temp,i,change:integer;
begin
 
clrscr;
 writeln('ўўҐ¤ЁвҐ ¤«Ё*г ЇҐаў®© Ї®б«Ґ¤.:');
 readln(max1);
 writeln('ўўҐ¤ЁвҐ ¤«Ё*г ўв®а®© Ї®б«Ґ¤.:');
 readln(max2);
 max:=max1+max2;
  writeln('ўўҐ¤ЁвҐ ЇҐаўго Ї®б«Ґ¤®ў.:');
  for i:=1 to max1 do
  begin
  readln(a[i]);
  c[i]:=a[i];
  end;
   writeln('ўўҐ¤ЁвҐ ўв®аго Ї®б«Ґ¤®ў.:');
  for i:=1 to max2  do
  begin
  readln(b[i]);
  c[i+max1]:=b[i];
  end;
  writeln;
  change:=-1;
  while change<>0 do
  begin
    change:=0;
    for i:=2 to max do
      if c[i]>c[i-1] then
      begin
        inc(change);
        temp:=c[i-1];
        c[i-1]:=c[i];
        c[i]:=temp
      end
  end;
  writeln('१г«мв*в:');
  for i:=1 to max do
    write(c[i],' ');
  writeln
end.
3
19.05.2011, 21:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.05.2011, 21:09
Помогаю со студенческими работами здесь

Получить упорядоченную по невозрастанию последовательность, состоящую из тех членов первой последовательности, которых нет во второй
Даны две последовательности. Получить упорядоченную по невозрастанию последовательность, состоящую...

Получить упорядоченную по убыванию последовательность, состоящую из всех различных членов исходной
Дана целочисленная последовательность. Получить упорядоченную по убыванию последовательность ,...

Получить упорядоченную по возрастанию последовательность
Дана целочисленная последовательность. Получить упорядоченную по возрастанию последовательность,...

Получить упорядоченную последовательность чисел, встречающихся в массиве более двух раз
Не могу написать прогу(...Дан массивы x целых чисел получить упорядоченную последовательность чисел...


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

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