Лабораторная работа № 11 « Функции и файлы».

Цели:

  1. Изучить особенности работы с передачей параметров в среде Турбо Си++.
  2. Написать программу, решающую указанные задачи .

Преподавателю на проверку:

  1. Программа, которая:
    1. запрашивает необходимые данные в main,
    2. передает входные данные – структуры в качестве параметров в соответствующие функции,
    3. результаты выводятся из main, в которую осуществляется возврат структур.

 

Примечания:

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

 

Вариант 1

Для хранения данных о цветных планшетных сканерах описать структуру вида:

struct scan_info{

char model[25]: // наименование модели

int price: // цена

double x_s1ze: // горизонтальный размер области сканирования

double y_s1ze; // вертикальный размер области сканирования

int optr: // оптическое разрешение

int grey; // число градаций серого

};

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

Написать функцию, которая извлекает из этого файла данные о сканере в струк­туру типа scan_info. Обязательный параметр — номер требуемой записи. Функ­ция должна возвращать нулевое значение, если чтение прошло успешно, и -1 в противном случае.

Привести пример программы, создающей файл с данными о сканерах (данные вводятся с клавиатуры) — 6-8 записей и выводящей на дисплей данные о запро­шенной записи.

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

Вариант 2

Для хранения данных о цветных планшетных сканерах описать структуру вида:

 

struct scan_info{

char model[25]: // наименование модели

int price: // цена

double x_s1ze: // горизонтальный размер области сканирования

double y_s1ze; // вертикальный размер области сканирования

int optr: // оптическое разрешение

int grey; // число градаций серого

};

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

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

Привести пример программы, создающей файл с данными о сканерах (данные вводятся с клавиатуры) из не менее восьми записей и осуществляющий его сор­тировку.

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

Вариант 3

Для хранения данных о цветных планшетных сканерах описать структуру вида:

struct scan_info{

char model[25]: // наименование модели

int price: // цена

double x_s1ze: // горизонтальный размер области сканирования

double y_s1ze; // вертикальный размер области сканирования

int optr: // оптическое разрешение

int grey; // число градаций серого

};

Написать функцию, которая записывает в бинарный файл данныео сканере изприведенной структуры. Структура файла: в первых четырех байтах размещает­ся значение типа long, определяющее количество сделанных в файл записей; да­лее без пропусков размещаются записи о сканерах.

Написать функцию, которая сортирует записи в описанном выше бинарном фай­ле по наименованию модели сканера.

Привести пример программы, создающей файл с данными о сканерах (данные вводятся с клавиатуры) из не менее восьми записей и осуществляющий его сор­тировку.

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

Вариант 4

Для хранения данных о цветных планшетных сканерах описать структуру вида:

struct scan_info{

char model[25]: // наименование модели

int price: // цена

double x_s1ze: // горизонтальный размер области сканирования

double y_s1ze; // вертикальный размер области сканирования

int optr: // оптическое разрешение

int grey; // число градаций серого

};

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

Написать функцию, которая извлекает данные о сканере из описанного выше би­нарного файла в структуру типа scan_info. Обязательный параметр — номер тре­буемой записи. Функция должна возвращать нулевое значение, если чтение про­шло успешно, и -1 в противном случае.

Привести пример программы, создающей файл с данными о сканерах (данные вводятся с клавиатуры) из не менее восьми записей и осуществляющий вывод на дисплей данных о требуемой записи.

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

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

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

Привести пример программы, создающей файл с данными о сканерах (данные вводятся с клавиатуры) из не менее восьми записей и осуществляющий его сор­тировку.

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

Вариант 5

Для хранения данных о цветных планшетных сканерах описать структуру вида:

struct scan_info{

char model[25]: // наименование модели

int price: // цена

double x_s1ze: // горизонтальный размер области сканирования

double y_s1ze; // вертикальный размер области сканирования

int optr: // оптическое разрешение

int grey; // число градаций серого

};

Написать функцию, которая записывает данные о сканере из приведенной струк­туры в требуемую позицию в бинарном файле. Структура файла: в первых двух байтах размещается значение типа int, определяющее количество сделанных в файл записей; далее без пропусков размещаются записи о сканерах. Запись мо­жет осуществляться в любую позицию, причем если между вводимой записью и последней (или началом файла) имеются пропуски, они заполняются нулями.

Написать функцию, которая «уплотняет» описанный выше бинарный файл пу­тем удаления из него записей, содержащих все нули.

Привести пример программы, создающей файл с данными о сканерах (данные вводятся с клавиатуры) из не менее шести записей и осуществляющий его уплот­нение.

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

Вариант 6

Для хранения данных о цветных планшетных сканерах описать структуру вида :

struct scan_info{

char model[25]: // наименование модели

int price: // цена

double x_s1ze: // горизонтальный размер области сканирования

double y_s1ze; // вертикальный размер области сканирования

int optr: // оптическое разрешение

int grey; // число градаций серого

};

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

Написать функцию, которая запрашивает данные о сканере в режиме диалога и замещает записи в бинарном файле по заданному номеру. Обязательный пара­метр — номер замещаемой записи. Функция должна возвращать нулевое значе­ние, если запись прошла успешно, и -1 в противном случае.

Привести пример программы, создающей файл с данными о сканерах (данные вводятся с клавиатуры) из не менее восьми записей и осуществляющий вставку новых данных о сканере.

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

Вариант 7

Для хранения данных о цветных планшетных сканерах описать структуру вида:

struct scan_info{

char model[25]: // наименование модели

int price: // цена

double x_s1ze: // горизонтальный размер области сканирования

double y_s1ze; // вертикальный размер области сканирования

int optr: // оптическое разрешение

int grey; // число градаций серого

};

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

Написать функцию, которая вводит данные о сканере с клавиатуры в структуру типа scan_info, и если данные об этом сканере отсутствуют в файле, помещаетсодержимое структуры в конец файла; в противном случае выдает соответствую­щее сообщение.

Привести пример программы, создающей файл с данными о сканерах (данные вводятся из текстового файла) — 6-8 записей и дополняющей файл записями о 2-3 сканерах, вводимых с клавиатуры.

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

Вариант 8

Для хранения данных о цветных планшетных сканерах описать структуру вида :

struct scan_info{

char model[25]: // наименование модели

int price: // цена

double x_s1ze: // горизонтальный размер области сканирования

double y_s1ze; // вертикальный размер области сканирования

int optr: // оптическое разрешение

int grey; // число градаций серого

};

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

Написать функцию, которая вводит данные о сканере с клавиатуры в структуру типа scan_info и помещает ее содержимое на место первой записи в файле. Файл должен существовать. При этом, запись ранее занимавшая первую позицию, по­мещается на вторую, вторая запись на третью, и т. д.

Привести пример программы, создающей файл с данными о сканерах (данные вводятся из текстового файла) —6-8 записей и дополняющей этот файл 1-2 новыми записями, вводимыми с клавиатуры.

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

Вариант 9

Для хранения данных о цветных планшетных сканерах описать структуру вида :

struct scan_info{

char model[25]: // наименование модели

int price: // цена

double x_s1ze: // горизонтальный размер области сканирования

double y_s1ze; // вертикальный размер области сканирования

int optr: // оптическое разрешение

int grey; // число градаций серого

};

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

Написать функцию, которая записывает данный массив в создаваемый бинар­ный файл. Если цена сканера меньше 200, то данные об этом сканере в файл не записываются. Информация об остальных сканерах помещается в бинарный файл, причем сначала пишутся данные о всех сканерах, имя которых начинается с заглавной буквы, а затем — с прописной.

Структура файла: в первых четырех байтах размещается значение типа long, опре­деляющее количество сделанных в файл записей; далее без пропусков размеща­ются записи о сканерах.

Привести пример программы, создающей файл с данными о сканерах и осущест­вляющий вывод на дисплей данных о требуемой записи (либо всех, либопо но­меру).

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

Вариант 10

Для хранения данных о ноутбуках описать структуру вида:

struct NOTEBOOK{

char model[21]: // наименование

struct size{ // габаритные размеры

float x;

float у;

float z;

};

float w; // вес

int price; // цена

}

Написать функцию, которая читает данные о ноутбуках из файла note.txt (см. после варианта 20) в структуру приведенного вида. Написать функцию, которая записывает содержимое структуры в конец бинарного файла. Структура бинарного файла: первые два байта (целое) — число записей в файле; далее записи в формате структуры NOTEBOOK.

Написать программу, в которой на основе разработанных функций осуществля­ется чтение данных только для тех ноутбуков, частота процессора которых боль­ше 120 МГц, и запись в бинарный файл по убыванию цены.

Вариант 11

Для хранения данных о ноутбуках описать структуру вида:

struct NOTEBOOK{

char model[21]: // наименование

struct size{ // габаритные размеры

float x;

float у;

float z;

};

float w; // вес

int price; // цена

}

Написать функцию, которая читает данные о ноутбуках из файла note.txt (см. после варианта 20) в структуру приведенного вида. Написать функцию, которая записывает содержимое структуры в конец бинарного файла. Структура бинарного файла: первые два байта (целое) — число записей в файле; далее записи в формате структуры NOTEBOOK.

Написать программу, в которой на основе разработанных функций осуществля­ется чтение данных только для тех ноутбуков, объем HDD которых меньше 1 Гбайт, и запись считанных данных в бинарный файл в алфавитном порядке по наименованию.

Вариант 12

Для хранения данных о ноутбуках описать структуру вида :

struct NOTEBOOK{

char model[21]: // наименование

struct size{ // габаритные размеры

float x;

float у;

float z;

};

float w; // вес

int price; // цена

}

Написать функцию, которая читает данные о ноутбуках из файла note.txt (см. после варианта 20) в структуру приведенного вида. Написать функцию, которая записывает содержимое структуры в конец бинарного файла. Структура бинарного файла:

первые два байта (целое) — число записей в файле; далее записи в формате структуры NOTEBOOK.

Написать программу, в которой на основе разработанных функций осуществля­ется запись в двоичный файл данных только о тех ноутбуках, целое количество которых в одном кубическом метре не превышает 285 штук.

Вариант 13

Для хранения данных о ноутбуках описать структуру вида :

char model[21]: // наименование

struct size{ // габаритные размеры

float x;

float у;

float z;

};

float w; // вес

int price; // цена

}

Написать функцию, которая читает данные о ноутбуках из файла note.txt (см. после варианта 20) в структуру приведенного вида. Написать функцию, которая записывает содержимое структуры в конец бинарного файла. Структура бинарного файла: первые два байта (целое) — число записей в файле; далее записи в формате структуры NOTEBOOK.

Написать программу, в которой на основе разработанных функций осуществля­ется запись в двоичный файл данных только о тех ноутбуках, максимальный объ­ем ОЗУ которых не менее 40 Мбайт, отсортированных по объему.

Вариант 14

Для хранения данных о ноутбуках описать структуру вида :

char model[21]: // наименование

struct size{ // габаритные размеры

float x;

float у;

float z;

};

float w; // вес

int price; // цена

}

Написать функцию, которая читает данные о ноутбуках из файла note.txt (см. после варианта 20) в структуру приведенного вида. Написать функцию, которая записывает содержимое структуры в конец бинарного файла. Структура бинарного файла: первые два байта — целое число записей в файле; далее записи в формате струк­туры NOTEBOOK.

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

Вариант 15

Для хранения данных о ноутбуках описать структуру вида:

Struct NOTEBOOK{

struct disp_res{ // разрешающая способность дисплея

int x; // по горизонтали

int у; // по вертикали

};

int f; // частота регенерации

float d; // размер диагонали дисплея

int price; // цена

char model[21]; // наименование

}

Написать функцию, которая читает данные о ноутбуках из файла note.txt (см. после варианта 20) в структуру приведенного вида. Написать функцию, которая записывает содержимое структуры в конец бинарного файла. Структура бинарного файла:

первые два байта — целое число записей в файле; далее записи в формате струк­туры NOTEBOOK.

Написать программу, в которой на основе разработанных функций осуществля­ется запись в двоичный файл данных только о тех ноутбуках, вес которых менее 7 кг, отсортированных в порядке возрастания цены.

Вариант 16

Для хранения данных о ноутбуках описать структуру вида :

Struct NOTEBOOK{

struct disp_res{ // разрешающая способность дисплея

int x; // по горизонтали

int у; // по вертикали

};

int f; // частота регенерации

float d; // размер диагонали дисплея

int price; // цена

char model[21]; // наименование

}

Написать функцию, которая читает данные о ноутбуках из файла note.txt (см. после варианта 20) в структуру приведенного вида. Написать функцию, которая записывает содержимое структуры в конец бинарного файла. Структура бинарного файла:

первые два байта — целое число записей в файле; далее записи в формате струк­туры NOTEBOOK.

Написать программу, в которой на основе разработанных функций осуществля­ется запись в двоичный файл данных только о тех ноутбуках, объем видеопамяти которых 2 Мбайт, отсортированных в порядке уменьшения тактовой частоты процессора.

Вариант 17 .

Для хранения данных о ноутбуках описать структуру вида:

Struct NOTEBOOK{

struct disp_res{ // разрешающая способность дисплея

int x; // по горизонтали

int у; // по вертикали

};

int f; // частота регенерации

float d; // размер диагонали дисплея

int price; // цена

char model[21]; // наименование

}

Написать функцию, которая читает данные о ноутбуках из файла note.txt (см. после варианта 20) в структуру приведенного вида. Написать функцию, которая записывает содержимое структуры в конец бинарного файла. Структура бинарного файла:

первые два байта — целое число записей в файле; далее записи в формате струк­туры NOTEBOOK.

Написать программу, в которой на основе разработанных функций осуществля­ется запись в двоичный файл данных только о тех ноутбуках, объем HDD кото­рых больше 1 Гбайт, отсортированных в порядке возрастания размера диагонали дисплея.

Вариант 18

Для хранения данных о ноутбуках описать структуру вида:

Struct NOTEBOOK{

struct disp_res{ // разрешающая способность дисплея

int x; // по горизонтали

int у; // по вертикали

};

int f; // частота регенерации

float d; // размер диагонали дисплея

int price; // цена

char model[21]; // наименование

}

Написать функцию, которая читает данные о ноутбуках из файла note.txt (см. после варианта 20) в структуру приведенного вида. Написать функцию, которая записывает содержимое структуры в конец бинарного файла. Структура бинарного файла:

первые два байта — целое число записей в файле; далее записи в формате струк­туры NOTEBOOK.

Написать программу, в которой на основе разработанных функций осуществля­ется запись в двоичный файл данных только о тех ноутбуках, тактовая частота процессора которых больше 120МГц, отсортированных в порядке уменьшения веса.

Вариант 19

Для хранения данных о ноутбуках описать структуру вида:

struct NOTEBOOK{

struct disp_res{ // разрешающая способность дисплея

int x; // по горизонтали

int у; // по вертикали

};

int f; // частота регенерации

float d; // размер диагонали дисплея

float hdd; // объем диска

char model[21]: // наименование

}

Написать функцию, которая читает данные о ноутбуках из файла note.txt в струк­туру приведенного вида. Написать функцию, которая записывает содержимое структуры в конец бинарного файла. Структура бинарного файла: первые два байта — целое число записей в файле; далее записи в формате структуры NOTE­BOOK.

Написать программу, в которой на основе разработанных функций осуществля­ется запись в двоичный файл данных только о тех ноутбуках, тактовая частота процессора которых больше 120МГц, отсортированные в порядке возрастания цены.

Вариант 20

Для хранения данных о ноутбуках описать структуру вида:

struct NOTEBOOK{

struct disp_res{ // разрешающая способность дисплея

int x; // по горизонтали

int у; // по вертикали

};

int f; // частота регенерации

float d; // размер диагонали дисплея

float hdd; // объем диска

char model[21]: // наименование

}

Написать функцию, которая читает данные о ноутбуках из файла note.txt в структуру приведенного вида. Написать функцию, которая записывает содержи­мое структуры в конец бинарного файла. Структура бинарного файла: первые два байта — целое число записей в файле; далее записи в формате структуры NOTEBOOK.

Написать программу, в которой на основе разработанных функций осуществля­ется запись в двоичный файл данных только о тех ноутбуках, цена которых боль­ше $3500, отсортированные в порядке возрастания тактовой частоты процессора.


 

Пример файла note.txt:
Aser Note Light     5.6   02 . 0х11   .8х08.3       10.4 1   1024х0768     0.774  
ASW ND5123T     7.2   02 . 3х11   .8х10.1       12.1 2   1024х0768     1.300  
ARMNote TS80CD     7.2   02 .   0х11   .5х08.8 133     11.3 1   1024х0768     1,300  
AST Ascent-ia P50     7.5   02 .   3х11   .3х09.0       11.3 1   0800х0600     0.774  
BSI NP8657D     8.0   02 .   3х11   .8х09.3       11.3 1   1024х0768     0.810  
BSI NP5265A     8.2   02 .   5х12 .0х09.0       12.1 2   1024х0768     1.300  
Dell Xp1 P100SD     6.0   02 .   3х11   .0х08.8       10.3 1   1024х0768     0.773  
Digital H-iNote     4.0   01 . 3х11   .0х08.8       10.4 1   0800х0600     1.000  
Gateway Solo S5     5.6   02 .   0х11   .9х08.8       11.3 2   1024х0768     0.686  
Hertz Z-Opt-ima NB     8.0   02 .   3х11   .9х09.0       11.2 2   1024х0768     1.000  
HP OmmBook 5500     7.1   02 .   0х11   .5х09.0       11.4 1   1024х0768     1.300  
IBM ThinkPad 560     4.1   01 .   3х11   .8х08.8       12.1 2   1024х0768     0.774  
NEC Versa 4080H     6.6   02 .   3х11   .8х09.5       10.4 1   0800х0600     0.776  
Polywell Poly 500     7.9   02 .   3х11   .9х09.0       10.4 1   1024х0768     1.000  
Samsung SENS 810     8.7   02 .   3х11   .5х09.5       11.4 2   1024х0768     0.773  
Twinhead SUmnote     7.4   02 .   0х11   .5х08.0       10.4 1   1024х0768     0.772  

В файле note.txt находится текстовая информация о ноутбуках. Каждая строка содержит данные об одной модели. Данные в строке размещаются в следующих полях:

1: 20 — наименование модели;

21: 24 — цена в долларах (целое число);

26: 28 — масса ноутбука в кг (число с десятичной точкой из четырех символов);

30: 43 — габаритные размеры ноутбука в дюймах (ВЫСОТАхДЛИНАхШИРИНА — три числа с десятичной точкой (4 символа, включая точку, разделенные 'х');

44: 47 — частота процессора в МГц (целое число из трех символов);

49:50 — максимальный объем ОЗУ в мегабайтах (целое число из двух символов);

52:55 — размер диагонали дисплея в дюймах (число с десятичной точкой из че­тырех символов, включая точку);

57 — размер видеопамяти в мегабайтах — целое число из одного символа;

59: 67 — разрешающая способность дисплея в пикселах (два целых числа, разде­ленные 'х');

69: 70 — частота регенерации дисплея в Гц (целое число из двух символов);

72: 76 — объем HDD в гигабайтах (число с десятичной точкой из пяти симво­лов).

Все неописанные позиции заполнены пробелами.