Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 451; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.217.183.10 (0.009 с.) |