Тестирование и использование приложения


1.Запустите приложение на выполнение, нажав быстрые кнопки Сохранить все и Запуск.

2.Выполните тестирование по рис.7.5. Рекомендуется добавлять и удалять элементы с включенным индикатором. Команда Вывести список необходима при отладке и тестировании приложения.

3.Составьте и выполните тесты, которые проверят правильность всех случаев добавления и удаления элементов подсписков (см. комментарии в файлах f_7.cpp и LR_7.cpp).

4.Убедитесь в правильности сохранения списка в файле.

5.Модифицируйте код, переместив данные-элементы классов TRollи TBikeв закрытые части классов. Выполните отладку. Результаты продемонстрируйте преподавателю.

 

Рис.7.5 – форма с результатами тестирования

 

 

Файл реализации LR_7.cpp модуля LR_7

 

//---------------------------------------------------------------------------

 

#include <vcl.h>

#pragma hdrstop

 

#include "LR_7.h"

#include "f_7.h"

#include<string.h>

#include<fstream.h>

//---------------------------------------------------------------------------

 

#pragma package(smart_init)

#pragma link "CSPIN"

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

 

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

 

//при создании формы создаем заголовок таблицы

void __fastcall TForm1::FormCreate(TObject *Sender)

{

StringGrid1->FixedRows=1;

StringGrid1->RowCount=1;

StringGrid1->FixedCols=0;

StringGrid1->ColCount=8;

StringGrid1->Cells[0][0]="номер";

StringGrid1->Cells[1][0]="изделие";

StringGrid1->Cells[2][0]="кол-во(шт) в п/сп";

StringGrid1->Cells[3][0]="дата поступления";

StringGrid1->Cells[4][0]="производитель";

StringGrid1->Cells[5][0]="диам колес(мм)";

StringGrid1->Cells[6][0]="вес(кг)";

StringGrid1->Cells[7][0]="кол-во скоростей";

}

//---------------------------------------------------------------------------

 

//активация компонентов для ввода данных элемента списка - велосипед

void __fastcall TForm1::RadioButton1Click(TObject *Sender)

{

GroupBox1->Caption="Велосипед";

DateTimePicker1->SetFocus();

LabeledEdit3->Enabled=true;

CSpinEdit1->Enabled=true;

Label2->Enabled=true;

}

//---------------------------------------------------------------------------

//подготовка компонентов для ввода данных элемента

// списка - ролик. коньки

void __fastcall TForm1::RadioButton2Click(TObject *Sender)

{

GroupBox1->Caption="Ролик. коньки";

DateTimePicker1->SetFocus();

LabeledEdit3->Enabled=false;

CSpinEdit1->Enabled=false;

Label2->Enabled=false;

}

//---------------------------------------------------------------------------

 

list spisok;//создаем объект класса - список

 

void __fastcall TForm1::AddExecute(TObject *Sender)

{

if(RadioButton1->Checked)

{ //создаем элемент списка - велосипед

TBike *bike=new TBike;

strcpy(bike->date,(DateToStr(DateTimePicker1->Date)).c_str());

 

if(LabeledEdit1->Text=="")

{

MessageBox(NULL,"Введите название производителя!","Ошибка", 0);

LabeledEdit1->SetFocus();

return;

}

strcpy(bike->comp,(LabeledEdit1->Text).c_str());

if(LabeledEdit2->Text==""||!isdigit(LabeledEdit2->Text[1]))

{

MessageBox(NULL,"Введите диаметр колес!","Ошибка",0);

LabeledEdit2->SetFocus();

return;

}

bike->diam=StrToInt(LabeledEdit2->Text);

if(LabeledEdit3->Text==""||!isdigit(LabeledEdit3->Text[1]))

{

MessageBox(NULL,"Введите вес!","Ошибка",0);

LabeledEdit3->SetFocus();

return;

}

bike->weight=StrToFloat(LabeledEdit3->Text);

bike->speeds=CSpinEdit1->Value;

//созданный элемент добавляем в список

spisok.append_bike(bike);

}

 

if(RadioButton2->Checked)

{ //создаем элемент списка - роликовые коньки

TRoll *roll=new TRoll;

strcpy(roll->date,(DateToStr(DateTimePicker1->Date)).c_str());

if(LabeledEdit1->Text=="")

{

MessageBox(NULL,"Введите название производителя!","Ошибка",0);

LabeledEdit1->SetFocus();

return;

}

strcpy(roll->comp,(LabeledEdit1->Text).c_str());

if(LabeledEdit2->Text==""||!isdigit(LabeledEdit2->Text[1]))

{

MessageBox(NULL,"Введите диаметр колес!","Ошибка",0);

LabeledEdit2->SetFocus();

return;

}

roll->diam=StrToInt(LabeledEdit2->Text);

//созданный элемент добавляем в список

spisok.append_roll(roll);

}

MessageBox(NULL,"Элемент добавлен!","",0);

 

//если индикатор включен - список выводится в таблицу

if(CheckBox1->Checked)spisok.out_list();

 

//вывод информации о списке

Form1->StatusBar1->SimpleText="Количество подсписков - "+

IntToStr(spisok.count_dsp)+" "+"Количество элементов в списке - "+

IntToStr(spisok.count_elem_sp);

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::A_exitExecute(TObject *Sender)

{

Close();

}

//---------------------------------------------------------------------------

 

//вывод списка в таблицу

void __fastcall TForm1::OutExecute(TObject *Sender)

{

spisok.out_list();

}

//---------------------------------------------------------------------------

 

int r; //переменная для номера строки выделенной ячейки в таблице

bool flag=true; //флаг - нет выделенной ячейки в таблице

 

void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol,

int ARow, bool &CanSelect)

{

r=ARow; //номер строки выделенной ячейки сохранен в переменной r

flag=false; //ячейка в таблице выделена

}

//---------------------------------------------------------------------------

 

//удаляем из списка элемент, соответствующий номеру

//строки выделенной в таблице ячейки

void __fastcall TForm1::DelExecute(TObject *Sender)

{

if(spisok.is_empty)//если список пуст

{

MessageBox(NULL,"Список пуст!","",0);

return;

}

 

if(flag) //если ячейка в таблице не выделена

{

MessageBox(NULL,"Выделите элемент в таблице!","Ошибка",0);

return;

}

//удаляем из списка элемент, соответствующий значению переменной r

spisok.del(r);

 

//если индикатор включен - список выводится в таблицу

if(CheckBox1->Checked)spisok.out_list();

 

flag=true;//можно снова выделять ячейку в таблице

}

//---------------------------------------------------------------------------

 

//удаляем из списка подсписок, соответствующий номеру

// строки выделенной в таблице ячейки

void __fastcall TForm1::Clear_downExecute(TObject *Sender)

{

if(spisok.is_empty) //если список пуст

{

MessageBox(NULL,"Список пуст!","",0);

return;

}

if(flag) //если ячейка в таблице не выделена

{

MessageBox(NULL,"Выделите элемент в таблице!","Ошибка",0);

return;

}

//удаляем из списка подсписок, соответствующий значению переменной r

spisok.clear_down(r);

 

//если индикатор включен - список выводится в таблицу

if(CheckBox1->Checked)spisok.out_list();

 

flag=true; //можно снова выделять ячейку в таблице

}

//---------------------------------------------------------------------------

 

//уничтожаем список

void __fastcall TForm1::ClearExecute(TObject *Sender)

{

if(spisok.is_empty) //если список пуст

{

MessageBox(NULL,"Список пуст!","",0);

return;

}

 

//для объекта - список вызывается функция уничтожения списка

spisok.clear();

 

//уничтожение списка контролируется выводом в таблицу

spisok.out_list();

}

//---------------------------------------------------------------------------

 

AnsiString fn=""; //строка для имени файла

 

//вспомогательная строка для вывода списка из таблицы в файл

char str[50];

 

int s;//вспомогательная переменная для вывода в файл

//количества элементов в списке

 

//---------------------------------------------------------------------------

 

//сохраняем список в файле

void __fastcall TForm1::FileSave1Execute(TObject *Sender)

{

if(fn!="") //если есть имя файла со списком

{

ofstream outfile(fn.c_str(),ios::out);//открываем файл для записи

 

//в переменную s заносим количество элементов в списке

s=spisok.count_elem_sp;

//выводим в файл число из переменной s побайтно

outfile.write((char*)&s,sizeof(s));

 

//из таблицы список выводим в файл

for(int i=1; i<=s; i++)

{

for(int j=0;j<8;j++)

{ //преобразовав элемент из таблицы к типу char*,

//копируем его в вспомогательную строку str

strcpy(str,Form1->StringGrid1->Cells[j][i].c_str());

//выводим побайтно содержимое str в файл

outfile.write((char*)&str,50);

}

}

outfile.close();//закрываем файл

}

else //если файл со списком отсутствует

//открывается диалог сохранения в файле и пользователь

//выбирает имя файла

if(SaveDialog1->Execute())

{ //выбранное имя файла сохраняется в строке fn

fn=SaveDialog1->FileName;

//создается и открывается для записи файл с выбранным именем

ofstream outfile(fn.c_str(),ios::out);

//в переменную s заносим количество элементов в списке

s=spisok.count_elem_sp;

//выводим в файл число из переменной s побайтно

outfile.write((char*)&s,sizeof(s));

//из таблицы список выводим в файл

for(int i=1; i<=s; i++)

{

for(int j=0;j<8;j++)

{ //преобразовав элемент таблицы к типу char*,

//копируем его во вспомогательную строку str

strcpy(str,Form1->StringGrid1->Cells[j][i].c_str());

//выводим побайтно содержимое str в файл

outfile.write((char*)&str,50);

}

}

outfile.close();//закрываем файл

}

}

//---------------------------------------------------------------------------

 

//выводим список из файла в таблицу

//по данным таблицы формируем список в оперативной памяти

void __fastcall TForm1::FileOpen1Execute(TObject *Sender)

{

spisok.clear();//уничтожаем список в оперативной памяти

 

//открываем файл на чтение с выбранным при сохранении именем

ifstream infile(fn.c_str(),ios::in);

if(!infile) //проверка, удалось ли открыть файл

{

MessageBox(NULL,"Файл не удается открыть!","Ошибка",0);

return;

}

 

//в переменную s читаем из файла количество элементов в списке

infile.read((char*)&s,sizeof(s));

 

//читаем файл в таблицу

for(int i=1; i<=s; i++)

{

Form1->StringGrid1->RowCount++;//добавляем строку в таблице

for(int j=0;j<8;j++)

{ //читаем в строку str из файла очередную запись в 50 байт

infile.read((char*)&str,50);

 

//из строки str переносим запись в элемент таблицы

Form1->StringGrid1->Cells[j][i]=(AnsiString)str;

}

}

 

infile.close();//закрываем файл, открытый на чтение

//из данных строк таблицы формируем элементы списка

//элементы списка добавляем в список

 

for(int i=1; i<=s; i++)

{

if(StringGrid1->Cells[1][i]=="Bike")

{ //формируем элемент списка - велосипед

TBike* bike=new TBike;

strcpy(bike->date,StringGrid1->Cells[3][i].c_str());

strcpy(bike->comp,StringGrid1->Cells[4][i].c_str());

bike->diam=StrToInt(StringGrid1->Cells[5][i]);

bike->weight=StrToFloat(StringGrid1->Cells[6][i]);

bike->speeds=StrToInt(StringGrid1->Cells[7][i]);

spisok.append_bike(bike);//добавляем в список

}

 

if(StringGrid1->Cells[1][i]=="Roll")

{ //формируем элемент списка - роликовые коньки

TRoll* roll=new TRoll;

strcpy(roll->date,StringGrid1->Cells[3][i].c_str());

strcpy(roll->comp,StringGrid1->Cells[4][i].c_str());

roll->diam=StrToInt(StringGrid1->Cells[5][i]);

spisok.append_roll(roll);//добавляем в список

}

}

 

spisok.out_list(); //выводим прочитанный список в таблицу

//вывод информации о прочитанном списке

StatusBar1->SimpleText="Количество подсписков - "+

IntToStr(spisok.count_dsp)+" "+

"Количество элементов в списке - "+

IntToStr(spisok.count_elem_sp);

}

//---------------------------------------------------------------------------

 

//сохраняем как...

void __fastcall TForm1::FileSaveAs1Execute(TObject *Sender)

{

//выбранное ранее имя файла заносится в свойство FileName

//компонента SaveDialog1 и предлагается пользователю по умолчанию

SaveDialog1->FileName=fn;

 

//если при открытии диалога пользователь выбрал новое имя

if(SaveDialog1->Execute())

{ //то новое имя файла сохраняется в строке fn

fn=SaveDialog1->FileName;

 

//создается и открывается для записи файл с новым именем

ofstream outfile(fn.c_str(),ios::out);

 

if(!outfile) //проверка, удалось ли создать и открыть файл

{

MessageBox(NULL,"Файл не удается создать!","Ошибка",0);

return;

}

 

//в переменную s заносим количество элементов в списке

s=spisok.count_elem_sp;

 

//выводим в файл число из переменной s побайтно

outfile.write((char*)&s,sizeof(s));

 

//из таблицы список выводим в файл

for(int i=1; i<=s; i++)

{

for(int j=0;j<8;j++)

{ //преобразовав элемент таблицы к типу char*,

//копируем его в вспомогательную строку str

strcpy(str,Form1->StringGrid1->Cells[j][i].c_str());

//выводим побайтно содержимое str в файл

outfile.write((char*)&str,50);

}

}

outfile.close(); //закрываем файл

}

}

//---------------------------------------------------------------------------


Контрольные вопросы

1.Расскажите о назначении базового класса.

2.Объясните содержание класса link, TBike, TRoll, list.

3.Как выполняется конструктор класса link, TBike, TRoll, list?

4.Как выполняется деструктор класса link, TBike, TRoll, list?

5.Укажите в коде точки, где вызывается конструктор класса link, TBike, TRoll, list.

6.Укажите в коде точки, где вызывается деструктор класса link, TBike, TRoll, list.

7.Как нужно изменить остальное содержание класса link, TBike, TRoll, list, если данные-элементы класса из открытой части класса перенести в закрытую часть класса?

8.Объясните, как в список заносится первый элемент.

9.Объясните, как в список добавляется второй и последующие элементы с разными типами, отличающимися от типа первого элемента.

10.Объясните, как добавляется элемент в подсписок.

11.Как добавляется в список новый подсписок?

12.Когда и как переназначаются указатели на начало и конец списка?

13.Как удалить элемент из первого подсписка (элемент – единственный в подсписке, первый в подсписке, последний в подсписке, находится внутри подсписка)?

14.Как удалить элемент из последнего подсписка (элемент – единственный в подсписке, первый в подсписке, последний в подсписке, находится внутри подсписка)?

15.Как удалить элемент из внутреннего подсписка (элемент – единственный в подсписке, первый в подсписке, последний в подсписке, находится внутри подсписка)?

16.Как удалить подсписок (первый, последний, внутренний, из одного элемента, из нескольких элементов)?

17.Как уничтожить список?

18.Как вывести список из ОП в таблицу?

19.Расскажите, как список сохранить в файле.

20.Как вывести список из файла в таблицу?

21.Как ввести список в ОП из таблицы? из файла, минуя таблицу?

22.Как по выделенной в таблице ячейке определить положение удаляемого элемента? подсписка?

23.Расскажите о назначении и возможностях диспетчера действий ActionManager. Что относится к полосам дествий ActionManager?

24.Расскажите об использовании Редактора Действий ActionManager.

25.Как создать меню, инструментальную панель с помощью ActionManager?

26.Как связать меню, инструментальную панель с ImageList?

27.Как сохранить настройки полос действий ActionManager?

Задания

1.Используя двунаправленный список, написать и протестировать функции, реализующие отдельные действия при игре в “новое домино”, в котором кроме традиционных правил игрок может на каждом ходу заменить любую конечную кость на свою. Необходимы следующие функции: а)проверить, можно ли сделать ход; б)сделать ход; в)проверить, можно ли сделать замену, г)заменить кость; д)определить, закончена ли игра.

2.Написать программу сложения двух длинных целых чисел, представленных в виде строк, используя круговой список.

3.Автоматизированная информационная система на железнодорожном вокзале содержит сведения об отправлении поездов дальнего следования. Для каждого поезда указывается: номер поезда, станция назначения, время отправления. Данные в информационной системе организованы в виде линейного списка. Составить программу, которая: 1)обеспечивает первоначальный ввод данных в информационную систему и формирование линейного списка; 2)производит вывод всего списка; 3)вводит номер поезда и выводит все данные об этом поезде; 4)вводит название станции назначения и выводит данные обо всех поездах, следующих до этой станции. Программа должна обеспечивать диалог с помощью меню и контроль ошибок при вводе.

4.На междугородной телефонной станции картотека абонентов, содержащая сведения о телефонах и их владельцах, организована как линейный список. Составить программу, которая: 1)обеспечивает начальное формирование картотеки в виде линейного списка; 2)производит вывод всей картотеки; 3)вводит номер телефона и время разговора; 4)выводит извещение на оплату телефонного разговора. Программа должна обеспечивать диалог с помощью меню и контроль ошибок при вводе.

5.Сложить два многочлена, используя представление многочлена в виде списка, в котором элементы расположены в порядке убывания степеней x, а поля элемента содержат соответственно коэффициент при x, степень x, указатель на следующий элемент. Нулевые слагаемые исключить из результирующего списка.

6.Составить программу, которая содержит текущую информацию о книгах в библиотеке. Сведения о книгах содержат: номер УДК, фамилию и инициалы автора, название, год издания, количество экземпляров данной книги в библиотеке. Программа должна обеспечивать: а)начальное формирование данных о всех книгах в библиотеке в виде списка; б)добавление данных о книгах, вновь поступающих в библиотеку; в)удаление данных о списываемых книгах; г)по запросу выдавать сведения о наличии книг в библиотеке, упорядоченные по годам издания.

7.Используя представление многочлена в виде списка в порядке убывания степеней x, по многочлену S(x) построить его производную - многочлен P(x).

8.Картотека в бюро обмена квартир организована как линейный список. Сведения о каждой квартире содержат: количество комнат, этаж, площадь, адрес. Составить программу, которая обеспечивает: а)начальное формирование картотеки; б)ввод заявки на обмен; в)поиск в картотеке подходящего варианта: при равенстве количества комнат и этажа и различии площадей в пределах 10% выводится соответствующая карточка и удаляется из списка, в противном случае поступившая заявка включается в список; г)вывод всего списка. Программа должна обеспечивать диалог с помощью меню и контроль ошибок при вводе.

9.Перемножить два многочлена, задав их в виде списков.

10.Анкета для опроса населения содержит две группы вопросов. Первая группа содержит сведения о респонденте: возраст, пол, образование (начальное, среднее, высшее). Вторая группа содержит собственно вопрос анкеты, ответ на который либо ДА, либо НЕТ. Составить программу, которая: 1)обеспечивает начальный ввод анкет и формирует из них линейный список; 2)на основе анализа анкет выдает ответы на следующие вопросы: а)сколько мужчин старше 40 лет, имеющих высшее образование, ответили ДА на вопрос анкеты; б)сколько женщин моложе 30 лет, имеющих среднее образование, ответили НЕТ на вопрос анкеты; в)сколько мужчин моложе 25 лет, имеющих начальное образование, ответили ДА на вопрос анкеты; 3)производит вывод всех анкет и ответов на вопросы. Программа должна обеспечивать диалог с помощью меню и контроль ошибок при вводе.

11.Представить в виде списка распорядок рабочего дня. Написать функции для справок, изменения распорядка.

12.Написать и протестировать функции для включения, исключения и поиска элемента кругового списка для: а)списка без заголовка; б)списка с заголовком (заголовок может содержать некоторую информацию о списке, например, число элементов списка).

13.Написать программу, которая а)сцепляет два списка данных символьного типа; б)объединяет упорядоченные списки данных целого типа в единый упорядоченный список.

14.Написать программу, которая помещает заданное количество случайных целых чисел в диапазоне от 0 до 100 в упорядоченный список. Вычислить сумму элементов и среднее арифметическое.

15.Написать программу, которая создает связный список из заданного количества символов, а затем создаёт второй список - копию, но в обратной последовательности.

16.Написать программу, беспорядочно смешивающую буквы слова для создания слова-путаницы. Каждый символ в строке произвольно помещается либо в начало, либо в конец списка. Например, с вводом jumble последовательность случайных чисел 011001 создаёт lbjume.

17.Написать программу, которая содержит динамическую информацию о наличии автобусов в автобусном парке. Сведения о каждом автобусе содержат: номер автобуса, фамилию водителя, номер маршрута. Программа должна обеспечивать: а)начальное формирование данных о всех автобусах в парке в виде списка; б)при выезде каждого автобуса из парка вводится номер автобуса, и программа удаляет данные об этом автобусе из списка автобусов, находящихся в парке, и записывает эти данные в список автобусов, находящихся на маршруте; в)при въезде каждого автобуса в парк вводится номер автобуса, и программа удаляет данные об этом автобусе из списка автобусов, находящихся на маршруте, и записывает эти данные в список автобусов, находящихся в парке; г)по запросу выдаются сведения об автобусах, находящихся в парке, или об автобусах, находящихся на маршруте.

18.Составить программу, которая содержит текущую информацию о заявках на авиабилеты. Каждая заявка содержит: пункт назначения, номер рейса, фамилию и инициалы пассажира, желаемую дату вылета. Программа должна обеспечивать: а)хранение всех заявок в виде списка; б)добавление заявок в список; в)удаление заявок; г)вывод заявок по заданному номеру рейса и дате вылета; д)вывод всех заявок.

19.Составить программу, которая содержит текущую информацию о книгах в библиотеке. Сведения о книгах содержат: номер УДК, фамилию и инициалы автора, название, год издания, количество имеющихся экземпляров. Программа должна обеспечивать: а)начальное формирование данных о всех книгах в библиотеке в виде списка; б)при взятии каждой книги вводится номер УДК, и программа уменьшает значение количества книг на единицу или выдает сообщение о том, что требуемой книги в библиотеке нет или требуемая книга находится на руках; в)при возвращении каждой книги вводится номер УДК, и программа увеличивает значение количества книг на единицу; г)по запросу выдаются сведения о наличии книг в библиотеке.

20.Написать программу, которая содержит динамическую информацию о наличии автобусов в автобусном парке. Сведения о каждом автобусе содержат: номер автобуса, фамилию и инициалы водителя, номер маршрута, признак того, где находится автобус – на маршруте или а парке. Программа должна обеспечивать: а)начальное формирование данных о всех автобусах в виде списка; б)при выезде каждого автобуса из парка вводится номер автобуса, и программа устанавливает значение признака “автобус на маршруте”; в)при въезде каждого автобуса в парк вводится номер автобуса, и программа устанавливает значение признака “автобус в парке”; г)по запросу выдаются сведения об автобусах, находящихся в парке, или об автобусах, находящихся на маршруте.

21.Составить программу, моделирующую заполнение гибкого диска. Общий объём памяти на диске 1,44 Мбайта. Файлы имеют произвольную длину от 72 байт до 128 Кбайт. В процессе работы файлы либо записываются на диск, либо удаляются с него. В начале работы файлы записываются подряд друг за другом. После удаления файла на диске образуется свободный участок памяти, и вновь записываемый файл размещается на свободном участке, либо, если файл не вмещается в свободный участок, размещается после последнего записанного файла. В случае, когда файл превосходит длину самого большого свободного участка, выдается аварийное сообщение. Требование на запись или удаление файла задается в командной строке, которая содержит имя файла, его длину в байтах, признак записи или удаления. Программа должна выдавать по запросу сведения о занятых и свободных участках памяти на диске. Указание: следует создать список занятых участков и список свободных участков памяти на диске.

22.В файловой системе каталог файлов организован как линейный список. Для каждого файла в каталоге содержатся следующие сведения: имя файла, дата создания, количество обращений к файлу. Составить программу, которая обеспечивает: а)начальное формирование каталога файлов; б)вывод каталога файлов; в)удаление файлов, дата создания которых меньше заданной; г)выборку файла с наибольшим количеством обращений. Программа должна обеспечивать диалог с помощью меню и контроль ошибок при вводе.

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

24.Текст помощи для некоторой программы организован как линейный список. Каждая компонента текста помощи содержит термин (слово) и текст, содержащий пояснения к этому термину. Количество строк текста, относящихся к одному термину, от одной до пяти. Составить программу, которая обеспечивает: а)начальное формирование текста помощи; б)вывод текста помощи; в)вывод поясняющего текста для заданного термина. Программа должна обеспечивать диалог с помощью меню и контроль ошибок при вводе.

25.Используя двунаправленный список, написать программу сложения двух длинных целых чисел.

26.По введенной безошибочной записи многочлена от x построить его представление в виде списка, элемент которого содержит поля: коэффициент при x, степень x, указатель на следующий элемент ( в последнем - NULL).

27.Проверить на равенство два многочлена, представив каждый из многочленов в виде списка, в котором элементы расположены в порядке убывания степеней x.

28.В целочисленной точке x вычислить значение многочлена S(x), представленного в виде списка в порядке убывания степеней x..

29.Распечатать многочлен, заданный в виде списка, в обычном виде (например, так: 52y^3-6y^2+y).

30.Используя представление многочлена в виде списка, привести подобные члены в многочлене и расположить их по убыванию степеней x.

 




Дата добавления: 2020-10-14; просмотров: 421;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.064 сек.