#include <iostream>
#include <string>
#include <conio.h>
<span>#include <cstdlib>
using namespace std;
struct TRAIN
{
string name,time;
int number;
};
void qs(struct TRAIN *arr,int first,int last)
{
int x=arr[(first+last)/2].number,
i=first,j=last;
do{
while (arr[i].number < x) i++;
while (arr[j].number > x) j--;
if (i<=j){ if (arr[i].number>arr[j].number)
{
int t=arr[i].number;
string str = arr[i].name;
string st = arr[i].time;
arr[i].number = arr[j].number;
arr[i].name = arr[j].name;
arr[i].time = arr[j].time;
arr[j].number = t;
arr[j].name = str;
arr[j].time = st;
}
i++;
j--;
}
}while(i<=j);
if (first<j) qs(arr, first,j);
if (last>i) qs(arr,i,last);
<span>}
void print(struct TRAIN *arr, int n)
{
cout<<"Пункт назначения\tНомер\tВремя\n";
for(int i(0); i < n; i++)
cout << arr[i].name << '\t' << arr[i].number << '\t' << arr[i].time <<'\n';
cout <<endl;
}
int main(int argc, char *argv[])
{
setlocale(0,"");
const int N=8;
TRAIN train[N];
for(int i(0); i < N; i++)
{
cout <<"Пункт назначения: ";
getline(cin,train[i].name);
cout <<"Номер: ";
cin >>train[i].number;
cin.get();
cout <<"Время: ";
getline(cin, train[i].time);
<span> system("cls");
</span></span></span> }
<span> print(train,N);
qs(train,0,N-1); //Быстрая сортировка
int n;
cout <<"Номер поезда: ";
cin>>n;
bool f=1;
for(int k=0; k < N; k++)
if (train[k].number == n)
{
cout << train[k].name << '\t' << train[k].number << '\t' << train[k].time <<'\n';
f=0;
break;
}
if(f) cout << "Нет такого номера поезда";
cout <<endl;
print(train,N);
_getch();
return 0;
</span>}
1.3.1.ПОНЯТИЕ СИСТЕМЫ СЧИСЛЕНИЯ.
Все фантастические возможности вычислительной техники (ВТ) реализуются путем создания разнообразных комбинаций сигналов высокого и низкого уровней, которые условились называть «единицами» и «нулями».
Система счисления(СС) - это система записи чисел с помощью определенного набора цифр.CС называетсяпозиционной, если одна и та же цифра имеет различное значение, которое определяется ее местом в числе. Десятичная СС является позиционной: 999.Римская СС является непозиционной. Значение цифры Х в числе ХХІ остается неизменным при вариации ее положения в числе.Количество различных цифр, употребляемых в позиционной СС, называется основанием СС.
Развернутая форма числа - это запись, которая представляют собой сумму произведений цифр числа на значение позиций.
Например: 8527=8*103+5*102+2*101+7*100
Развернутая форма записи чисел произвольной системы счисления имеет вид
, где
X - число;
a - основа системыисчисления;
i - индекс;
m - количество разрядов числа дробной части;
n - количество разрядов числа целой части.
Например: 327.46 n=3, m=2, q=10
Если основание используемой СС больше десяти, то для цифр вводят условное обозначение со скобкой вверху или буквенное обозначение.
Например: если 10=А, а 11=В, то число 7А.5В12 можно расписать так:
7А.5В12 = В·12-2 + 5 ·2-1 +А ·120 + 7 ·121.
В шестнадцатеричной СС основа - это цифры 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 с соответствующими обозначениями 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F. Примеры чисел: 17D.ECH, F12AH.
ДвоичнаяСС- это система, в которой для записи чисел используются две цифры 0 и 1. Основанием двоичной системы счисления является число 2.
Двоичный код числа - запись этого числа в двоичной системе счисления. Например,
0=02
1=12
2=102
3=112 …
7=1112
120=11110002.
В ВТ применяют позиционные СС с недесятичным основанием: двоичную, восьмеричную, шестнадцатеричную. Для обозначения используемой СС число снабжают верхним или нижним индексом, в котором записывают основание СС. Другой способ – использование латинских букв после записи числа:
D – десятичная СС
В – двоичная СС
О – восьмеричная СС
Н – 16-ричная СС.
Несмотря на то, что 10-тичная СС имеет широкое распространение, цифровые ЭВМ строятся на двоичных элементах, т.к. реализовать элементы с 10 четко различимыми состояниями сложно. Историческое развитие ВТ сложилось таким образом, что ЭВМ строятся на базе двоичных цифровых устройств: триггеров, регистров, счетчиков, логических элементов и т.д.
16-ричная и 8-ричная СС используются при составлении программ на языке машинных кодов для более короткой и удобной записи двоичных кодов – команд, данных, адресов и операндов.
Задача перевода из одной СС в другую часто встречается при программировании, особенно, на языке Ассемблера. Например, при определении адреса ячейки памяти. Отдельные стандартные процедуры языков программирования Паскаль, Бейсик, Си, HTML требуют задания параметров в 16-ричной СС. Для непосредственного редактирования данных, записанных на жесткий диск, также необходимо умение работать с 16-ричными числами. Отыскать неисправность в ЭВМ невозможно без представлений о двоичной СС.
В таблице приведены некоторые числа, представленные в различных СС.
Двоичные
числа
Восьмеричные
числа
Десятичные
числа
Шестнадцатеричные
числа
0
0
0
0
1
1
1
1
10
2
2
2
11
3
3
3
100
4
4
4
101
5
5
5
110
6
6
6
111
7
7
7
1000
10
8
8
1001
11
9
9
1010
12
10
A
1011
13
11
B
1100
14
12
C
1101
15
13
D
1110
16
14
E
1111
17
15
F
Массовость
1) формула массы
2) А заменяем на О (видимо, только второе А)
получаем "массо"
3)сова без последней буквы - сов
4)3 2 1 значит сов в обратном порядке - вос
получаем "массовос"
5) добавляем ть и получаем "массовость"