Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛекцииЛаб(Часть_1_Книги).doc
Скачиваний:
7
Добавлен:
03.05.2019
Размер:
1.04 Mб
Скачать

Какие из строк (//1 – //9) правильные?

  1. Дан код:

union TU2 { struct { unsigned short lo;

unsigned short hi;

} w;

int k;

} N;

N.k=012345678; cout<<hex<<N<<endl;

cout<<hex<<N.lo<<endl; cout<<hex<<N.hi<<endl;

Что будет выведено? Варианты ответа:

    1. 12345678, в следующей строке 1234 и ещё ниже 5678

    2. 12345678, в следующей строке 5678 и ещё ниже 1234

    3. Ошибка компиляции при объявлении объединения.

    4. Ошибка компиляции в “командах” вывода.

  1. Дан код:

struct tst { int l; float * coord; float per; } s1;

tst s2=s1; //1

tst *s2= new tst; //2

tst *s2=&s1; //3

tst &s2=s1 //4

tst &s2=*s1; //5

В каких вариантах правильно объявлена переменная ссылочного типа для структуры?

  1. Дан код:

struct tb { unsigned b1:1; //1

unsigned *b2:1=&b1; //2

unsigned &b3:1=b1; //3

unsigned :5; //4

unsigned b4:1; }; //5

В каких строках (//1—//5) есть ошибки?

Лабораторная работа 6.

Тема. “Cтруктуры”.

Требования и общие указания к заданиям:

Одно и тоже задание выполнить двумя способами:

        1. использовать статический массив в структуре и статический массив структур (см. пример 1). При этом количество структур (в примере количество студентов (n)) и количество элементов массива в структуре (в примере количество оценок для одного студента (m) )— константы;

        2. задание выполнить с помощью динамических массивов (пример 2). Для этого:

  • в структуре объявить и создать динамический массив (в примере 2 Points);

  • размерность этого массива включить в структуру в качестве одного из полей (в примере 2 переменная n);

  • создать динамический массив структур (в примере 2 arrs);

Как в первом, так и во втором вариантах составить и использовать функции, параметром которого является указатель на структуру или ссылка на структуру.

Пример 1 (+).

Сформировать статический массив структур, каждый элемент которого содержит следующие три поля:

фамилия, имя отчество студента или школьника (вводим);

массив оценок фиксированной размерности, который также вводим;

средний балл (вычисляем).

Для каждого студента найти средний балл и рассортировать массив структур по этому полю.

const m=4;

// Количество оценок у одного студента.

struct tstr // Объявляем тип структуры.

{ char name[20] ; // Фамилия, имя , отчество.

int a[m] ; // Массив оценок .

float s ; // Средний балл.

} ;

// Ввод массива структур

void MyInp ( tstr x[], int,int );

// Вывод массива структур

void MyOut ( tstr x[], int );

// Сортировка массива структур

void MySort ( tstr x[], int );

/* Нахождение среднего значения в числовом массиве z (в целочисленном одномерном массиве, а не в массиве структур) */

float MyAver ( int z[], int );

int main()

{ const n=3;

/* Количество студентов, т.е. количество элементов массива структур. */

tstr ars[n]; // Статический массив структур (n — константа).

int i,j;

clrscr(); MyInp(ars,n,2);

/* Для каждого студента находим средний балл, т. е. для i-й структуры ars[i] вычисляем поле s. Для этого используем функцию MyAver.*/

for (i=0;i<n;i++)

ars[i].s=MyAver( ars[i].a,m);

cout<<" \n Before of sorting\n";

MyOut(ars,n); MySort(ars,n);

cout<<"\nAfter of sorting\n"; MyOut(ars,n);

getch(); return 0;

};

/* Ввод массива структур, т.е. фамилий и оценок всех (size) студентов. Ввод начинается со строки экрана с номером y0. */

void MyInp(tstr x[],int size, int y0)

{ int i,j, y,

coord1; // Номер позиции в строке

y=y0;

for (i=0;i<size;i++)

/* i – номер элемента массива структур (номер студента). */

{ gotoxy(2,y);

cout<<"Name ";

cin>> (x[i].name);

cout<<"Ocenki "<<endl;

y++;

for (j=0, coord1=8; j<m; j++,coord1+=3)

// j – номер оценки одного студента

// Цикл для ввода одной j - й оценки i – го студента с контролем ввода.

{ while(1)

{ gotoxy(coord1,y);

cin>>x[i].a[j];

if (x[i].a[j]>0 && x[i].a[j]<=10)

break;

else { gotoxy(coord1,y);

// “Стираем” неверно введённую оценку

cout<<" ";

}

}

}

y++;

}

};

/* Сортировка массива структур. Подробный анализ алгоритма смотри в 1-м семестре ([1]). */

void MySort ( tstr x[], int size)

{ int i,j,k,flag; tstr T;

k=size;

do { k--;

flag=0;

for (i=0; i<k; i++)

if (x[i].s < x[i+1].s)

{

/* Перестановка i- го и (i+1) – го элемента массива структур. */

T=x[i];

x[i]=x[i+1];

x[i+1]=T;

flag=1;

}

}

while (flag);

} ;

/* Вывод массива структур, т. е. выводим информацию обо всех студентах. */

void MyOut (tstr x[], int size)

{ int i,j,coord1; cout<< endl;

for (i=0;i<size;i++)

{ cout<<x[i].name<<" ";

for (j=0,coord1=25; j<m; j++, coord1+=3)

{ gotoxy(coord1,wherey());

cout<<x[i].a[j];

}

gotoxy(coord1,wherey());

textcolor(10);

cprintf("%5.2f",x[i].s);

cout<<endl;

}

cout<<endl;

} ;

float MyAver (int z[],int M)

{ float S=0; int j;

for (j=0; j<M; j++)

S+=z[j];

S/=M;

return S; };

Пример 2(+) (динамический массив структур и динамический массив в структуре).

Сформировать динамический массив многоугольников на плоскости. Количество сторон каждого из них различно и является полем структуры. Для каждого из многоугольников найти периметр и определить его тип в зависимости от количества сторон (треугольник, четырёхугольник, пятиугольник и остальные).

/*Структурный тип для определения декартовых координат одной точки плоскости. */

struct Point1

{float x,y;

};

/*Структурный тип для определения одного многоугольника плоскости. */

struct ttr

{

char *type; // Строка для названия.

unsigned n; // Количество вершин.

/* Указатель на динамический массив структур, т. е. массив точек одного многоугольника. Каждая точка имеет две координаты. Поэтому используется вложенная структура Point1, содержащая эти две координаты. */

Point1 *Points;

float per; // Периметр многоугольника.

};

/* Функция вычисляет периметр одного многоугольника, имеющего size вершин. В неё передаём указатель на динамический массив структур, т.е. массив точек одного многоугольника. Каждый элемент этого массива имеет тип Point1, т. е. содержит два числа (две координаты точки). */

float MyPer(Point1 *P, int size)

{ float Len=0;

/*В цикле находим сумму длин сторон, соединяющей 0-ю точку с 1 – й, 1-ю со 2 – й и т.д., (size-2) – ю точку с (size-1) – й. */

for(int j=0; j<size-1; j++)

Len+= sqrt((P[j].x-P[j+1].x)*(P[j].x-P[j+1].x)+

(P[j].y-P[j+1].y)*(P[j].y-P[j+1].y) );

/* Вне цикла добавляем длину стороны, соединяющей 0-ю точку с (size-1) – й точкой. */

return Len+sqrt((P[0].x-P[size-1].x)*(P[0].x-P[size-1].x)+

(P[0].y-P[size-1].y)*(P[0].y-P[size-1].y) );;

}

/* Функция получает поля одной структуры типа ttr, т. е. информацию об одном многоугольнике, кроме периметра. Периметр будет найден вызовом из main функции MyPer. Так как структура является результатом функции, то в качестве параметра объявлен указатель на неё.*/

void MyDef (ttr *Str, int size)

{ cout<<endl;

char t[40];

/* t — вспомогательная строка для названия многоугольника. В зависимости от количества вершин (size) формируем русско-латинское название многоугольника. При этом предусмотрены четыре варианта. */

switch (size)

{case 3: strcpy(t,"Triangle"); break;

case 4: strcpy(t,"Chetirexygolnic");break;

case 5: strcpy(t,"Pjatyygolnic"); break;

default: strcpy(t,"Other");

}

/* Динамически создаём строку type, длина которой берётся из вспомогательной строки t. Используем операцию “->”(стрелка), потому что Str — указатель на структуру, а не потому, что type и Points — указатели. */

Str->type=new char [strlen(t)];

strcpy(Str->type, t);

/* Создаём динамический массив структур внутри структуры Str. То есть определяем массив точек одного многоугольника размером size. */

Str->Points=new Point1[size];

for (int i=0; i<size; i++)

{ Str->Points[i].x= float(random (5)-2);

Str->Points[i].y= float(random (5)-2);

}

/* Использовали операцию “->”, потому что Str — указатель, а операция “.”, потому что Points[i] — это не указатель, а i – й элемент вложенного динамического массива структур. Указателем является Points, в котором хранится адрес начала этого массива.*/

}

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

void MyShow (ttr *Str, int size)

{Str->n=size;

cout<<"\n m="<< Str->n<<" ";

for (int i=0; i<size; i++)

printf(" x=%4.1f y=%4.1f", Str->Points[i].x, Str->Points[i].y);

printf("\n type %s",Str->type);

printf(" perimetr %10.2f",Str->per );

}

int main()

{ int m=3; // Количество вершин многоугольника.

clrscr();

/* Объявляем и создаём указатель на одну структуру типа ttr, в котором будет храниться информация об одном многоугольнике. */

ttr *S; S=new ttr;

MyDef ( S, m);

/* Так как в функциях MyDef и MyShow в качестве формального параметра используется указатель на структуру (ttr *Str), то в качестве фактического параметра передаём указатель на структуру такого же типа. Так как объявлен указатель (ttr*S;), а не просто структура (ttr S;), то при вызове функции в скобках записали просто S. */

S->per=MyPer(S->Points, m);

/* Так как в функции MyPer в качестве формального параметра используется указатель на структуру типа Point1 (Point1 *P), то в качестве фактического параметра передаём указатель на структуру такого же типа. После выполнения функции MyDef в структуре, адрес которой в S, будет создан динамический массив Points. Адрес начала этого массива S->Points и передаём в функцию. */

MyShow(S, m);

/* Вывели сформированную с помощью функций MyDef и MyPer структуру, адрес которой в S.*/

int n=4,i;

/*Создаём динамичечский массив структур типа ttr размерности n, то есть n m - угольников. */

ttr *arrs=new ttr[n];

for(i=0;i<n;i++)

{ cout<<"\n i="<<i<< " m=";

cin>>m;

/* Так как в функциях MyDef и MyShow в качестве формального параметра используется указатель на структуру (ttr *Str), и так как эти функции работают с одной структурой, то в качестве фактического параметра передаём адрес i – го элемента динамического массива. Так как arrs[i] не является адресом, то при вызове функции используем операцию “&” (взятие адреса). */

MyDef ( &arrs[i], m);

/* В функцию MyPer передаём адрес динамического массива точек размерности m для i-го многоугольника, созданный в функции MyDef. */

arrs[i].per=MyPer(arrs[i].Points, m);

MyShow(&arrs[i],m);

}

getch(); return 0;

}

Варианты заданий.

A. Задачи первого простого уровня.

  1. Сформировать массив структур, каждый элемент которого содержит следующие три поля:

фамилия, имя отчество студента (вводим);

массив оценок в десятибалльной системе (вводим);

признак.

Для каждого студента получить одно из следующих значений признака: 5 –отличник (только 9 и (или) 10), 4 – хорошист (нет оценок, меньше 6, но не все 9 или 10, а есть 6 и (или) 7 и (или) 8), 3 – троечник (нет оценок, меньше 4, но есть 4 и (или) 5), 2 – неуспеваю­щий (есть 1 и (или) 2 и (или) 3). Рассортировать массив структур по убыванию полученного признака.

  1. Сформировать массив структур, каждый элемент которого содержит следующие че­тыре поля:

курс (вводим);

фамилия, имя отчество (вводим);

массив оценок в десятибалльной системе (вводим);

признак.

Для каждого студента получить одно из следующих значений признака: 5 –отличник (только 9 и (или) 10), 4 – хорошист (нет оценок, меньше 6, но не все 9 или 10, а есть 6 и (или) 7 и (или) 8), 3 – троечник (нет оценок, меньше 4, но есть 4 и (или) 5), 2 – неуспеваю­щий (есть 1 и (или) 2 и (или) 3). Рассорти­ровать массив структур по курсам.

  1. Сформировать массив структур, каждый элемент которого содержит следующие пять полей:

группа (вводим);

фамилия, имя отчество (вводим);

массив оценок в десятибалльной системе (вводим);

материальное положение (вводим, например, 0 — плохое, 1 — обычное, среднее).

Рассортировать массив структур по группам.

  1. Сформировать массив структур, каждый элемент которого содержит следующие поля:

координаты вершин треугольника на плоскости (вводим);

периметр треугольника;

Для каждого треугольника определить периметр. Рассортировать массив структур по периметру.

  1. Сформировать массив структур, каждый элемент которого содержит следующие поля:

координаты вершин треугольника на плоскости (вводим).

площадь треугольника;

Для каждого треугольника определить площадь. Рассортировать массив структур по площади.

  1. Сформировать массив структур, каждый элемент которого содержит следующие поля:

координаты вершин четырёхугольника на плоскости (вводим).

признак четырёхугольника, который принимает одно из следующих значений: 1 – если четырёхугольник находится полностью в первой четверти, 2 – во второй, 3 – в третьей, 4 – в четвёртой четверти, 5 – для всех остальных.

Для каждого четырёхугольника определить этот признак и рассортировать по нему массив структур.

  1. Сформировать массив структур, каждый элемент которого содержит следующие поля:

координаты вершин четырёхугольника на плоскости (вводим);

площадь многоугольника.

Для каждого четырёхугольника определить площадь. Рассортировать массив структур по площади.

8. Сформировать массив структур, каждый элемент которого содержит следующие поля:

координаты вершин четырёхугольника на плоскости (вводим);

периметр четырёхугольника.

Для каждого четырёхугольника определить периметр. Рассортировать массив структур по периметру.

  1. Сформировать массив структур, каждый элемент которого содержит следующие поля:

координаты вершин отрезка в 3-хмерном пространстве (вводим);

длина отрезка.

Для каждого отрезка определить длину. Рассортировать массив структур по длине.

  1. Сформировать массив структур, каждый элемент которого содержит следующие поля:

координаты центра круга на плоскости (вводим);

радиус круга (вводим);

площадь круга.

Для каждого круга определить площадь. Рассортировать массив структур по длине.

  1. Сформировать массив структур, каждый элемент которого содержит следующие поля:

шифр подразделения, содержащий не более трёх символов (вводим);

фамилия, имя отчество (вводим);

год рождения (вводим);

Для заданного подразделения, шифр которого вводим, рассортировать сотрудников по возрасту.

B. Задачи второго среднего уровня.

  1. Сформировать массив структур, каждый элемент которого содержит следующие три поля:

фамилия, имя отчество (вводим);

массив оценок в десятибалльной системе (вводим);

признак.

Для каждого студента получить одно из следующих значений признака: 5 –отличник (только 9 и (или) 10), 4 – хорошист (нет оценок, меньше 6, но не все 9 или 10, а есть 6 и (или) 7 и (или) 8), 3 – троечник (нет оценок, меньше 4, но есть 4 и (или) 5), 2 – неуспеваю­щий (есть 1 и (или) 2 и (или) 3). Рассортировать массив структур по этому полученному признаку. Для одинакового признака сортировать по среднему баллу.

  1. Сформировать массив структур, каждый элемент которого содержит следующие че­тыре поля:

курс (вводим);

фамилия, имя отчество (вводим);

массив оценок в десятибалльной системе (вводим);

признак.

Для каждого студента получить одно из следующих значений признака: 5 –отличник (только 9 и (или) 10), 4 – хорошист (нет оценок, меньше 6, но не все 9 или 10, а есть 6 и (или) 7 и (или) 8), 3 – троечник (нет оценок, меньше 4, но есть 4 и (или) 5), 2 – неуспеваю­щий (есть 1 и (или) 2 и (или) 3). Рассорти­ровать массив структур по курсам, внутри курса – по этому полученному признаку.

  1. Сформировать массив структур, каждый элемент которого содержит следующие пять полей:

курс (вводим);

фамилия, имя отчество (вводим);

массив оценок в десятибалльной системе (вводим);

материальное положение (вводим, например, 0 — плохое, 1 — обычное, среднее).

размер стипендии.

Для каждого студента определить размер стипендии, выбрав самостоятельно критерий. Рассортировать массив структур по курсам, внутри курса – по полученной сти­пендии.

  1. Сформировать массив структур, каждый элемент которого содержит следующие поля:

координаты вершин треугольника на плоскости (вводим). Использовать предвари­тельно объявленную структуру, содержащую координаты одной точки плоскости;

тип треугольника (прямоугольный, остроугольный, тупоугольный);

периметр треугольника;

Для каждого треугольника определить тип и периметр. Рассортировать массив структур сначала по типу, а затем по периметру.

  1. Сформировать массив структур, каждый элемент которого содержит следующие поля:

координаты вершин треугольника на плоскости (вводим). Использовать предвари­тельно объявленную структуру, содержащую координаты одной точки плоскости;

тип треугольника (равнобедренный, разносторонний, равносторонний);

площадь треугольника;

Для каждого треугольника определить тип и площадь. Рассортировать массив структур сначала по типу, а затем по площади.

  1. Сформировать массив структур, каждый элемент которого содержит следующие поля:

координаты вершин многоугольника на плоскости (вводим). Использовать предвари­тельно объявленную структуру, содержащую координаты одной точки плоскости;

признак многоугольника, который принимает одно из следующих значений: 1 – если многоугольник находится полностью в первой четверти, 2 – во второй, 3 – в третьей, 4 – в четвёртой четверти, 5 – для всех остальных.

Для каждого многоугольника определить этот признак и рассортировать по нему массив структур.

  1. Сформировать массив структур, каждый элемент которого содержит следующие поля:

координаты вершин многоугольника на плоскости (вводим). Использовать предвари­тельно объявленную структуру, содержащую координаты одной точки плоскости;

площадь многоугольника.

Для каждого многоугольника определить площадь. Рассортировать массив структур следующим образом. В начале массива должны находиться многоугольники 1-й четверти по возрастанию найденной площади, а затем — остальные многоугольники в нерассортированном виде, то есть в том же порядке, что и в исходном массиве.

  1. Сформировать массив структур, каждый элемент которого содержит следующие поля:

координаты вершин многоугольника на плоскости (вводим). Использовать предвари­тельно объявленную структуру, содержащую координаты одной точки плоскости;

периметр многоугольника;

Для каждого многоугольника определить периметр. Рассортировать массив структур следующим образом. В начале массива должны находиться многоугольники к-й четверти (к вводим) по возрастанию найденного периметра, а затем — остальные многоугольники в нерассортированном виде, то есть в том же порядке, что и в исходном массиве.

  1. Сформировать массив структур, каждый элемент которого содержит следующие поля:

координаты вершин отрезка в 3-хмерном пространстве (вводим). Использовать пред­варительно объявленную структуру, содержащую координаты одной точки 3-хмерного пространства;

длина отрезка.

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

  1. Сформировать массив структур, каждый элемент которого содержит следующие поля:

координаты центра круга на плоскости (вводим). Использовать предварительно объ­явленную структуру, содержащую координаты одной точки плоскости;

радиус круга (вводим);

площадь круга;

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

  1. Сформировать массив структур, каждый элемент которого содержит следующие поля:

шифр подразделения, содержащий не более трёх символов (вводим);

фамилия, имя отчество (вводим);

год рождения (вводим);

образование, например, 0 – неоконченное базовое, 1 – базовое, 2 – общее среднее и т. д. (вводим);

Для заданного подразделения, шифр которого вводим, рассортировать сотрудников сна­чала по образованию, а затем по возрасту. Информация об остальных сотрудниках должна следовать в том же порядке, что и в исходном массиве.

  1. Сформировать массив структур, каждый элемент которого содержит следующие поля:

шифр подразделения, содержащий не более трёх символов (вводим);

план выпуска продукции по кварталам одного года в виде массива (вводим);

фактическое выполнение плана по кварталам одного года в виде массива (вводим);

Рассортировать массив структур следующим образом: сначала должна быть информация о тех подразделениях, которые выполнили план во всех кварталах, затем о тех, кто выпол­нил план в трёх кварталах, и т. д.

Лабораторная работа 7.

Темы: “Объединения, поля битов, перечисления”.

Требования и общие указания к заданиям:

Кроме выполнения индивидуальных заданий, предлагается выполнить компьютерный эксперимент с примерами, приведёнными в §§ 5, 6, 7.

В вариантах 1—8 выполнить одно и то же задание двумя из предложенных способов: обязательно третий и на выбор один из остальных в качестве повторения.

Варианты заданий:

  1. Перевести целое положительное двухбайтное число из десятичной в двоичную систему счисления:

    1. (повторение) используя алгоритм деления на 2 (см. первый семестр);

    2. (повторение) используя битовые операции (см. первый семестр);

    3. используя объединение и поля битов.

  2. Перевести целое отрицательное двухбайтное число из десятичной в двоичную систему счисления:

    1. (повторение) используя алгоритм деления на 2 (см. первый семестр);

    2. (повторение) используя битовые операции (см. первый семестр);

    3. используя объединение и поля битов.

  3. Перевести целое положительное четырёхбайтное число из десятичной в двоичную систему счисления:

    1. (повторение) используя алгоритм деления на 2 (см. первый семестр);

    2. (повторение) используя битовые операции (см. первый семестр);

    3. используя объединение и поля битов.

  4. Перевести целое отрицательное четырёхбайтное число из десятичной в двоичную систему счисления:

    1. (повторение) используя алгоритм деления на 2 (см. первый семестр);

    2. (повторение) используя битовые операции (см. первый семестр);

    3. используя объединение и поля битов.

  5. Перевести целое положительное двухбайтное число из десятичной в шестнадцатеричную систему счисления:

    1. (повторение) используя алгоритм деления на 16 (см. первый семестр);

    2. (повторение) используя битовые операции (см. первый семестр);

    3. используя объединение и поля битов.

  6. Перевести целое отрицательное двухбайтное число из десятичной в шестнадцатеричную систему счисления:

    1. (повторение) используя алгоритм деления на 2 (см. первый семестр);

    2. (повторение) используя битовые операции (см. первый семестр);

    3. используя объединение и поля битов.

  7. Перевести целое положительное четырёхбайтное число из десятичной в шестнадцатеричную систему счисления:

    1. (повторение) используя алгоритм деления на 16 (см. первый семестр);

    2. (повторение) используя битовые операции (см. первый семестр);

    3. используя объединение и поля битов.

  8. Перевести целое отрицательное четырёхбайтное число из десятичной в шестнадцатеричную систему счисления:

    1. (повторение) используя алгоритм деления на 2 (см. первый семестр);

    2. (повторение) используя битовые операции (см. первый семестр);

    3. используя объединение и поля битов.

  9. Запрограммировать калькулятор на четыре арифметические действия: сложение, вычитание, умножение, деление. С помощью перечисляемого типа предусмотреть следующие возможные ошибки: неверная операция, которая должна вводиться с экрана; деление на нуль и другие; отсутствие ошибок. Вывести соответствующие сообщения.

  10. Запрограммировать калькулятор на битовые операции. С помощью перечисляемого типа предусмотреть следующие возможные ошибки: неверная операция, которая должна вводиться с экрана; операнды в операциях имеют не целый тип и другие; отсутствие ошибок. Вывести соответствующие сообщения.

  11. Запрограммировать калькулятор для перевода целых чисел из 10-й с.с в 2-ю с.с., из 10-й в 16-ю с.с. и из 16-й в 2-ю систему счисления. С помощью перечисляемого типа предусмотреть следующие возможные ошибки: операнды в операциях имеют не целый тип; операнд записан не в требуемой системе счисления и другие; отсутствие ошибок. Вывести соответствующие сообщения.

  12. Запрограммировать калькулятор для перевода целых чисел из 2-й с.с в 10-ю с.с., из 16-й в 10-ю с.с. и из 2-й в 16-ю систему счисления. С помощью перечисляемого типа предусмотреть следующие возможные ошибки: операнды в операциях имеют не целый тип; операнд записан не в требуемой системе счисления и другие; отсутствие ошибок. Вывести соответствующие сообщения.

125