Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 22
1

Сортировочка

02.12.2013, 18:01. Показов 547. Ответов 0
Метки нет (Все метки)

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

Вот что есть :
Кликните здесь для просмотра всего текста

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
Program Test;
Uses Crt;
const Nmax=100;
Type Rec=Record
           Name:String[15];   {Страна}
           Area: Integer;         {Площадь}
         end;
     Table=array [1..Nmax] of Rec;
 
var T: Table;                {Основная таблица}
    n: integer;                 {Количество записей}
   ch: byte;
 
procedure InFileTab(var T: Table;
                    var n: integer);
{Чтение записей таблицы из файла}
var   f: file of rec;
      fname: string;
      ch:char;
begin
  ClrScr;
  repeat
    Writeln('Введите имя файла');
    ReadLn(fname);
    Assign(f,fname);
    {$I-}      {Отключение контроля ошибок ввода/вывода}
    Reset(f);
    {$I+}
    if IOResult<>0 then  {Файл не найден}
    begin
      WriteLn('Файл с указанным именем не найден');
      Writeln('Будете вводить новое имя: y/n?');
      ch:=ReadKey;
      if ch in ['n','N'] then
         Halt(0)
    end;
  until IOResult=0;
  n:=0;
  while not eof(f)do
  begin
    n:=n+1;
    read(f,T[n]);
  end;
close(f);
  WriteLn('Таблица загружена из файла ', fname);
  Write('Нажмите любую клавишу...');
  ReadKey;
end;
 
procedure InTab(var T: Table;
                var n: integer);
{Ввод записей таблицы с клавиатуры}
var    ch: char;
    fname: string;
        i: integer;
        f: file of rec;
begin
  ClrScr;
  n:=0;
  repeat
    n:=n+1;
    WriteLn('Введите ',n,'-ую запись табицы');
    Writeln('Страна');
    ReadLn(t[n].name);
    WriteLn('Площадь территории');
    Readln(t[n].area);
    WriteLn('Продолжить ввод:  y/n?');
    ch:=ReadKey;
  until ch in ['n','N'];
  Writeln('SOHRANIT VVEDENIE DANIE V FAILE? y/n');
  ch:=ReadKey;
  if ch in ['n','N'] then
     exit;
  Writeln('Введите имя файла');
  ReadLn(fname);
  Assign(f,fname);
{$I-}  {Отключение контроля ошибок ввода/вывода}
  Rewrite(f);
{$I+}
  for i:=1 to n do
    write(f, t[i]);
  close(f);
end;
 
procedure ShowTab(var T: Table;n: integer);
{PECHAT VSEH ZAPISEY TABLICI}
var i: Integer;
begin
  ClrScr;
  WriteLn('ZAPISI TABLICI:');
  WriteLn('+-------------+----------+');
  WriteLn('| COUNTRY     |TERRITORIA|');
  WriteLn('|-------------+----------|');
  for i:=1 to n do
   WriteLn('|',T[i].Name:12,'|',T[i].Area:9,'|');
  WriteLn('+-------------+----------+');
  WriteLn('NAZHMITE LUBUUY KLAVISHUя...');
  ReadKey;
end;
 
procedure PrintTab(var T:Table;
                   n,i,imin:integer);
{Промежуточная печать ключей для демонстрации алгоритма}
var k:Integer;
begin
  for k:=1 to n do
  begin
  if k=i then    {Позиция переставляемой записи}
  textattr:=red*16+white { Белые символы на красном фоне}
  else
   if k=imin then {Позиция записи с наименьшим ключём}
     textattr:=blue*16+white  {Белые символы на синем фоне}
   else
    textattr:=black*16+white;
   write(t[k].Area);
   textattr:=black*16+white;
   write('  ');
  end;
  writeln;
end;
 
begin
  repeat
    ClrScr;
    WriteLn('1. Ввести данные с клавиатуры.');
    WriteLn('2. Загрузить таблицу из файла.');
    WriteLn('3. Показать таблицу.');
    WriteLn('4. Сортировка таблицы.');
    WriteLn('------------------------------');
    WriteLn('0. Выход.');
    Write('Ваш выбор: ');
    ReadLn(ch);
    Case ch of
      1: InTab(T,n);
      2: InFileTab(T,n);
      3: ShowTab(T,n);
    end; {case}
  until ch=0;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.12.2013, 18:01
Ответы с готовыми решениями:

СОРТИРовочка
Имеется таблица: поле1 | поле2 ----------------- данные1 | данн ----------------- ...

Сортировочка
Может ли быть такое, что oracle для разных пользователей одной схеvы по-разному сортирует column...

Интерестная сортировочка массива!
Постановка задачи: дан массив A, отсортировать столбцы по неубыванию последних элементов...


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

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