Лабораторная работа № 11 « Функции и файлы».
Цели:
- Изучить особенности работы с передачей параметров в среде Турбо Си++.
- Написать программу, решающую указанные задачи .
Преподавателю на проверку:
- Программа, которая:
- запрашивает необходимые данные в main,
- передает входные данные – структуры в качестве параметров в соответствующие функции,
- результаты выводятся из main, в которую осуществляется возврат структур.
Примечания:
- Решить задачу, оформив каждый пункт задания в виде функции, все необходимые данные для функции должны передаваться им в качестве параметров. Использование глобальных переменных в функциях не допускается.
Вариант 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 в структуру приведенного вида. Написать функцию, которая записывает содержимое структуры в конец бинарного файла. Структура бинарного файла: первые два байта — целое число записей в файле; далее записи в формате структуры NOTEBOOK.
Написать программу, в которой на основе разработанных функций осуществляется запись в двоичный файл данных только о тех ноутбуках, тактовая частота процессора которых больше 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 в гигабайтах (число с десятичной точкой из пяти символов).
Все неописанные позиции заполнены пробелами.