Стадии и этапы разработки.
Курсовая работа
по дисциплине «Программирование на языке высокого уровня»
на тему «Динамическое формирование и преобразование списков и структур»
Вариант 19
Исполнитель ст.гр. СВБС-21 ______________________Д. С. Солодов | Руководитель ст. преп. каф. ВСиС ______________________Л. М. Афонина |
2012 г.
Федеральное агентство по образованию
Московский Государственный институт
электроники и математики (ТУ)
Кафедра «Вычислительные системы и сети»
Курсовая работа
по дисциплине «Программирование на языке высокого уровня»
на тему «Динамическое формирование и преобразование списков и структур»
Техническое задание
Листов 3
Задание принял к исполнению ст.гр. СВБС-21 ______________________Д. С. Солодов | Руководитель ст. преп. каф. ВСиС ______________________Л. М. Афонина |
2012 г.
Содержание
1) Назначение программы. 2
2) Требования к программе. 2
a) Требование к функциональным характеристикам. 2
b) Требования к обеспечению надежного функционирования программы. 2
c) Требования к составу технических средств. 3
d) Требования к информационной и программной совместимости. 3
3) Требования к программной документации. 3
4) Стадии и этапы разработки. 3
Назначение программы.
Разрабатываемая программа предназначена для закрепления теоретического материала и получения практических навыков по программированию на языке С.
Требования к программе.
A) Требование к функциональным характеристикам.
Программа должна выполнять следующие функции:
· ввод наименования файлов данных и выходного файла с клавиатуры по запросу;
· считывание входных данных происходит до конца файла;
· проверку на наличие следующих ошибок, при которых должны быть предусмотрены соответствующие сообщения:
а) ошибка открытия файла;
б) отсутствие информации во входных данных;
· ввод дополнительных данных, требуемых программой с клавиатуры;
· выделение памяти для размещения очередной записи списка динамически и при удалении записи высвобождение памяти;
· помещение результатов работы программы в выходной файл следующим образом:
Исходный старый список
Преобразованный (отсортированный, сокращенный) список
· программа должна иметь модульную структуру.
B) Требования к обеспечению надежного функционирования программы.
Надежное функционирование программы обеспечивается за счет контроля входных данных, который заключается в проверке наличия файлов данных, в проверке отсутствия информации или ее неверного вида во входных файлах. Должен быть предусмотрен порядок действий при несоблюдении перечисленных требований.
C) Требования к составу технических средств.
Для функционирования программы и выполнения данной работы необходим
компьютер типа IBM(или совместимый с ним) и принтер.
D) Требования к информационной и программной совместимости.
Программа разрабатывается на языке C и функционировать под управлениемперационной системы MS DOS или Windows.
Требования к программной документации.
Программная документация должна содержать:
a) Техническое задание.
b) Программа и методика испытаний.
Стадии и этапы разработки.
№ п/п | Содержание работ | Срок окончания |
1) 2) 3) 4) | I Технический проект Разработка структуры входных и выходных данных. | 25.03.2012 |
Разработка алгоритма решения задачи. | 04.04.2012 | |
Разработка структуры программы. | 10.04.2012 | |
Разработка тестов | 20.04.2012 | |
1) 2) 3) 4) | II Рабочий проект Написание текста программы на заданном языке. | 25.04.2012 |
Отладка программы. | 10.05.2012 | |
Разработка программной документации | 15.05.2012 | |
Написание отчета о работе III Сдача программы | 25.05.2012 04.06.2012 |
Содержание
1) Задание на курсовую работу. ………….. 2) Постановка задачи. …………………….. 2.1) Перечень исходных данных...... 2.2) Перечень выходных данных….. 3) Внешние спецификации программы….. 3.1) Входные данные………………. 3.2) Выходные данные…………….. 3.3) Сообщения……………………. 4) Метод решения..………………………… 5) Структура программы………………….. 6) Описание алгоритма программы………. 7) Текст программы..……………………… 8) Тестовые примеры……………………… 9) Выводы …………………………………. 10) Литература …………………………….. 11) Приложение……………………………. | ………………………………………………….6 ………………………………………………….6 ………………………………………………….6 ………………………………………………….6 ………………………………………………….6 ………………………………………………….6 ………………………………………………….6 ………………………………………………….7 ………………………………………………….8 ………………………………………………….8 ………………………………………………….9 ………………………………………………...14 ………………………………………………...19 ………………………………………………...22 ………………………………………………...23 ………………………………………………...23 |
1) Задание на курсовую работу.
Написать программу, которая вводит из файла структуры вида:
размещает их в двунаправленный линейный список, выполняет сортировку списка по цене и удаляет машины с EGA-монитором.
2) Постановка задачи.
2.1) Перечень исходных данных:
fin – название файла с исходными данными.
fout – название файла, содержащего результаты работы программы.
2.2) Перечень выходных данных:
Файл с результатами в формате <путь до файла и его название>.txt
3) Внешние спецификации программы.
3.1) Входные данные:
Введите путь и название файла исходных данных: <путь и название исходного файла>
Введите путь и название файла выходных данных: <путь и название выходных файла>
Список структур в файле начинается с первой строки файла. Каждая структура находится на своей отдельной строке. Поля структуры разделены между собой пробелом (в т.ч. и первый элемент структуры) и имеют следующий вид:
<марка> <цена> <произв.> <конфиг.> <тип проц.> <ОП> <диск. память> <такт. частота> <тип монитора>
3.2) Выходные данные:
Выходными данными является файл, содержащий исходный список структур, полученный из файла исходных данных, и выходной, отсортированный и сокращенный список структур. Исходный и выходной списки разделены между собой сплошной линией.
Выходной файл имеет вид:
----- ishodnaya structura imeet vid: -----
Marka: <марка 1-ой ЭВМ>
Cena: <цена 1-ой ЭВМ> pyb
Proiz-l: <производ-ль 1-ой ЭВМ>
Proc-r: <тип проц 1-ой ЭВМ>
Oper: <ОП 1-ой ЭВМ>
HDD: <диск. память 1-ой ЭВМ> Gb
Takt: <такт. частота 1-ой ЭВМ> GHz
Monitor: <тип монитора 1-ой ЭВМ>
Marka: <марка 2-ой ЭВМ>
Cena: <цена 2-ой ЭВМ> pyb
Proiz-l: <производ-ль 2-ой ЭВМ>
Proc-r: <тип проц 2-ой ЭВМ>
Oper: <ОП 1-ой ЭВМ>
HDD: <диск. память 2-ой ЭВМ> Gb
Takt: <такт. частота 2-ой ЭВМ> GHz
Monitor: <тип монитора 2-ой ЭВМ>
_______________
----- otsortirovannaya i sokrashennaya structura imeet vid: -----
Marka: <марка не удаленной ЭВМ >
Cena: < цена не удаленной ЭВМ > pyb
Proiz-l: < производ-ль не удаленной ЭВМ >
Proc-r: < тип проц не удаленной ЭВМ >
Oper: < ОП не удаленной ЭВМ >
HDD: < диск. память не удаленной ЭВМ > Gb
Takt: < такт. частота не удаленной ЭВМ > GHz
Monitor: < тип монитора не удаленной ЭВМ >
3.3) Сообщения:
Первым появляется сообщение с описанием задания курсовой работы в виде:
-------------------------------------------------------------------------------
Napisat' programmy kotoraya vvodit iz faila strukturi,
razmeshaet ih v dvunapravlenniy lineyniy spisok
i vipolnyaet obrabotku spiska, a rezultat vivodit v fail.
Otsortirovat' spisok po cene i udalit' mashini s EGA-monitorom
-------------------------------------------------------------------------------
Далее выводится запрос на ввод названия файла с исходными данными вида:
Vvedite nazvanie faila ishodnih dannih:
Далее выводится запрос на ввод названия файла выходных данных вида:
Vvedite nazvanie faila s rezul'tatami:
Если файл исходных данных не найден, на экран выводится сообщение об ошибке:
BHUMAHUE! Fail ishodnih dannih ne nayden! Rabota programmi zavershena..
Если файл исходных данных пуст, на экран выводится сообщение об ошибке:
BHUMAHUE! Fail ishodnih dannih pustoy! Rabota programmi zavershena..
Если исходные данные в файле неверного формата (в структуре указаны не все поля или значения полей не соответствую по смысловому содержанию полям структуры), на экран выводится сообщение об ошибке:
BHUMAHUE! Ishodnie dannie nevernogo formata.. Rabota programmi zavershena..
В процессе обработки данных на экран выводятся уведомления по удаляемым элементам в следующем виде:
..Ydalyaem element: Marka: <марка удаляемого элемента>
Cena: <цена удаляемого элемента>
Monitor: <тип монитора удаляемого элемента>
В конце работы программы на экран выводится сообщение с уведомлением вида:
Rabota so structurami zakonchena, rezul'tat zapisan v fail "<имя файла выходных данных>"
4) Метод решения.
Исходные данные с помощью цикла с предусловием построчно считываются из файла вплоть до достижения конца файла и сразу заносятся в очередную структуру, память под которую выделяется динамически.
После формирования списка со структурами весь список заносится в файл с выходными данными.
Далее осуществляется сортировка структур по возрастанию методом пузырька, по значению поля «Цена» путем перестановки местами значений полей соседних элементов списка.
После сортировки осуществляется удаление из списка структур со значением поля «тип монитора» равным «EGA» путем циклического прохождения по всем структурам списка и сравнения значения поля «тип монитора» с символьной строкой «EGA». Память, выделенная под удаленный элемент списка, освобождается.
На конечном этапе в выходной файл заносится весь отсортированный и сокращенный список структур, либо информационное сообщение, в случае если после удаления список оказался пустым.
5) Структура программы.
Программа состоит из 5 следующих модулей:
а) Подпрограмма main. В ней осуществляются вывод условия выполняемой задачи, запросы на ввод имени исходного и выходного файла, вызов всех остальных подпрограмм, вывод информационного сообщения о завершении работы программы.
b) Подпрограмма input. В ней осуществляется проверка на существование и корректное открытие исходного и выходного файлов, считывание данных из исходного файла, проверка их на корректность, и занесение их в список структур.
с) Подпрограмма out.Осуществляет проверку на открытие файла выходных данных, а также вывод самих исходных и обработанных данных в выходной файл.
d) Подпрограмма sort.Осуществляет сортировку всего списка структур методом пузырька.
e) Подпрограмма del.Осуществляет удаление из списка структур по условию, указанному в постановке задачи. Освобождает память из-под удаленных структур.
6) Описание алгоритмов программы.
Алгоритм подпрограммы main():
Алгоритм подпрограммы input():
Алгоритм подпрограммы sort():
Алгоритм подпрограммы del():
Алгоритм подпрограммы out():
7) Текст программы.
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#define CONFIG struct configuration
CONFIG // Podstructura adresov zavodov
{
char proc_type[15]; //
float ram, //
hdd, //
takt; //
char monit_type[10];
};
#define RECORD struct record
RECORD //
{
char mark[20]; //
float price; //
char proiz[25]; //
CONFIG config; //
RECORD *prev,
*next;
};
RECORD *input( char fin[30] ) // podprogramma schitivaniya ishodnih dannih
{
RECORD *head = NULL, // ukazatel' na 1-y element
*curr = 0, // ukazatel' na tekushiy element
*prev =0; // ukazatel' na predidushiy element
FILE *f; // failovaya peremennaya
if( (f = fopen( fin, "rt")) == 0 ) // Proverka otkritiya faila dlya chteniya
{
printf("\n\n BHUMAHUE! Fail ishodnih dannih ne nayden!\n Rabota programmi zavershena..");
getch();
exit(1);
}
else
if( getc(f) == -1 ) //Proverka na nalishie dannih v faile
{
printf("\n\n BHUMAHUE! Fail ishodnih dannih pustoy!\n Rabota programmi zavershena..");
getch();
exit(1);
}
else
{
// Chtenie pervoy EVM-ki
head = ( RECORD* ) malloc( sizeof( RECORD ));
// Proverka na korrektnost' ishodmih dannih
if( fscanf(f, "%s%f%s%s%f%f%f%s", &head->mark, &head->price, &head->proiz, &head->config.proc_type, &head->config.ram, &head->config.hdd, &head->config.takt, &head->config.monit_type) != 8 )
{
printf("\n\n BHUMAHUE! Ishodnie dannie nevernogo formata..\n Rabota programmi zavershena.");
getch();
exit(1);
}
head->prev = NULL;
head->next = NULL;
prev = head;
while( !feof( f ) ) // Chtenie ostal'nih EVM-ok
{
curr = ( RECORD* ) malloc( sizeof( RECORD ));
if( fscanf(f, "%s%f%s%s%f%f%f%s", &curr->mark, &curr->price, &curr->proiz, &curr->config.proc_type, &curr->config.ram, &curr->config.hdd, &curr->config.takt, &curr->config.monit_type) != 8 )
{
printf("\n\n BHUMAHUE! Ishodnie dannie nevernogo formata..\n Rabota programmi zavershena.");
getch();
exit(1);
}
curr->prev = prev;
curr->next = NULL;
prev->next = curr;
prev = curr;
}
}
fclose( f );
return head;
} // end input();
void out( RECORD *head, int flag, char fout[30] ) // podprogramma vivoda dannih v fail s rezul'tatami
{
RECORD *out = 0;
FILE *f; // failovaya peremennaya dlya zapisi v rezul'tiryushiy fail
//Vivod ishodmoy structuri v fail
switch( flag )
{
case 0:
{
f = fopen( fout, "w" ); // Otkrivaem fail dlya zapisi
if( !f ) // esli fail ne nayden
{
printf("\n\n BHUMAHUE! Oshibka otkritiya faila s resul'tatami!\n Rabota programmi zavershena.");
getch();
exit( 1 );
}
else
{
fprintf( f, "\n ----- ishodnaya structura imeet vid: -----\n\n");
out = head;
while( out ) // Vivod spiska na
{
fprintf( f, " Marka: %s\n Cena: %.0f pyb\n Proiz-l: %s\n Proc-r: %s\n Oper: %.1f Gb\n HDD: %.0f Gb\n Takt: %.2f GHz\n Monitor: %s\n\n", out->mark, out->price, out->proiz, out->config.proc_type, out->config.ram, out->config.hdd, out->config.takt, out->config.monit_type);
out = out->next;
}
}
fprintf( f, "_______________\n\n");
fprintf( f, " ----- otsortirovannaya i sokrashennaya structura imeet vid: -----\n\n");
fclose( f ); // zakritie faila s resul'tatami
break;
} // end case 0
case 1:
{
// dozapis' rezultiryushey structuri v fail
f = fopen( fout, "a" ); // Otkrivaem fail dlya DOzapisi
if( !f ) // esli fail ne nayden
{
printf("\n\n BHUMAHUE! Oshibka otkritiya faila s resul'tatami!\n Rabota programmi zavershena.");
getch();
exit(1);
}
else
{
out = head;
while(out) // Vivod spiska na
{
fprintf( f, " Marka: %s\n Cena: %.0f pyb\n Proiz-l: %s\n Proc-r: %s\n Oper: %.1f Gb\n HDD: %.0f Gb\n Takt: %.2f GHz\n Monitor: %s\n\n", out->mark, out->price, out->proiz, out->config.proc_type, out->config.ram, out->config.hdd, out->config.takt, out->config.monit_type);
out = out->next;
}
}
fclose( f ); // zakritie faila s resul'tatami
break;
} // end case 1
} // end switch
} // end out();
void sort( RECORD *p ) // Podprogramma sortirovki i sokrasheniya structuri
{
RECORD *curr = NULL; // tekushiy
char mark_temp[20], // peremennaya dlya zameni marki
proizv_temp[25]; // peremennaya dlya zameni proiazvoditelya
float price_temp; // peremennaya dlya zameni ceni
CONFIG config_temp; // peremennaya dlya zameni configuraciy
int flag = 1, // flag dlya puzir'ka
i = 0; // schetchik dlya sort;
// sortirovka po cene
while( flag )
{
curr = p->next;
while( curr )
{
if ( curr->price < curr->prev->price ) // elsi ydalyaemiy yavlyaetsya poslednim v spiske
{
// zapis' tekushih znacheniy vo vremennie peremennie
strcpy( mark_temp, curr->mark );
price_temp = curr->price;
strcpy( proizv_temp,curr->proiz );
config_temp = curr->config;
// meniyaem znacheniya poley
strcpy( curr->mark, curr->prev->mark );
strcpy( curr->proiz, curr->prev->proiz );
curr->price = curr->prev->price;
curr->config = curr->prev->config;
// meniyaem znacheniya poley
strcpy( curr->prev->mark, mark_temp );
curr->prev->price = price_temp;
strcpy( curr->prev->proiz, proizv_temp );
curr->prev->config = config_temp;
i = 1;
}
curr = curr->next;
}
if ( i == 0 ) flag = 0;
else i = 0;
}
} // end sort();
RECORD *del( RECORD *p, char fout[30] )
{
RECORD *curr = NULL,
*left = NULL,
*right = NULL,
*temp = NULL,
*head = p;
FILE *f;
// Ydalenie mashin s EGA-monitorom
curr = p;
while( curr )
{
if( strcmp( curr->config.monit_type, "EGA" ) == 0 )
{
printf("\n ..Ydalyaem element: Marka: %s\n Cena: %.0f pyb\n Monitor: %s\n", curr->mark, curr->price, curr->config.monit_type);
if( curr->next == NULL && curr->prev == NULL )
{
f = fopen( fout, "a" ); // Otkrivaem fail dlya dozapisi
if( !f ) // esli fail ne nayden
{
printf("\n\n BHUMAHUE! Oshibka otkritiya faila s resul'tatami!\n Rabota programmi zavershena.");
getch();
exit(1);
}
else
{
fprintf( f, " V structure vse mashini s EGA-monitorom. Spisok EVM pust.. \n\n");
}
fclose( f ); // zakritie faila s resul'tatami
printf("\n\n Rabota so structuroy zakonchena, rezul'tat zapisan v fail \"%s\"\n", fout);
getch();
exit(1);
}
else
if ( curr->next == NULL ) // elsi ydalyaemiy element posledniy
{
temp = curr->prev;
curr->prev->next = NULL;
free(curr);
curr = temp;
}
else
if ( curr->prev == NULL ) // elsi ydalyaemiy element perviy
{
head = curr->next;
curr->next->prev = NULL;
free(curr);
curr = head;
}
else
{
left = curr->prev;
right = curr->next;
left->next = right;
right->prev = left;
free(curr);
curr = left;
}
} // end if
else
curr = curr->next;
} // end while
return( head ); // Vozvrashaem ykazatel' na structuru
} // end del();
void main()
{
char fin[30],
fout[30];
RECORD *p,
*deleted;
clrscr(); // ochistka ekrana
printf("\n Gryppa SVBS-21 Solodov D.S. Korsovoy proekt Variant 19 \n");
printf("\n ----------------------------------------------------------------\n");
printf(" Napisat' programmy kotoraya vvodit iz faila strukturi, \n");
printf(" razmeshaet ih v dvunapravlenniy lineyniy spisok \n");
printf(" i vipolnyaet obrabotku spiska, a rezultat vivodit v fail. \n");
printf(" Otsortirovat' spisok po cene i udalit' mashini s EGA-monitorom ");
printf("\n ----------------------------------------------------------------\n");
printf("\n Vvedite put' i nazvanie faila ishodnih dannih: ");
scanf("%s", &fin);
printf("\n Vvedite put' i nazvanie faila s rezul'tatami: ");
scanf("%s", &fout);
p = input( fin ); // Vizov podprogrammi chteniya dannih iz faila
out( p, 0, fout ); // Vizov podprogrammi zapisi ishodnoy strukturi v fail
sort( p ); // Vizov podprogrammi sortirovki spiska
deleted = del( p, fout ); // Vizov podprogrammi ydaleniya mashin s EGA-monitorom
out( deleted, 1, fout ); // Vizov podprogrammi zapisi rezul'tatov v fail
printf("\n\n Rabota so structurami zakonchena, rezul'tat zapisan v fail \"%s\"\n", fout);
getch();
};
8) Тестовые примеры.
Тест №1
Данные в исходном файле:
NT 30000 Intel Celeron 1.5 200 3.00 EGA
MacBook 18700 Apple MacOS 2 350 2.7 LCD
DP 15000 AMD Celeron 1.7 250 2.3 EGA
LenBook 17200 Lenovo Intel 4 220 2.5 Lamp
C870 25000 Toshiba Intel 1.8 300 2.7 EGA
Данные в выходном файле:
----- ishodnaya structura imeet vid: -----
Marka: NT
Cena: 30000 pyb
Proiz-l: Intel
Proc-r: Celeron
Oper: 1.5 Gb
HDD: 200 Gb
Takt: 3.00 GHz
Monitor: EGA
Marka: MacBook
Cena: 18700 pyb
Proiz-l: Apple
Proc-r: MacOS
Oper: 2.0 Gb
HDD: 350 Gb
Takt: 2.70 GHz
Monitor: LCD
Marka: DP
Cena: 15000 pyb
Proiz-l: AMD
Proc-r: Celeron
Oper: 1.7 Gb
HDD: 250 Gb
Takt: 2.30 GHz
Monitor: EGA
Marka: LenBook
Cena: 17200 pyb
Proiz-l: Lenovo
Proc-r: Intel
Oper: 4.0 Gb
HDD: 220 Gb
Takt: 2.50 GHz
Monitor: Lamp
Marka: C870
Cena: 25000 pyb
Proiz-l: Toshiba
Proc-r: Intel
Oper: 1.8 Gb
HDD: 300 Gb
Takt: 2.70 GHz
Monitor: EGA
_______________
----- otsortirovannaya i sokrashennaya structura imeet vid: -----
Marka: LenBook
Cena: 17200 pyb
Proiz-l: Lenovo
Proc-r: Intel
Oper: 4.0 Gb
HDD: 220 Gb
Takt: 2.50 GHz
Monitor: Lamp
Marka: MacBook
Cena: 18700 pyb
Proiz-l: Apple
Proc-r: MacOS
Oper: 2.0 Gb
HDD: 350 Gb
Takt: 2.70 GHz
Monitor: LCD
Тест №2
Данные в исходном файле:
NT 30000 Intel Celeron qqq 200 3.00 EGA
MacBook qwewetreryrty Apple MacOS 2 350 2.7 LCD
Копия экрана с сообщением об ошибке:
Vvedite put' i nazvanie faila ishodnih dannih: error.txt
Vvedite put' i nazvanie faila s rezul'tatami: res.txt
BHUMAHUE! Ishodnie dannie nevernogo formata..
Rabota programmi zavershena.
Тест №3
Данные в исходном файле:
Файл исходных данных пустой
Копия экрана с сообщением об ошибке:
Vvedite put' i nazvanie faila ishodnih dannih: null.txt
Vvedite put' i nazvanie faila s rezul'tatami: res.txt
BHUMAHUE! Fail ishodnih dannih pustoy!
Rabota programmi zavershena..
Тест №4
Данные в исходном файле:
NT 30000 Intel Celeron 1.5 200 3.00 EGA
MacBook 18700 Apple MacOS 2 350 2.7 EGA
DP 15000 AMD Celeron 1.7 250 2.3 EGA
LenBook 17200 Lenovo Intel 4 220 2.5 EGA
C870 25000 Toshiba Intel 1.8 300 2.7 EGA
Данные в выходном файле:
----- ishodnaya structura imeet vid: -----
Marka: NT
Cena: 30000 pyb
Proiz-l: Intel
Proc-r: Celeron
Oper: 1.5 Gb
HDD: 200 Gb
Takt: 3.00 GHz
Monitor: EGA
Marka: MacBook
Cena: 18700 pyb
Proiz-l: Apple
Proc-r: MacOS
Oper: 2.0 Gb
HDD: 350 Gb
Takt: 2.70 GHz
Monitor: EGA
Marka: DP
Cena: 15000 pyb
Proiz-l: AMD
Proc-r: Celeron
Oper: 1.7 Gb
HDD: 250 Gb
Takt: 2.30 GHz
Monitor: EGA
Marka: LenBook
Cena: 17200 pyb
Proiz-l: Lenovo
Proc-r: Intel
Oper: 4.0 Gb
HDD: 220 Gb
Takt: 2.50 GHz
Monitor: EGA
Marka: C870
Cena: 25000 pyb
Proiz-l: Toshiba
Proc-r: Intel
Oper: 1.8 Gb
HDD: 300 Gb
Takt: 2.70 GHz
Monitor: EGA
_______________
----- otsortirovannaya i sokrashennaya structura imeet vid: -----
V structure vse mashini s EGA-monitorom. Spisok EVM pust..
9) Выводы.
В результате выполнения курсовой работы были получены навыки работы файлами, с двунаправленными линейными списками на языке программирования Си, а также был получен опыт работы с динамической памятью. Программа полностью соответствует требованиям, указанным в Техническом задании и осуществляет ввод из файла структур указанного вида, размещает их в двунаправленный линейный список, выполняет сортировку списка по цене и удаляет машины с EGA-монитором.
10) Литература.
1. Т.А. Павловская , «С/С++ Программирование на языке высокого уровня», издательство «Питер», 2006 г.
2. Березин Б.И., Березин С.Б., «Начальный курс Си», издательство «Диалог-МИФИ», 2007 г.
11) Приложение.
Программа и методика испытаний.
Приложение
Федеральное агентство по образованию
Московский Государственный институт
электроники и математики (ТУ)
Кафедра «Вычислительные системы и сети»
Курсовая работа
по дисциплине «Программирование на языке высокого уровня»
на тему «Динамическое формирование и преобразование списков и структур»
Программа и методика испытаний
Листов 2
2012 г.
Объект испытаний
Объектом испытаний является программа, которая решает задачу считывания из файла структур данных, выполняет сортировку списка по цене и удаляет машины с EGA-монитором.
Цель испытаний
Цель настоящих испытаний состоит в подтверждении готовности программы к выполнению поставленной задачи.
К задаче испытаний относятся проверка возможности и качества выполнения функций, выполняемых системой в рамках функционирования.