Автор Тема: [TP] Задача. Массивы  (Прочитано 2756 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн privatnebank

  • Пользователь
  • **
  • Сообщений: 24
    • Просмотр профиля
[TP] Задача. Массивы
« : 16 Февраля 2010, 15:06:13 »
Такое условие: Даны целочисленные таблицы A[1..10] и В[1..10], причем
A[1]<A[2]<...<A[10]
B[1]<B[2]<...<B[10]
Постройте таблицу C[1..20], содержащую все элементы таблиц A и В, в которой
C[1]<C[2]<...<C[10]
Я решил её так:
program qwqw;
  var
  a,b: array [1..10] of Integer;
  c  : array [1..20] of Integer;
  i,j : Integer;
  buf: Integer;
  begin
  randomize;
  for i:=1 to 10 do
  begin
      {$R-}
      a[i]:=random(20)-7;
      b[i]:=random(10)-3;
      {$R+}
      end;
  WriteLn('Имеется два челочисленных массива A и В :');
  Write('a[');
  for i:=1 to 10 do Write(a[i],' ');
  WriteLn(']');
  Write('b[');
  for i:=1 to 10 do Write(b[i],' ');
  Write(']');
  ReadLn;
  {Сортируем оба массива}
  WriteLn('Сортируем массивы в порядке возрастания:');
  for i:=1 to 9 do
       for j:=i+1 to 10 do
         begin
                  if a[i]>a[j] then
               begin
                          buf:=a[i];
                            a[i]:=a[j];
                            a[j]:=buf;
                     end;
                 if b[i]>b[j] then
               begin
                          buf:=b[i];
                            b[i]:=b[j];
                            b[j]:=buf;
                     end;
          end;
  {Выводим отсортированные массивы}
  Write('a[');
  for i:=1 to 10 do Write(a[i],' ');
  WriteLn(']');
  Write('b[');
  for i:=1 to 10 do Write(b[i],' ');
  WriteLn(']');
  ReadLn;

  {Заполняем массив С[1..20]}
  for i:=1 to 20 do
  {Сначала элементами массива a[1..10]}
       if i<=10 then
                      c[i]:=a[i]
          else
  {Затем элементами массива b[1..10]}
       if i<=20 then
                      c[i]:=b[i-10];
  {Сортируем массив С[1..20]}
  for i:=1 to 19 do
      for j:=i+1 to 20 do
         begin
                  if c[i]>c[j] then
               begin
                            buf:=c[i];
                            c[i]:=c[j];
                            c[j]:=buf
                     end;
          end;
  {Выводим массив}
  Write('Полученный массив: c[');
  for i:=1 to 20 do Write(c[i],' ');
  Write(']');
  ReadLn;
  end.
Можно ли как-нибудь по другому реализовать процесс заполнения и сортировки массива С согласно поставленному условию? Например, чтоб он сразу и сортировал в порядке возрастания и одновременно заполнял массив С?

Оффлайн InfStudent

  • Модератор
  • *****
  • Сообщений: 1356
  • Куба любовь моя))
    • Просмотр профиля
Re: [TP] Задача. Массивы
« Ответ #1 : 16 Февраля 2010, 17:39:47 »
Ну почитайте про сортировку вставками, она такое поведение реализует
Прежде чем задавать вопрос в раздел по программированию повтори теорию и посмотри FAQ! Просьба не кидайте задания в ЛС и не надо мне писать: "посмотри мою задачу!!!" Я смотрю все задачи в разделе когда на форуме
Учтите что подобные ЛС будут оставлены без внимания!
УКАЗЫВАЙТЕ ЯЗЫК ПРОГРАММИРОВАНИЯ НА КОТОРОМ ДОЛЖНА БЫТЬ РЕШЕНА ЗАДАЧА
Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

Оффлайн privatnebank

  • Пользователь
  • **
  • Сообщений: 24
    • Просмотр профиля
Re: [TP] Задача. Массивы
« Ответ #2 : 16 Февраля 2010, 22:00:48 »
А если вот такое условие: Дана прямоугольная целочисленная таблица A[1:5,1:5]. Найдите наименьшее целое число К, обладающее таким свойством: хотя бы в одной строке таблицы все элементы не превосходят К.
Можете подсказать, от чего хоть отталкиваться надо? А то я уже думаю думаю, а придумать не могу...

Оффлайн InfStudent

  • Модератор
  • *****
  • Сообщений: 1356
  • Куба любовь моя))
    • Просмотр профиля
Re: [TP] Задача. Массивы
« Ответ #3 : 19 Февраля 2010, 01:44:12 »
Здесь попробуем так: ищем min таблицы,его сравниваем с элементами строк,если условие выполненно->стоп,нет,то   min1>min таблицы и снова повторяем процесс.
Пока IsMin=false
1) Найти min таблицы
2) Запомнить его
3) for i:=1 to 5 do
begin
for j:=1 to 5 do
begin
if a[j]>min then
begin
IsMin:=false;
break;
end
IsMin:=true;
end;
4) Если IsMin false искать новый минимум>min
4.1) Иначе Завершить работу  
« Последнее редактирование: 19 Февраля 2010, 01:46:42 от InfStudent »
Прежде чем задавать вопрос в раздел по программированию повтори теорию и посмотри FAQ! Просьба не кидайте задания в ЛС и не надо мне писать: "посмотри мою задачу!!!" Я смотрю все задачи в разделе когда на форуме
Учтите что подобные ЛС будут оставлены без внимания!
УКАЗЫВАЙТЕ ЯЗЫК ПРОГРАММИРОВАНИЯ НА КОТОРОМ ДОЛЖНА БЫТЬ РЕШЕНА ЗАДАЧА
Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

 

Олимпиадная задача "Дипломы"

Автор DrXakep

Ответов: 0
Просмотров: 4620
Последний ответ 30 Декабря 2012, 14:09:40
от DrXakep
Задача паскаль. Составить программу для построения таблицы значений

Автор Rydon

Ответов: 1
Просмотров: 6954
Последний ответ 21 Декабря 2009, 15:49:38
от Rydon
Срочно надо написать курсовую по информатике. Задача на языке VBA.

Автор lana

Ответов: 1
Просмотров: 4372
Последний ответ 12 Сентября 2010, 19:29:18
от InfStudent
Паскаль(задача). Составить программу определения показания часов

Автор Fairmont

Ответов: 0
Просмотров: 5034
Последний ответ 24 Февраля 2011, 21:25:22
от Fairmont
Задача в Turbo С. Написать программу построения одномерного массива

Автор deamond

Ответов: 1
Просмотров: 2590
Последний ответ 21 Декабря 2011, 12:04:34
от Hellko