- •051001 Профессиональное обучение (по отраслям)
- •230115 Программирование в компьютерных системах
- •1 Общие положения
- •2 Технология выполнения и отчетность по самостоятельной работе
- •Содержание
- •Тема № 2 Программы разветвленной структуры……..……………………………..…….….…8 Тема № 3 Программы разветвленной структуры……..………………………………….….…10
- •Тема №1 Программирование линейной структуры
- •Тема №2 Условный оператор if
- •Тема №3 Множественный выбор
- •Тема №4 Программы циклической структуры
- •4.1. Операторы циклов
- •4.2 Цикл с параметром
- •4.3 Циклы с неизвестным количеством повторений
- •Тема №5 Обработка одномерных массивов
- •Тема №6 Работа с символьными данными
- •Тема № 7 Функции
- •Тема № 8 Структуры
- •Тема № 9 Программные средства для работы с файлами
Тема № 8 Структуры
ОСНОВНЫЕ СВЕДЕНИЯ
Структура – это фиксированное число элементов одного или нескольких типов. Т.е. в отличие от массивов, в которых содержатся элементы одного типа, в структурах могут содержаться элементы как одного, так и разных типов. Элементами структуры могут быть базовые типы, массивы, указатели, структуры и т.д. Элементы структуры вместе с их описанием называются полями. Над полями можно выполнять действия, допустимые для данных этого типа.
Все структуры должны быть описаны до использования. Все идентификаторы полей в структуре должны быть различными.
Например, структуру Воок можно описать следующим образом:
struct card {char аuthor [15]; char title[20]; int year ; float cena;} Book;
или struct card { char аuthor [15]; char title[20]; int year ; float cena;};
stuct card Book;
Тип структуры (например, card) вводит только шаблон и с его именем не связан никакой конкретный объект. Объект (например, структура Book) должен быть также объявлен. Обращение к полю структуры выполняется с помощью составного имени, которое состоит из имени_структуры . имени_поля. Например, присвоить значения элементам записи Author и Title можно так: Book.author= “Довгаль С.И.”; Book.title=”Турбо Паскаль V 7.0”;
Ввод цены книги с клавиатуры : scanf (“%f”, &Book.cena);
Можно создавать массив структур: Struct card bibl[100];
Обращение к полю элемента массива: bibl[i].title;
Пример: Дана информация о 10 товарах: название, цена, количество. Вычислить общую стоимость товара, название которого вводится с клавиатуры.
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define n 10
main()
{
int i,k; float sum; //k-количество искомых товаров, sum- их общая стоимость.
struct tov {char name[10]; float c; int kol;} t; //Объявление структуры t
struct tov mag[n]; //объявление массива структур mag[n]
char nazv[10]; //Наименование искомого товара
clrscr();
printf(“\n Введите информацию о товарах \n“);
for (i=0;i<n;i++)
{ printf("\n наименование , цена, количество : ");
scanf("%s%f%d",&t.name,&t.c,&t.kol);//Заполнение информацией структуры t
mag[i]=t; //Присвоение i-му элементу массива структуры t целиком
}
printf("\n введите искомый товар: ");
scanf("%s",&nazv);
for (i=0,sum=0,k=0;i<n;i++)
if (strcmp(mag[i].name,nazv)==0)
{ sum+=mag[i].c*mag[i].kol;
k++;
}
printf("Товаров %s %d, их стоимость %5.2f ",nazv,k,sum);
getch();
}
СПИСОК ЗАДАЧ
Сформировать переменную типа запись, в которой расположены данные о каждом отдельном ученике в следующем порядке: имя (15 символов), фамилия (15 символов), год обучения (целое число), буква (символ). Требуется перенести эти данные в другую переменную выводя первую букву имени и фамилию ученика:
И. Петров
П. Иванов
и т. д.
Сформировать переменную типа запись, в которой расположены данные о каждом отдельном ученике в следующем порядке: имя (15 символов), фамилия (15 символов), год обучения (целое число), буква (символ).
а) Собрать в сведения об учениках девятых классов школы,
б) Выяснить, на сколько человек в восьмых классах больше, чем в девятых.
Багаж пассажира характеризуется количеством вещей и общим весом вещей. Сформировать переменную Bagaj, содержащую сведения о багаже нескольких пассажиров. Сведения о багаже каждого пассажира представляют собой запись с двумя полями: одно поле целого типа (количество вещей) и одно -действительное (вес в килограммах). Найти багаж, средний вес одной вещи в котором отличается не более, чем на 0,3 кг от общего среднего веса одной вещи.
Упорядочить сведения о багаже, записанные в переменной bagaje(см. предыдущую задачу) по невозрастанию веса багажа. Предполагается, что число пассажиров, зарегистрировавших багаж, известно заранее и равно п (некоторая константа), при этом п – не слишком велико. Указание. Перенести сведения о багаже из переменной багаж в массив B1,...Bn, затем упорядочить этот массив, используя то, что для переменных х, у одного и того же комбинированного типа можно использовать оператор присваивания х:=у После этого переписать элементы массива BI, ..., Bn в переменную Bagaje.
Требуется удалить из данной переменной Bagaje сведения о багаже, общий вес вещей в котором меньше, чем 10 кг. Использовать вспомогательную переменную F.
Переписать сведения о багаже из переменной Bagaj в переменную Bag. В переменной Bag сведения о багаже каждого пассажира представляются массивом из двух целых чисел - числа вещей и общего веса вещей, выраженного в граммах. Составить также программу обратного преобразования: переписи сведений о багаже из переменной Bag в переменную Bagaj.
Сформирована переменная bibl, содержащий сведения о книгах. Сведения о каждой из книг – это фамилия автора, название и год издания. Найти названия книг данного автора, изданных с 1960 года
Дана переменная Т, которая содержит номера телефонов сотрудников учреждения: Указывается фамилия сотрудника, его инициалы и номер телефона. Найти номер телефона сотрудника по его фамилии и инициалам.
Сформирована переменная типа запись, содержащая различные даты. Каждая дата - это число, месяц и год. Найти:
а) год с наименьшим номером.
б) все весенние даты.
в) самую позднюю дату.
Сформировать переменную Tovar, содержащую сведения об экспортируемых товарах: Указывается наименование товара, страна импортирующая товар, и объем поставляемой партии в штуках. Составить список стран, в которые экспортируется данный товар, и общий объем его экспорта.
Сформирована переменная Assortim, содержащая сведения об игрушках: указано название игрушки, ее стоимость в рублях, и возрастные границы. Получить сведения о названии игрушек цена которых не превышает 4 руб., и которые подходят детям 5 лет.
Сформирована переменная Assortim, содержащая сведения об игрушках: указано название игрушки, ее стоимость в рублях, и возрастные границы. Получить следующие сведения о цене самого дорогого конструктора.
Сформирована переменная Assortim, содержащая сведения об игрушках: указано название игрушки, ее стоимость в рублях, и возрастные границы. Получить название наиболее дорогих игрушек. (цена которых отличается не более чем на 1 руб. от самой дорогой.)
Сформирована переменная Assortim, содержащая сведения об игрушках: указано название игрушки, ее стоимость в рублях, и возрастные границы. Получить название игрушек которые подходят как детям 4 лет так и детям 10 лет.
Сформирована переменная Assortim, содержащая сведения об игрушках: указано название игрушки, ее стоимость в рублях, и возрастные границы. Подобрать игрушку, любую кроме мяча, подходящую ребенку 3 лет, и дополнительно мяч, так, чтобы суммарная стоимость игрушек не превосходила 5 руб.?
Сформирована переменная bibl, содержащий сведения о книгах. Сведения о каждой из книг – это фамилия автора, название и год издания. Определить имеется ли книга с названием "Информатика". Если да, то сообщить фамилию автора и год издания. Если таких книг несколько, то сообщить сведения обо всех этих книгах.
Багаж пассажира характеризуется количеством вещей и общим весом вещей. Сформировать переменную Bagaj, содержащую сведения о багаже нескольких пассажиров. Сведения о багаже каждого пассажира представляют собой запись с двумя полями: одно поле целого типа (количество вещей) и одно -действительное (вес в килограммах). Выяснить, имеется ли пассажир, багаж которого состоит из одной вещи весом менее 30 кг.
Багаж пассажира характеризуется количеством вещей и общим весом вещей. Сформировать переменную Bagaj, содержащую сведения о багаже нескольких пассажиров. Сведения о багаже каждого пассажира представляют собой запись с двумя полями: одно поле целого типа (количество вещей) и одно -действительное (вес в килограммах). Найти число пассажиров, имеющих более двух вещей и число пассажиров, количество вещей которых превосходит среднее число вещей.
Составить список учебной группы, включающей N человек. Для каждого учащегося указать дату рождения, год поступления в техникум, курс, группу, оценки каждого года обучения. Информацию о каждом учащемся оформить в программе в виде записи. Совокупность записей объединить в массив. Составить программу, которая обеспечивает ввод полученной информации, распечатку ее в виде таблицы, а также распечатать анкетные данные студентов отличников.
Составить список учебной группы, включающей N человек. Для каждого учащегося указать дату рождения, год поступления в техникум, курс, группу, оценки каждого года обучения. Информацию о каждом учащемся оформить в программе в виде записи. Совокупность записей объединить в массив. Составить программу, которая обеспечивает ввод полученной информации, распечатку ее в виде таблицы, а также распечатать анкетные данные студентов, получивших одну оценку 3 за все время обучения.
Составьте прайс-лист аптеки "Эксон", включающий в себя наименования товара, страну-производитель, его цену, его состав, рекомендации врача. Информацию о каждом виде товара оформите в программе в виде записи. Совокупность записей объедините в массив. Составьте программу, которая обеспечивает ввод полученной информации, распечатку ее в виде таблицы. Выведите на экран информацию о товаре в зависимости от запроса покупателя.
Составьте прайс-лист магазина "Обувь", включающий в себя наименования товара, страну-производитель, его цену, материал изготовления, размер, рекомендации для использования. Информацию о каждом виде товара оформите в программе в виде записи. Совокупность записей объедините в массив. Составьте программу, которая обеспечивает ввод полученной информации, распечатку ее в виде таблицы. Выведите на экран информацию о товаре в зависимости от запроса покупателя.
Составьте банк данных кинологов, включающий в себя фамилию и имя владельца собаки, кличку собаки, породу собаки, день и год рождения собаки, наличие родословной, наличие медалей (и другое). Информацию о каждом владельце оформите в программе в виде записи. Совокупность записей объедините в массив. Составьте программу, которая обеспечивает ввод полученной информации, распечатку ее в виде таблицы. Выведите на экран информацию в зависимости от Вашего запроса.
Составьте банк данных районного отдела милиции, включающий в себя фамилию, имя и отчество нарушителя, дату рождения, наличие клички, мера наказания, срок заключения (и другое). Информацию о каждом нарушителе оформите в программе в виде записи. Совокупность записей объедините в массив. Составьте программу, которая обеспечивает ввод полученной информации, распечатку ее в виде таблицы. Выведите на экран информацию в зависимости от Вашего запроса.
Составьте прайс-лист кондитерского отдела магазина "Молодежный", включающий в себя наименования товара, марку предприятия-производителя, страну-производитель, его цену, количество единиц товара на складе. Информацию о каждом виде товара оформите в программе в виде записи. Совокупность записей объедините в массив. Составьте программу, которая обеспечивает ввод полученной информации, распечатку ее в виде таблицы. Выведите на экран информацию о товаре в зависимости от запроса покупателя.
