Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Приведем пример использования объединения: составить программу, выполняющую требуемые операции для заданной фигуры.




Фундаментальные типы данных. Структуры

Демонстрационный пример

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

Б.Керниган, Ф.Плоджер

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

#include<iostream.h>

typedef struct r

{

int Re;//Вещественная часть.

int Im;//Мнимая часть.

}COMPLEX;

void main ()

{

COMPLEX a,b,c,*ps,sum(COMPLEX *, COMPLEX *);

int f;

cout<<"Первое число:\n вещественная часть:";

cin>>f; a.Re = f;//Доступ к элементам структуры через имя

//переменной типа “структура”.

cout<<" мнимая часть:";

cin>>f; a.Im = f;

cout<<"Второе число:\n вещественная часть:";

cin>>f; b.Re = f;

cout<<" мнимая часть:";

cin>>f; b.Im = f;

c = sum(&a,&b);

ps = &c;//Доступ к элементам структуры через указатель.

if (ps->Im>0)

cout<<"Сумма: "<< ps->Re<<"+"<<ps->Im<<"i";

else cout<<"Сумма: "<< ps->Re<<"+("<<ps->Im<<")i";

}

//Функция, складывающая два комплексных числа.

COMPLEX sum (COMPLEX *x, COMPLEX *y)

{ COMPLEX z;

z.Re = x->Re+y->Re; z.Im = x->Im+y->Im;

return z; }

1.2. Задачи для самостоятельного решения

На свете мало недостижимых вещей; будь

у нас больше настойчивости, мы могли бы

отыскать путь почти к любой цели.

Франсуа де Ларошфуко. Максимы, 243

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

1.2. Опишите, используя структуру, каталог книг в библиотеке. Составьте программу, выдающую список книг В.Пикуля, хранящихся в библиотеке.

1.3. Опишите, используя структуру, таблицу дат и событий русской истории. Составьте программу, выдающую список событий XIX века.

1.4. Опишите, используя структуру, таблицу дат и событий русской истории. Составьте программу, выдающую список дат XVIII века.

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

1.6. Опишите, используя структуру, записную книжку. Составьте программу, выдающую список друзей, кому в этом году исполняется 25 лет: фамилия и инициалы, год, месяц и дата рождения.

1.7. Опишите, используя структуру, школьный класс (фамилия и инициалы, дата, месяц и год рождения). Составьте программу, выдающую день рождения класса (среднее арифметическое дат и месяцев).

1.8. Опишите, используя структуру, выборы (фамилия кандидата и количество набранных голосов). Всего избирателей - 2000. Составить программу, определяющую, кто из делегатов прошел или необходимо проводить повторные выборы (должно быть набрано 1/3 голосов от общего количества).

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

1.10. После поступления в вуз о студентах собрана информация: фами­лия, нуждается ли в общежитии, стаж, работал ли учителем, что окончил, какой язык изучал. Составьте программу, определяющую: 1) сколько человек нуждаются в общежитии; 2) списки студентов, проработавших два и более года учителем; 3) списки окончивших пе­дучилище; 4) списки языковых групп.

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

1.12. При сдаче норм ГТО были получены результаты забега на 100 мет­ров и прыжков в длину. Задайте нормы ГТО по этим видам, определи­те списки учеников, не выполнивших нормативы, количество учени­ков, сдавших нормативы, а также списки трех лучших.

1.13. Опишите, используя структуру, вступительные экзамены. Абитури­енты сдавали три экзамена, для поступления необходимо набрать 12 баллов. Определите списки абитуриентов, зачисленных в институт, количество несдавших экзамены, списки абитуриентов, сдавших три экзамена на 5.

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

1.15. Опишите, используя структуру, данные на учеников (фамилия, улица, дом, квартира). Составьте программу, определяющую, сколько учеников живет на улице Гоголя, списки учеников, живущих в до­ме номер 45.

1.16. В библиотеке для каждого заказывающего книгу читателя заполня­ется карточка: фамилия, дата заказа, дата выдачи книги. Определи­те: 1) самый маленький срок, за который нашли книгу; 2) сколько заказов было не удовлетворено; 3) кто чаще всего берет книги; 4) кому выдали книги 15.09.02; 5) сколько человек заказывали книги 25.04.02.

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

1.18. Во время сессии несколько студентов не сдали экзамен (фамилия, предмет, группа, дата). Определите список пересдавших экзамены, сколько должников осталось, кто пересдал геометрию 18.01.02.

1.19. В библиотеке в читательском билете есть данные о человеке (фа­милия), записываются данные о книге (автор, название, дата, когда книгу брали читать). Определите, кто брал книгу И.Ефремова "Таис Афинс­кая" 15.05.02, сколько читателей брали книги А.С.Пушкина, кто и какие книги брал 21.04.02.

1.20. В экзаменационной ведомости можно выделить сведения о предмете (наименование, номер группы, дата сдачи экзамена), сведения о человеке (фамилия, номер зачетной книжки, оценка за экзамен). Определите, сколько человек не сдали информатику, выдать их списки: фамилия, номер группы. Определите, сколько групп сдавали экзамены 11.06.02 и какие, составьте списки студентов, сдавших информатику: фамилия, номер группы, оценка.

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

1.22. Опишите, используя структуру, расписание (предмет, препода­ватель, номер группы, день недели, часы, аудитория). Составьте программу, определяющую: 1) у каких групп совпадают аудитории на занятиях; 2) у кого из преподавателей есть наложения в расписа­нии; 3) какая нагрузка у заданного преподавателя; 4) список групп, у которых ведет занятия данный преподаватель; 5) сколько пар инфор­матики у группы 331, в какие дни и в какое время.

1.23. Опишите, используя структуру, товар (наименование товара, старая цена, новая цена). Составьте программу, определяющую, на какие товары повысились цены и на сколько процентов.

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

1.25. Приняв способ изображения рационального числа в виде структуры с двумя полями целого типа, написать программу, позволяющую: 1) определить, есть ли среди 50 рациональных чисел равные; 2) вычислить наибольшее из данных рациональных чисел.

1.26. При поступлении на музыкально-педагогический факультет на аби­туриентов собираются сведения: фамилия, музыкальный инструмент. Для поступления необходимо сдать экзамен по специальности. Составьте списки для данного экзамена в зависимости от специальности.

1.27. В школе было три 9 класса, в августе каждый классный руководи­тель имел сведения о своих учениках: фамилия, куда поступал, пос­тупил или нет. Определите, сколько учеников хотели пойти в 10 класс, кто хотел поступать в училище и техникум, кто поступил в училище или техникум, сколько учеников будет учиться в 10 классе, сколько необходимо создать 10 классов и по сколько человек.

1.28. Заполнена анкета на учеников: фамилия, где работают родители. Определите: сколько родителей работают на заводе КМЗ, у кого родители работают в драматическом театре или в филармонии.

1.29. Выберите самую высокую горную вершину из заданного списка.

1.30. Из выбранных двух карт B и K определите бьет одна другую или нет, если А - козырная масть.

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

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

1.33. На олимпиаде по информатике на школьников заполнялись анкеты: фамилия, номер школы, класс, занятое место. Напечатайте: 1) спис­ки школ, занявших призовые места; 2) какая из школ заняла больше всех призовых мест; 3) списки учеников, занявших первое место, укажите их класс.

1.34. Опишите, используя структуру, время (часы, минуты, секунды). Определите, какое время t1 или t2 меньше. Вычислите интервал времени, прошедший от меньшего до большего времени.

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

1.36. Даны два рациональных числа, опишите их, используя структуру записи: числитель, знаменатель. Приведите их к несократимому ви­ду, найдите их сумму.

1.37. Дана дата (число, месяц, год и день недели). Определите правильность заданной даты; какой день недели приходится на последний день данного ме­сяца; сколько дней прошло от 1-го января 1-го года нашей эры; оп­ределите день недели, приходящийся на заданную дату, если 1-е января 1-го года нашей эры было понедельником.

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

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

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

1.41. Опишите, используя структуру, записную книжку (фамилия, номер телефона). Составьте программу, определяющую: 1) есть ли в запис­ной книжке сведения о знакомом с фамилией на букву "Ф", если есть, то напечатать его фамилию и телефон; 2) есть ли в записной книжке сведения о знакомом с телефоном 43-58-35, если есть, то напечатать его фамилию.

1.42. Опишите, используя структуру, камеры хранения (номер, индекс камеры, заданный буквой). Составьте программу, определяющую, есть ли среди камер камера с номером 99. Упорядочите все камеры по воз­растанию номеров.

1.43. В деканате хранится информация о зимней сессии на 1 курсе (фа­милия, номер группы, оценка по геометрии, оценка по алгебре, оценка по информатике). Составьте программу, печатающую фамилии студентов, имеющих долг хотя бы по одному предмету, ка­чество успеваемости, то есть процент студентов, сдавших экзамены на 4 и 5, название предмета, который был сдан лучше всего, номера групп в порядке убывания средней успеваемости их студентов.

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

1.45. Дан список класса (фамилия, имя). Напечатайте в алфавитном по­рядке фамилии учеников, через пробел напишите имя каждого.

1.46. Багаж пассажира характеризуется количеством вещей и общим весом. Найдите: 1) багаж, средний вес одной вещи в котором отли­чается не более, чем на 0,3 кг от общего среднего веса одной вещи; 2) число пассажиров, имеющих более двух вещей, и число пасса­жиров, количество вещей которых превосходит среднее число вещей; 3) выясните, имеется ли пассажир, багаж которого состоит из одной вещи весом менее 30 кг; 4) упорядочите сведения о багаже по не­возрастанию веса; 5) напечатайте сведения о багаже, общий вес ве­щей в котором меньше, чем 10 кг.

1.47. В библиотеке хранятся сведения о книгах (фамилия автора, наз­вание книги и год издания). Найдите названия книг С.Дангулова, изданных с 1960 года. Определите, имеется ли книга с названием "Информатика", если да, то сообщите сведения об этих книгах.

1.48. В учреждении хранятся записи о сотрудниках: фамилия, инициалы, номер телефона. Найдите номер телефона сотрудника по его фамилии и инициалам.

1.49. Дан перечень дат. Определите год с наименьшим номером, все ве­сенние даты, самую позднюю дату.

1.50. В сводке об экспортируемых товарах указывается: наименование товара, страна, импортирующая товар, объем поставляемой партии в штуках. Напечатайте списки стран, в которые экспортируется данный товар, и общий объем его экспорта.

1.51. В счете указано: название игрушки, стоимость в рублях, возрастные границы. Получите следующие сведения: 1) название иг­рушек, цена которых не превышает 80 р. и которые подходят детям до пяти лет; 2) цену самого дорогого конструктора; 3) названия наиболее дорогих игрушек, цена которых отличается от цены самой дорогой игрушки не более, чем на 5 р.; 4) название игрушек, ко­торые подходят как детям 4 лет, так и детям 10 лет; 5) можно ли подобрать игрушку, любую, кроме мяча, подходящую ребенку 3 лет, и дополнительно мяч так, чтобы стоимость игрушек не превосходила 150 р.

1.52. Хранятся сведения о лесе: вид дерева, общая численность, чис­ленность здоровых деревьев. Составьте программу вычисления: 1) суммарного числа деревьев на контрольном участке; 2) суммарного числа здоровых деревьев; 3) относительную численность (в процентах) больных деревьев; 4) относительную численность (в процентах) различных видов, в том числе больных (в процентах) для каждого вида.

1.53. Экспертные оценки продукции имеют 5 пунктов. На комиссию представлены 5 видов продукции, показатели которых даны в табли­це. Определите лучшее изделие по сумме экспертных оценок (Ti = Ai + Bi + Ci + Di + Ei). Напечатайте список продукции в порядке от лучших показателей к худшим.

 

Изделие A B C D E
Уран          
Плутон          
Нептун          
Марс          
Юпитер          

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

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

 

  1. Фундаментальные типы данных. Объединения

Демонстрационный пример

Всякой истине суждено одно мгновение торжества между бесконечностью, когда ее считают неверной, и бесконечностью, когда ее считают тривиальной.

А.Пуанкаре

Приведем пример использования объединения: составить программу, выполняющую требуемые операции для заданной фигуры.

#include <iostream.h>

#define CIRCLE 1

#define RECT 2

#define TRIANGLE 3

struct figure

{ int area, perimeter; //Общие компоненты.

int type; // Метка активного компонента.

union

{ int radius; // Окружность.

int a[2]; //Прямоугольник.

int b[3]; // Треугольник.

} geom_fig;

};

struct figure fig;

viod main ()

{

cout<<"Введите значение метки активного компонента... ";

cin>>fig.type;

switch (fig.type)

{

case CIRCLE:

cout<<"Введите радиус... ";

cin>>fig.geom_fig.radius;

cout<<"Радиус: "<<fig.geom_fig.radius; break;

case RECT:

cout<<"Введите стороны прямоугольника... ";

cin>>fig.geom_fig.a[0]>>fig.geom_fig.a[1];

fig.area = fig.geom_fig.a[0]*fig.geom_fig.a[1];

cout<<"Площадь: "<<fig.area;break;

case TRIANGLE:

cout<<"Введите стороны треугольника... ";

cin>>fig.geom_fig.b[0]>>fig.geom_fig.b[1];

cin>>fig.geom_fig.b[2];

fig.perimeter=fig.geom_fig.b[0]+fig.geom_fig.b[1]+

fig.geom_fig.b[2];

cout<<"Периметр: "<<fig.perimeter; break;

default: cout<<"Ошибка!";

}

}

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...