Хелпикс

Главная

Контакты

Случайная статья





Практическая часть



Практическая часть

Пример 1. Напишите программу структурного описания каталога одной книги.

Программный код решения примера:

#include <stdio.h>

#include <conio.h>

#include <string.h>

#define N 40

struct book { // Определение структуры

   char title[N+1]; // Название книги

   char author[N+1]; // Автор

   int year;      // Год издания

   int page;      // Количество страниц

   float price;   // Цена в у.е.

} Library;

 

int main (void)

 {

// Инициализация полей структуры

Library.year = 2007;

Library.page = 496;

Library.price = 12.78F;

strcpy_s(Library.title, N, "Programming in C");

strcpy_s(Library.author, N, "Stephen G. Kochan");

 

// Вывод на консоль

printf("\n\t Title: %s\n", Library.title);

printf("\t Author: %s\n", Library.author);

printf("\t Year: %d\n", Library.year );

printf("\t Number of pages: %d p.\n", Library.page );

printf("\t Price: %1.2f y.e.\n", Library.price);

 

   printf("\n\n Press any key: ");

   _getch();

   return 0;

}

В программе использованы функции strcpy_s() вместо стандартных функций strcpy(), что позволило избавиться от предупреждений в системе Visual Studio 2008. В случае применения функций strcpy(), их формат записи был бы следующим:

strcpy(Library.title, "Programming in C");

strcpy(Library.author, "Stephen G. Kochan");

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


Рис. 14.1. Пример инициализированных полей структуры

Пример 2. Напишите программу анализа средней успеваемости четырех студентов по четырем предметам за сессию на основе структурного типа данных.

Программный код решения примера:

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

 

#define N 4 // Число студентов

#define CH 30 // Число символов для фамилии или имени

 

// Определение структуры

struct {

char *name;// Имя студента

char *surname; // Фамилия студента

int M; // Отметка по математическому анализу

int A; // Отметка по алгебре

int H; // Отметка по истории

int In; // Отметка по информатике

} student[N];

 

int main (void) {

float mark;

 int i;

 

 // Выделение памяти для символьных указателей

 for (i = 0; i < N; ++i) {

student[i].name = (char *) malloc(CH*sizeof(char));

student[i].surname = (char *) malloc(CH*sizeof(char));

 }

 

printf("\n");

for (i = 0; i < N; ++i) {

   printf("\t Enter a name of %d student \n\t: ", i+1);

gets_s(student[i].name, CH);

 

printf("\t Enter a surname of %d student \n\t: ", i+1);

gets_s(student[i].surname, CH);

 

printf("\t Enter marks in 4 subjects for %d student (through a blank) \n\t: ", i+1);

 

scanf_s("%i%i%i%i", &(student[i].M),&(student[i].A),&(student[i].H),&(student[i].In));

_flushall();

}

 

puts("\n=====================================================================================");

printf("\t Statement of Achievement students:\n");

 

puts("======================================================================================\n");

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

 {

printf("\t %s \t %s:\n\t Mathematical analyses, Algebra, History, Informatics\n \

\n\t\t %d\t\t %3d\t \

%3d\t %5d\n----------------------------------------------\n", \

student[i].name, student[i].surname, \

student[i].M,student[i].A,student[i].H,student[i].In); }

 

mark = 0.0F; // F – спецификатор для типа float

 

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

{

mark += (student[i].M + student[i].A + student[i].H + student[i].In);

}

 

// Средняя оценка группы из 4 (N)студентов

printf("\n\t The average mark groups of %d students: %1.4f", N, mark/(4*N));

// 4*N - общее количество оценок

 

printf("\n\n Press any key: ");

_getch();

return 0;

}

В программе использован массив структур – переменная student[N]. Для определения имени и фамилии предварительно выделяется память для символьных указателей с помощью функций malloc(), для которых включен заголовок #include <stdlib.h>.

Шаблон структуры задан без имени-этикетки (без тегового имени).

Возможный результат выполнения программы показан на рис. 14.2.


Рис. 14.2. Пример инициализированных полей структуры

Пример 3. Напишите программу создания карточки служащего с помощью структурного типа данных и указателя на структуру. Предусмотрите инициализацию полей структуры и изменения этих полей.

Для решения примера воспользуемся структурой, рассмотренной в теоретической части данной лабораторной работы:

struct employee {

char Name [20+1];    // Имя

char Surname [20+1]; // Фамилия

int age;             // возраст

double hourlysalary; // почасовой оклад

} employee_new, *PTR; // *PTR – указатель на структуру

Программный код решения примера:

#include <stdio.h>

#include <conio.h>

#include <string.h>

#include <locale.h>

// Предполагаемое число символов в имени или фамилии

#define n 20

 

int main (void)

 {

 

// Определение структуры

struct emloyee {

char name[n+1];     // имя

char surname[n+1];  // фамилия

int age;          // возраст

double hourlysalary; // почасовой оклад в у.е.

} emloyee_new, *PTR; // *PTR - указатель на структуру

 

// Для поддержки русских шрифтов

setlocale( LC_ALL, ".1251");// кодовая страница Windows – 1251

PTR = &emloyee_new; //В указатель помещается адрес employee_new

// Инициализация полей структуры

strcpy_s(PTR -> name, n, "Владимир");

strcpy_s(PTR -> surname, n, "Викулов");

PTR -> age = 25;

PTR -> hourlysalary = 6.78;

 

// Вывод на консоль

puts("\n=============== Поля структуры ====================");

printf("\n Имя: %s\n Фамилия: %s\n возраст: %d лет\n почасовой оклад: %1.2f y.e.\n", \

PTR -> name, PTR -> surname, PTR -> age, PTR -> hourlysalary);

 

puts("\n==================================================\n");

printf("\n\n Нажмите любую клавишу (Press any key): ");

_getch();

return 0;

}

В программе инициализация полей структуры выполнена с помощью оператора стрелка "–>". С подключением заголовочного файла <locale.h> и определением прототипа функции setlocale(LC_ALL,".1251") производится поддержка русских шрифтов.

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


Рис. 14.3. Пример вывода полей структуры на консоль

Пример 4. Напишите программу информационной карточки студенческой группы с данными о студентах, применив вложенные структуры.

Как известно, если членом структуры является другая структура, то она называется вложенной.

Программный код решения примера:

#include <stdio.h>

#include <conio.h>

#include <string.h>

 

#define N 20

 

int main (void)

{

struct stud { // шаблон структуры

char name[N+1]; // имя студента

char surname[N+1]; // фамилия студента

int age;    // возраст - полных лет

double av_mark; // средняя успеваемость

   };

 

struct group {  // шаблон структуры

int number;    // номер группы

int quantity;  // количество студентов в группе

struct stud student;// вложенная структура

} ACOUY;       // ACOUY - структурная переменная

 

// Инициализация полей структуры

ACOUY.number = 3;

ACOUY.quantity = 21;

strcpy_s(ACOUY.student.name, N, "Peter");

strcpy_s(ACOUY.student.surname, N, "Bobrov");

ACOUY.student.age = 20;

ACOUY.student.av_mark = 4.25;

 

// Вывод на консоль

puts("\n========= Varient field of structure ===============");

printf("\n Group Number: %d,\n The number of students in the group: %d,\n\

 Name: %s,\n Surname: %s,\n Age: %d,\n Average mark: %1.2f", \

ACOUY.number, ACOUY.quantity, ACOUY.student.name, ACOUY.student.surname, \

ACOUY.student.age, ACOUY.student.av_mark);

puts("\n\n================================================\n");

 

printf("\n Press any key: ");

_getch();

return 0;

 }

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


Рис. 14.4. Пример информационной карточки студенческой группы

Пример 5. Напишите программу составления карточки на студента с динамическим распределением памяти для имени и фамилии на основе структурного типа данных.

Для динамического распределения памяти применим функцию malloc() и символьные указатели в качестве инициализаторов структуры.

Программный код решения примера:

#include <stdio.h>

#include <conio.h>

#include <string.h>

#include <stdlib.h>

#include <locale.h>

 

const int MAX = 80; // Предполагаемое число символов

 

int main (void) {

   char *NAME, *SURNAME;

 

struct stud { // шаблон структуры

char *name; // указатель вместо массива символов имени студента

char *surname; // указатель вместо массива символов фамилии студента

int age;    // возраст - полных лет

float av_mark; // средняя успеваемость

int letters; // число символов в имени и фамилии

   } TABLE, *PTR;

 

PTR = &TABLE; // инициализация указателя на структуру

NAME = (char *)malloc(MAX);

printf("\n Enter a name of the student: ");

gets_s(NAME, MAX);

 

SURNAME = (char *)malloc(MAX);

printf(" Enter a surname of the student: ");

gets_s(SURNAME, MAX);

 

// Распределение памяти для хранения "структурного" имени

PTR->name = (char *)malloc(strlen(NAME)+1);

// Копирование имени в распределенную память

strcpy_s(PTR->name, strlen(NAME)+1, NAME);

 

// Распределение памяти для хранения "структурной" фамилии

PTR->surname = (char *)malloc(strlen(SURNAME)+1);

// Копирование фамилии в распределенную память

strcpy_s(PTR->surname, strlen(SURNAME)+1, SURNAME);

 

printf(" Enter the age of the student: ");

scanf_s("%d", &TABLE.age);

 

printf(" Enter an average mark of the student: ");

scanf_s("%f", &TABLE.av_mark);

 

TABLE.letters = strlen(PTR->name) + strlen(PTR->surname);

// Для вывода чисел с десятичной запятой

setlocale(LC_NUMERIC, ".1251");

puts("\n======== Varient field of structure ===============");

printf("\n Name: %s\n Surname: %s\n Age: %d\n Average mark: %1.2f\n\

 The name and surname of student have: %d letters", \

PTR->name, PTR->surname, PTR->age, PTR->av_mark, PTR->letters);

puts("\n\n================================================\n");

 

// Освобождение памяти

free(NAME);

free(SURNAME);

free(PTR->name);

free(PTR->surname);

 

printf("\n Press any key: ");

_getch(); return 0;

}

В программе сначала выделяется память для имени и фамилии, для которых использованы указатели *NAME, *SURNAME. После того как имя и фамилия введены с клавиатуры, рассчитывается количество символов плюс символ окончания строки '\0', которые используются для выделения памяти для структурных переменных.

Возможный результат выполнения программы показан на рис. 14.5.


Рис. 14.5. Пример динамического создания карточки студента

Пример 6. Напишите программу записи структуры в двоичный файл и чтения ее из двоичного файла.

Решение примера разобьем на две части: создадим структуру и произведем пакетную запись в файл этой структуры. Потом операцию записи закомментируем, изменим поля структуры и выполним чтение из файла структуры.

Для динамического распределения памяти применим функцию malloc() и символьные указатели в качестве инициализаторов структуры.

Программный код решения примера:

#include <stdio.h>

#include <conio.h>

#include <string.h>

 

#define MAX 80 // Предполагаемое число символов

 

// шаблон структуры

struct stud

char name[MAX+1]; // массив символов имени студента

char surname[MAX+1]; // массив символов фамилии студента

char ACOUY[MAX+1]; // специальность

int age;    // возраст - полных лет

float av_mark; // средняя успеваемость

};

 

int main (void)

 {

char NAME[MAX+1], SURNAME[MAX+1], SPEC[MAX+1];

FILE *fid;

 

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

// определение указателя на структуру

struct stud TABLE = {"--", "--", "--", 0, 0.0}, *PTR;

PTR = &TABLE; // инициализация указателя на структуру

 

printf("\n Enter a name of student: ");

gets_s(NAME, MAX);

printf(" Enter a surname of student: ");

gets_s(SURNAME, MAX);

printf(" Enter a speciality: ");

gets_s(SPEC, MAX);

 

// Занесение имени в структуру

strcpy_s(PTR->name, strlen(NAME)+1, NAME);

// Занесение фамилии в структуру

strcpy_s(PTR->surname, strlen(SURNAME)+1, SURNAME);

// Занесение названия специальности в структуру

strcpy_s(PTR->ACOUY, strlen(SPEC)+1, SPEC);

 

printf("Enter the age of the student: ");

scanf_s("%d", &TABLE.age);

printf(" Enter the average mark student: ");

scanf_s("%f", &TABLE.av_mark);

 

puts("\n======= Varient field of structure ============");

printf("\n Name: %s\n Surname: %s\n \

Specialisation: %s\n Age: %d\n Average mark: %0.2f\n ", \

PTR->name, PTR->surname, PTR->ACOUY, PTR->age, PTR->av_mark );

puts("\n================================================\n");

if ( fopen_s(&fid, "D:\\data12.dat", "wb") )

{printf("\n File could not be opened\n");

printf("\n Press any key: ");

_getch(); return 0; }

//Пакетная запись в двоичный файл

fwrite(PTR, sizeof(struct stud), 1, fid);

fclose(fid);

 

//if ( fopen_s(&fid, "D:\\data12.dat", "rb") )

//{printf("\n File could not be opened\n");

//printf("\n Press any key: ");

//_getch(); return 0; }

// Чтение из двоичного файла

//fread(PTR, sizeof(struct stud), 1, fid);

//puts("\n===== Variants of fields of structure =====");

//printf("\n Name: %s\n Surname: %s\n \

//Specialisation: %s\n Age: %d\n Average mark: %1.2f\n ", \

 

//PTR->name, PTR->surname, PTR->ACOUY, PTR->age, PTR->av_mark );

//puts("\n===============================================\n");

//fclose(fid);

printf("\n\n Press any key: ");

_getch();

return 0;

}

Форматы записи в двоичный файл и чтения из двоичного файла:

fwrite(PTR, sizeof(struct stud), 1, fid);

fread(PTR, sizeof(struct stud), 1, fid);

В функции fwrite() первый параметр PTR определяет собой содержимое структуры (данных в других случаях), которое по указателю *fid на файл записывается в файл. Второй параметр sizeof(struct stud) определяет собой размер в байтах. Третий параметр 1 – это количество блоков, которое будет записываться в файл. При этом второй и третий параметры перемножаются, поэтому их можно поменять местами.

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

Возможный вариант выполнения программы при записи информации в двоичный файл показан на рис. 14.6. После комментирования программного кода с записью в файл и снятия комментариев к программному коду чтения из файла результат выполнения программы показан на рис. 14.7.


Рис. 14.6. Вариант записи информации в двоичный файл

 


Рис. 14.7. Результат чтения из двоичного файла

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

  1. Как определяется структура в языке С?
  2. Как объявляется структура в языке С?
  3. Какими способами можно объявить новые структурные переменные?
  4. Какие форматы используются для доступа к элементам структуры?
  5. Что такое вложенная структура?
  6. Какой уровень вложенности структур поддерживается стандартом С89?
  7. Как объявляется массив структур?
  8. Как объявляется указатель на структуру?
  9. Как инициализируется указатель на структуру?
  10. Как осуществляется инициализация полей структуры, определенных как символьные массивы?
  11. Какой оператор может быть использован для определения структурного типа данных?
  12. Является ли тег структуры именем ее типа?

Задание.

Вариант 1.

Задание 1.  

Описать переменную круг, в которой содержатся все данные для построения круга в декартовой системе координат.

Определить координаты центра, радиус, площадь и длину окружности круга минимального радиуса, который будет содержать внутри себя все заданные круги.

 

Задание 2.  

Структура «Фильм»:                  

· название;

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

·     страна;

·     год выпуска;

·     стоимость;

·  доход.

- написать функцию создания бинарного файла и внесения в него новых записей, значения которых вводятся с клавиатуры;

- написать функцию вывода информации из файла на экран с шапкой;

- написать функцию дополнения уже существующего файла структур новыми структурами;

- написать функцию поиска структур с заданными признаками (например, по заданному диапазону значений элемента);

- написать функцию упорядочения файла структур по заданному полю (элементу).

Вариант 2.

Задание 1.  

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

Задание 2.   

 

Структура ТРАНСПОРТНОЕ СРЕДСТВО: марка, мощность, стоимость, дата регистрации, цвет, номер.

- написать функцию создания бинарного файла и внесения в него новых записей, значения которых вводятся с клавиатуры;

- написать функцию вывода информации из файла на экран с шапкой;

- написать функцию дополнения уже существующего файла структур новыми структурами;

- написать функцию поиска структур с заданными признаками (например, по заданному диапазону значений элемента);

- написать функцию упорядочения файла структур по заданному полю (элементу).

 

 

Вариант 3.

Задание 1.  

N учеников проходили тестирование, выполнив M тестов по какому-либо предмету. Сколько очков набрал каждый ученик по всем темам? Вычислить средний балл, полученный учениками, и разницу между лучшим результатом и средним баллом.

Задание 2.   

Структура ТЕСТ: Название, дата, количество вопросов, варианты ответов, номер правильного ответа.

- написать функцию создания бинарного файла и внесения в него новых записей, значения которых вводятся с клавиатуры;

- написать функцию вывода информации из файла на экран с шапкой;

- написать функцию дополнения уже существующего файла структур новыми структурами;

- написать функцию поиска структур с заданными признаками (например, по заданному диапазону значений элемента);

- написать функцию упорядочения файла структур по заданному полю (элементу).

Вариант 4.

Задание 1.  

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

Задание 2.   

Структура «Экскурсия»: Наименование, страна, стоимость, продолжительность, транспорт.

- написать функцию создания бинарного файла и внесения в него новых записей, значения которых вводятся с клавиатуры;

- написать функцию вывода информации из файла на экран с шапкой;

- написать функцию дополнения уже существующего файла структур новыми структурами;

- написать функцию поиска структур с заданными признаками (например, по заданному диапазону значений элемента);

- написать функцию упорядочения файла структур по заданному полю (элементу).

 

Вариант 5.

Задание 1.  

N спортсменов-многоборцев принимают участие в соревнованиях по М видам спорта. По каждому виду спорта спортсмен набирает определенное количество очков. Вычислить, сколько очков в сумме набрал каждый спортсмен после окончания соревнований. Вычислить разницу в очках для спортсменов, занявших первое и последнее места.

Задание 2.  

Структура «Владелец автомобиля»:                    

- ФИО (фамилия, имя, отчество);

- номер автомобиля;

- номер техпаспорта;

- дата рождения (день, месяц, год);

- - телефон.

написать функцию создания бинарного файла и внесения в него новых записей, значения которых вводятся с клавиатуры;

написать функцию вывода информации из файла на экран с шапкой;

написать функцию дополнения уже существующего файла структур новыми структурами;

 написать функцию поиска структур с заданными признаками (например, по заданному диапазону значений элемента);

написать функцию упорядочения файла структур по заданному полю (элементу).

 

Вариант 6.

Задание 1.  

Торговый склад производит уценку хранящейся продукции. Если продукция хранится на складе дольше п месяцев, то она уценивается в 2 раза, а если срок хранения превысил т(т< п) месяцев, но не достиг п, то — в 1,5 раза. Ведомость уценки товаров должна содержать следующую информацию: наименование товара, количество товара, цена товара до уценки, срок хранения товара, цена товара после уценки, общая стоимость товара до уценки, общая стоимость товаров после уценки. Выяснить максимальный и минимальный сроки хранения товаров на складе; максимальную и минимальную цену товаров до уценки и после уценки.

Задание 2.  

Структура КНИГА: Название, жанр, кол-во страниц, список авторов.

- написать функцию создания бинарного файла и внесения в него новых записей, значения которых вводятся с клавиатуры;

- написать функцию вывода информации из файла на экран с шапкой;

- написать функцию дополнения уже существующего файла структур новыми структурами;

- написать функцию поиска структур с заданными признаками (например, по заданному диапазону значений элемента);

- написать функцию упорядочения файла структур по заданному полю (элементу).

Вариант 7.

Задание 1.  

В столовой предлагается N комплексных обедов, состоящих из Q блюд. Известна стоимость и калорийность каждого блюда. Сколько стоит самый дешевый и самый дорогой обед? Сколько калорий включает в себя самое калорийное блюдо?

Задание 2.  

Структура «Школьник»:                

- фамилия;

- имя;

- отчество;

- класс;

- пол;

- дата рождения (число, месяц, год);

- - домашний адрес (город, улица, номер дома, номер квартиры).

- написать функцию создания бинарного файла и внесения в него новых записей, значения которых вводятся с клавиатуры;

- написать функцию вывода информации из файла на экран с шапкой;

- написать функцию дополнения уже существующего файла структур новыми структурами;

- написать функцию поиска структур с заданными признаками (например, по заданному диапазону значений элемента);

- написать функцию упорядочения файла структур по заданному полю (элементу).

Вариант 8.

Задание 1.  

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

 

Задание 2.   

Структура «Покупатель»:              

- фамилия;

- имя;

- отчество;

- домашний адрес (город, улица, номер дома, номер квартиры).

- -номер кредитной карточки.

- написать функцию создания бинарного файла и внесения в него новых записей, значения которых вводятся с клавиатуры;

- написать функцию вывода информации из файла на экран с шапкой;

- написать функцию дополнения уже существующего файла структур новыми структурами;

- написать функцию поиска структур с заданными признаками (например, по заданному диапазону значений элемента);

- написать функцию упорядочения файла структур по заданному полю (элементу).

Вариант 9.

Задание 1.  

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

Задание 2.   

Структура КАРТИНА: ФИО автора, название, жанр, список владельцев

- написать функцию создания бинарного файла и внесения в него новых записей, значения которых вводятся с клавиатуры;

- написать функцию вывода информации из файла на экран с шапкой;

- написать функцию дополнения уже существующего файла структур новыми структурами;

- написать функцию поиска структур с заданными признаками (например, по заданному диапазону значений элемента);

- написать функцию упорядочения файла структур по заданному полю (элементу).

Вариант 10.

Задание 1.  

Составить программу назначения стипендии студентам по результатам сессии, используя следующие правила:

1) если все оценки 5, назначается повышенная стипендия;

2) если все оценки 4 и 5, назначается обычная стипендия;

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

Задание 2.  

Структура «Человек»:                    

- фамилия;

- имя;

- пол;

- национальность;

- дата рождения (число, месяц, год);

- номер телефона;

- - домашний адрес (город, улица, номер дома, номер квартиры).

- написать функцию создания бинарного файла и внесения в него новых записей, значения которых вводятся с клавиатуры;

- написать функцию вывода информации из файла на экран с шапкой;

- написать функцию дополнения уже существующего файла структур новыми структурами;

- написать функцию поиска структур с заданными признаками (например, по заданному диапазону значений элемента);

- написать функцию упорядочения файла структур по заданному полю (элементу).

Вариант 11.

Задание 1.  

При поступлении в университет лица, получившие оценку «неудовлетворительно» на первом экзамене, ко второму экзамену не допускаются. Считая фамилии абитуриентов и их оценки после первого экзамена исходными данными, составить список абитуриентов, допущенных ко второму экзамену. Информация хранится в виде массива.

Задание 2.   

Структура КОРАБЛЬ: название, водоизмещение, тип, список категорий кают.

- написать функцию создания бинарного файла и внесения в него новых записей, значения которых вводятся с клавиатуры;

- написать функцию вывода информации из файла на экран с шапкой;

- написать функцию дополнения уже существующего файла структур новыми структурами;

- написать функцию поиска структур с заданными признаками (например, по заданному диапазону значений элемента);

- написать функцию упорядочения файла структур по заданному полю (элементу).

Вариант 12.

Задание 1.   

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

Задание 2.  

Структура «Пациент»:                   

- фамилия;

- имя;

- отчество;

- год рождения;

- номер телефона;

- домашний адрес (город, улица, номер дома, номер квартиры).

-  номер медицинской карты.

- написать функцию создания бинарного файла и внесения в него новых записей, значения которых вводятся с клавиатуры;

- написать функцию вывода информации из файла на экран с шапкой;

- написать функцию дополнения уже существующего файла структур новыми структурами;

- написать функцию поиска структур с заданными признаками (например, по заданному диапазону значений элемента);

- написать функцию упорядочения файла структур по заданному полю (элементу).

Вариант 13.  

Задание 1.  

По данным сведениям об учениках класса определить среднюю массу мальчиков и средний рост девочек. Кто из учеников класса самый высокий? Информация хранится в виде массива.

Задание 2.

Структура ЖИВОТНОЕ: вид, класс, средний вес, места обитания.

- написать функцию создания бинарного файла и внесения в него новых записей, значения которых вводятся с клавиатуры;

- написать функцию вывода информации из файла на экран с шапкой;

- написать функцию дополнения уже существующего файла структур новыми структурами;

- написать функцию поиска структур с заданными признаками (например, по заданному диапазону значений элемента);

- написать функцию упорядочения файла структур по заданному полю (элементу).

Вариант 14.

Задание 1.   

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

Задание 2.   

Структура «Автомобиль»:             

- марка;

- цвет;

- серийный номер;

- регистрационный номер;

- количество дверей;

- дата выпуска (день, месяц, год);

- - цена.

- написать функцию создания бинарного файла и внесения в него новых записей, значения которых вводятся с клавиатуры;

- написать функцию вывода информации из файла на экран с шапкой;

- написать функцию дополнения уже существующего файла структур новыми структурами;

- написать функцию поиска структур с заданными признаками (например, по заданному диапазону значений элемента);

- написать функцию упорядочения файла структур по заданному полю (элементу).

Вариант 15.

Задание 1.  

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

Задание 2.   

Структура СТРАНА: название, форма правления, площадь, список областей.

- написать функцию создания бинарного файла и внесения в него новых записей, значения которых вводятся с клавиатуры;

- написать функцию вывода информации из файла на экран с шапкой;

- написать функцию дополнения уже существующего файла структур новыми структурами;

- написать функцию поиска структур с заданными признаками (например, по заданному диапазону значений элемента);

- написать функцию упорядочения файла структур по заданному полю (элементу).

Вариант 16.

Задание 1.  

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

Задание 2.   

Структура «государство»:             

- название страны;

- столица;

- государственный язык;

- население (число жителей);

- площадь территории;

- денежная единица;

- - государственный строй.

- написать функцию создания бинарного файла и внесения в него новых записей, значения которых вводятся с клавиатуры;

- написать функцию вывода информации из файла на экран с шапкой;

- написать функцию дополнения уже существующего файла структур новыми структурами;

- написать функцию поиска структур с заданными признаками (например, по заданному диапазону значений элемента);

- написать функцию упорядочения файла структур по заданному полю (элементу).

Вариант 17.

Задание 1.  

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

Задание 2.

Структура «Студент»: номер зачетной книжки, ФИО, дата рождения, номер группы, средний балл, размер стипендии.

- написать функцию создания бинарного файла и внесения в него новых записей, значения которых вводятся с клавиатуры;

- написать функцию вывода информации из файла на экран с шапкой;

- написать функцию дополнения уже существующего файла структур новыми структурами;

- написать функцию поиска структур с заданными признаками (например, по заданному диапазону значений элемента);

- написать функцию упорядочения файла структур по заданному полю (элементу).

Вариант 18.

Задание 1.  

Имеется информация по итогам экзаменов в институте всего в списке N человек. По каждому из студентов имеются следующие сведения: фамилия, оценка по математике, оценка по информатике и оценка по физике. Ввести информацию об экзаменах и напечатать количество и фамилии отличников.

Задание 2.   

Структура «Альбом исполнителя»:                     

- фамилия, имя, отчество;

- название альбома;

- количество песен на диске;

- год выпуска альбома;

- - фирма-производитель

- написать функцию создания бинарного файла и внесения в него новых записей, значения которых вводятся с клавиатуры;

- написать функцию вывода информации из файла на экран с шапкой;

- написать функцию дополнения уже существующего файла структур новыми структурами;

- написать функцию поиска структур с заданными признаками (например, по заданному диапазону значений элемента);

- написать функцию упорядочения файла структур по заданному полю (элементу).

Вариант 19.

Задание 1.  

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

Задание 2.   

Структура ПЕРСОНА: ФИО, возраст, пол, список увлечений.

- написать функцию создания бинарного файла и внесения в него новых записей, значения которых вводятся с клавиатуры;

- написать функцию вывода информации из файла на экран с шапкой;

- написать функцию дополнения уже существующего файла структур новыми структурами;

- написать функцию поиска структур с заданными признаками (например, по заданному диапазону значений элемента);

- написать функцию упорядочения файла структур по заданному полю (элементу).

Вариант 20.

Задание 1.  

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

Задание 2.   

Структура «Музыкальный товар»:                      

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

- порядковый номер в каталоге;

- название;

- исполнитель (фамилия, имя);

- время звучания;

- количество произведений;

- цена по каталогу.

- написать функцию создания бинарного файла и внесения в него новых записей, значения которых вводятся с клавиатуры;

- написать функцию вывода информации из файла на экран с шапкой;

- написать функцию дополнения уже существующего файла структур новыми структурами;

- написать функцию поиска структур с заданными признаками (например, по заданному диапазону значений элемента);

- написать функцию упорядочения файла структур по заданному полю (элементу).

Вариант 21.

Задание 1.  

Из ассортимента конфет, выпускаемых киевской кондитерской фабрикой, выбрать те, стоимость которых от 30 до 55 грн. за 1 кг. Указать срок их годности и номера магазинов, в которых они имеются в продаже. Информация хранится в виде массива.

Задание 2.   

Структура ЦЕХ: название, начальник, кол-во рабочих, перечень номенклатуры выпускаемых изделий.

- написать функцию создания бинарного файла и внесения в него новых записей, значения которых вводятся с клавиатуры;

- написать функцию вывода информации из файла на экран с шапкой;

- написать функцию дополнения уже существующего файла структур новыми структурами;

- написать функцию поиска структур с заданными признаками (например, по заданному диапазону значений элемента);

- написать функцию упорядочения файла структур по заданному полю (элементу).

Вариант 22.

Задание 1.  

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

Задание 2.  

Структура «Служащий»:                           

- фамилия, имя, отчество;

- занимаемая должность;

- год поступления на работу;

- образование;

- стаж работы:

- оклад.

- написать функцию создания бинарного файла и внесения в него новых записей, значения которых вводятся с клавиатуры;

- написать функцию вывода информации из файла на экран с шапкой;

- написать функцию дополнения уже существующего файла структур новыми структурами;

- написать функцию поиска структур с заданными признаками (например, по заданному диапазону значений элемента);

- написать функцию упорядочения файла структур по заданному полю (элементу).

Вариант 23.

Задание 1.  

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

Задание 2.   

Структура ТОВАР: название, артикул, стоимость, даты (изготовление, срок реализации).

- написать функцию создания бинарного ф



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.