![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Лабораторная работа № 10. Типы данных, определяемые пользователем. Структуры и объединенияСодержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
Цель и порядок работы Цель работы – ознакомиться с типами данных, определяемыми пользователем и их применением в процессе программирования.
Порядок выполнения работы: - ознакомиться с описанием лабораторной работы; - получить задание у преподавателя, согласно своему варианту; - написать программу и отладить ее на ЭВМ; - оформить отчет. Контрольные вопросы 1. Как объявить пользовательский тип данных? 2. Что такое перечисления? 3. Как осуществляется описание структуры? 4. Что такое поле структуры? 5. Как обратится к элементу структуры? 6. К каким типам данных относятся объединения и структуры? 7. Как проинициализировать переменную структурного типа? 8. Для чего применяются структуры? 9. Как объявляется объединение? 10. Как используются объединения? 11. Как обратится к элементу объединения? 12. Что такое битовые поля? 13. Как обратится к элементу битового поля? Варианты заданий Вариант 1. Описать структуру с именем STUDENT, содержащую поля: - фамилия и инициалы; - номер группы; - успеваемость (массив из пяти элементов). Написать программу, выполняющую следующие действия: - ввод с клавиатуры данных в массив, состоящий из 8 структур типа STUDENT; - вывод на дисплей фамилий и номеров групп для всех студентов, включенных в массив, если средний балл студента больше 4.0; - если таких студентов нет, вывести соответствующее сообщение.
Вариант 2. Описать структуру с именем STUDENT, содержащую поля: - фамилия и инициалы; - номер группы; - успеваемость (массив из пяти элементов). Написать программу, выполняющую следующие действия: - ввод с клавиатуры данных в массив, состоящий из 6 структур типа STUDENT; - вывод на дисплей фамилий и номеров групп для всех студентов, включенных в массив, если они имеют оценки 4 и 5; - если таких студентов нет, вывести соответствующее сообщение.
Вариант 3. Описать структуру с именем STUDENT, содержащую поля: - фамилия и инициалы; - номер группы; - успеваемость (массив из пяти элементов). Написать программу, выполняющую следующие действия: - ввод с клавиатуры данных в массив, состоящий из 9 структур типа STUDENT; - вывод на дисплей фамилий и номеров групп для всех студентов, включенных в массив, имеющих хотя бы одну оценку 2;
- если таких студентов нет, вывести соответствующее сообщение.
Вариант 4. Описать структуру с именем AEROFLOT, содержащую поля: - название пункта назначения рейса; - номер рейса; - тип самолета. Написать программу, выполняющую следующие действия: - ввод с клавиатуры данных в массив, состоящий из 9 элементов типа AEROFLOT; - вывод на экран информации о рейсе, номер которого введен с клавиатуры; - если таких рейсов нет, вывести соответствующее сообщение.
Вариант 5. Описать структуру с именем AEROFLOT, содержащую поля: - название пункта назначения рейса; - номер рейса; - тип самолета. Написать программу, выполняющую следующие действия: - ввод с клавиатуры данных в массив, состоящий из 7 элементов типа AEROFLOT; - вывод на экран пунктов назначения и номеров рейсов, обслуживаемых самолетом, тип которого введен с клавиатуры; - если таких рейсов нет, вывести соответствующее сообщение.
Вариант 6. Описать структуру с именем WORKER, содержащую поля: - фамилия и инициалы работника; - название занимаемой должности; - зарплату; - год поступления на работу. Написать программу, выполняющую следующие действия: - ввод с клавиатуры данных в массив, состоящий из 5 структур типа WORKER; - вывод на дисплей фамилий работников, чей стаж работы в организации превышает значение, введенное с клавиатуры; - если таких работников нет, вывести соответствующее сообщение.
Вариант 7. Описать структуру с именем TRAIN, содержащую поля: - название пункта назначения; - номер поезда; - время отправления. Написать программу, выполняющую следующие действия: - ввод с клавиатуры данных в массив, состоящий из 6 структур типа TRAIN; - вывод на экран информации о поездах, отправляющихся после введенного с клавиатуры времени; - если таких поездов нет, вывести соответствующее сообщение.
Вариант 8. Описать структуру с именем TRAIN, содержащую поля: - название пункта назначения; - номер поезда; - время отправления. Написать программу, выполняющую следующие действия: - ввод с клавиатуры данных в массив, состоящий из 9 структур типа TRAIN; - вывод на экран информации о пункте назначения, в который отправляется поезд, номер которого введен с клавиатуры;
- если таких поездов нет, вывести соответствующее сообщение.
Вариант 9. Описать структуру с именем MARSH, содержащую поля: - название начального пункта маршрута; - название конечного пункта маршрута; - номер маршрута. Написать программу, выполняющую следующие действия: - ввод с клавиатуры данных в массив, состоящий из 7 структур типа MARSH; - вывод на экран информации о маршруте, номер которого введен с клавиатуры; - если таких студентов нет, вывести соответствующее сообщение.
Вариант 10. Описать структуру с именем NOTE, содержащую поля: - фамилия и имя; - номер телефона; - дата рождения (массив из трех чисел). Написать программу, выполняющую следующие действия: - ввод с клавиатуры данных в массив, состоящий из 6 структур типа NOTE; - вывод на экран информации о человеке, номер телефона которого введен с клавиатуры; - если таких людей нет, вывести соответствующее сообщение.
Вариант 11. Описать структуру с именем NOTE, содержащую поля: - фамилия и имя; - номер телефона; - дата рождения (массив из трех чисел). Написать программу, выполняющую следующие действия: - ввод с клавиатуры данных в массив, состоящий из 9 структур типа NOTE; - вывод на экран информации о людях, чьи дни рождения приходятся на месяц, значение которого введено с клавиатуры; - если таких людей нет, вывести соответствующее сообщение.
Вариант 12. Описать структуру с именем NOTE, содержащую поля: - фамилия и имя; - номер телефона; - дата рождения (массив из трех чисел). Написать программу, выполняющую следующие действия: - ввод с клавиатуры данных в массив, состоящий из 9 структур типа NOTE; - вывод на экран информации о людях, чьи дни рождения приходятся на год, значение которого введено с клавиатуры; - если таких людей нет, вывести соответствующее сообщение.
Вариант 13. Описать структуру с именем NOTE, содержащую поля: - фамилия и имя; - номер телефона; - дата рождения (массив из трех чисел). Написать программу, выполняющую следующие действия: - ввод с клавиатуры данных в массив, состоящий из 9 структур типа NOTE; - вывод на экран информации о людях, чьи дни рождения приходятся на день, значение которого введено с клавиатуры; - если таких людей нет, вывести соответствующее сообщение.
Вариант 14. Описать структуру с именем NOTE, содержащую поля: - фамилия и имя; - номер телефона; - дата рождения (массив из трех чисел). Написать программу, выполняющую следующие действия: - ввод с клавиатуры данных в массив, состоящий из 5 структур типа NOTE; - вывод на экран информации о людях, чьи дни рождения совпадают с введенными с клавиатуры; - если таких людей нет, вывести соответствующее сообщение.
Вариант 15. Описать структуру с именем ORDER, содержащую поля: - расчетный счет плательщика; - расчетный счет получателя; - перечисляемая сумма в руб. Написать программу, выполняющую следующие действия: - ввод с клавиатуры данных в массив, состоящий из 5 структур типа ZNAK; - вывод на экран информации о сумме, снятой с расчетного счета плательщика, введенного с клавиатуры; - если таких людей нет, вывести соответствующее сообщение. Содержание отчета 1. Титульный лист. 2. Наименование и цель работы. 3. Краткое теоретическое описание. 4. Задание на лабораторную работу. 5. Схема алгоритма. 6. Листинг программы. 7. Результаты выполнения программы.
7. Работа со строками в C++. Потоки ввода-вывода. Файловые операции Краткая теория 1) Строки в C++ Ввод-вывод строк const int len_str = 100; char msg[len_str] = "Новая строка"; Если строка при определении инициализируется, ее размерность можно опускать (компилятор сам выделит память, достаточную для размещения всех символов строки и завершающего нуля):
char msg[ ] = "Новая строка"; //13 символов Для размещения строки в динамической памяти надо описать указатель на char, а затем выделить память с помощью new или mallос (первый способ предпочтительнее).
char *p = new char[len_str];
Для ввода-вывода строк используются как уже известные нам объекты cin и cout, так и функции, унаследованные из библиотеки С. Рассмотрим сначала первый способ:
#include <iostream> using namespace std; int main() { const int n = 80; char s[n]; cin >> s; cout << s << endl; return 0; }
При вводе строки из нескольких слов, программа выведет только первое слово. Это связано с тем, что ввод выполняется до первого пробельного символа (то есть пробела, знака табуляции или символа перевода строки '\n') Если требуется ввести строку, состоящую из нескольких слов, в одну строковую переменную, используются методы getline или get класса istream, объектом которого является cin. #include <iostream> using namespace std; int main() { const int n = 80; char s[n]; cin.getline(s, n); cout << s << endl; return 0; } Если в программе требуется ввести несколько строк, метод getl1nе удобно использовать в заголовке цикла, например: #include <iostream> using namespace std; int main() { const int n = 80; char s[n]; while (cin.getline(s, n)) { cout << s << endl; }; return 0; }
Рассмотрим теперь способы ввода-вывода строк, перекочевавшие в С++ из языка С. Во-первых, можно использовать для ввода строки известную нам функцию scanf, а для вывода – printf, задав спецификацию формата %s. Ввод будет выполняться так же, как и для классов ввода-вывода – до первого пробельного символа. Чтобы ввести строку, состоящую из нескольких слов, используется спецификация %c (символы) с указанием максимального количества вводимых символов, например:
scanf("%10c", s);
Количество символов может быть только целой константой. При выводе можно задать перед спецификацией %s количество позиций, отводимых под строку: printf("%10s", s);
Функциями семейства printf удобнее пользоваться в том случае, если в одном операторе требуется ввести или вывести данные различных типов. Если же работа выполняется только со строками, проще применять специальные функции для ввода-вывода строк gets и puts.
Операции со строками Для строк не определена операция присваивания, поскольку строка является не основным типом данных, а массивом. Присваивание выполняется с помощью функций стандартной библиотеки или посимвольно «вручную» (что менее предпочтительно, так как чревато ошибками). Например, чтобы присвоить строке p строку a, можно воспользоваться функциями strcpy или strncpy, а для определения длинны строки – strlen.
#include <iostream> #include <string.h> using namespace std; int main() { char a[100] = "Working with a strings"; size_t m = strlen(a) + 1; //добавим 1 для учета нуль-символа char *p = new char [m]; strcpy(p, a); strncpy(p, a, strlen(a) + 1); return 0; }
Для использования этих функций к программе следует подключить заголовочный файл <string.h>. Для преобразования строки в целое число используется функция atoi(str). Если преобразование не удалось, возвращает 0. Аналогичные функции преобразования строки в длинное целое число (long) и в вещественное число с двойной точностью (double) называются atol и atof соответственно.
//Пример применения функций преобразования #include <iostream> #include <string.h> using namespace std;
int main() { char a[] = "15) Кол-во - 249 шт. Цена - 499.99 руб."; int num; long quantity; double price; num = atoi(a); quantity = atol(&a[12]);//12 - смещение начала кол-ва price = atof(&a[27]); //27 - смещение начала цены cout << num << ' ' << quantity << ' ' << price; return 0; }
Замечание. При переводе вещественных чисел разделитель целой и дробной части зависит от настроек локализации. По умолчанию используется символ точка. При изменении локализации (функция setlocale(LC_ALL, "Russian")), разделитель меняется на принятый в России, т.е. символ запятая.
|
||||||||
Последнее изменение этой страницы: 2016-12-11; просмотров: 457; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 52.14.124.154 (0.013 с.) |