Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » 8. Пользовательские типы данных (enum, struct, union). Битовые операторы.

8. Пользовательские типы данных (enum, struct, union). Битовые операторы. (Семинарские занятия)

PDF-файл 8. Пользовательские типы данных (enum, struct, union). Битовые операторы. (Семинарские занятия) Информатика (36964): Семинары - 1 семестр8. Пользовательские типы данных (enum, struct, union). Битовые операторы. (Семинарские занятия) - PDF (36964) - СтудИзба2019-04-28СтудИзба

Описание файла

Файл "8. Пользовательские типы данных (enum, struct, union). Битовые операторы." внутри архива находится в папке "Семинарские занятия". PDF-файл из архива "Семинарские занятия", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст из PDF

Кафедра математического моделирования и информатики: первый курс, первый семестрЯзык программирования СиБикулов Д.А., Иваницкая Н.В., Иванов А.П.Семинар 8. Пользовательские типы данных (enum, struct,union). Побитовые операторы.1 СтруктурыСтруктура — это объединение нескольких переменных под одним именем. Приобъявлении структуры можно задать тип структуры, который далее будет использоватьсяпри создании экземпляров структуры.

Объявляется структура с помощью ключевого словаstruct. Доступ к полям (т.е. членам) структуры осуществляется с помощью оператора «.»(точка).Пример. Создание структуры с типом MyStruct, содержащей поля a, word, name и number:#include <stdio.h>struct MyStruct {int a;char *word;char name[16];double number;};int main(){MyStruct mst;// MyStruct – имя типаStruct MyStruct mst2; // можно и такmst.a = 10;mst.word = "Hello!";strcpy(mst.name,"Alexey");mst.number = 4.8;printf("%d %s %lf\n", mst.a, mst.word, mst.number);return 0;}Можно сразу же после объявления структуры создать несколько экземпляров этого типа:struct Student {int age, group;char name[32], surname[32];} student_pete, student_anna;Размер структуры равен сумме размеров полей. Размер пустой структуры равен одномубайту по стандарту, иначе возникли бы проблемы с адресацией памяти.2 ПеречисленияОбъявление перечислений очень похоже на объявление структур. Отличие состоит виспользовании ключевого слова enum.

Перечисления представляют собой наборименованных целочисленных констант. Эти константы задают все возможные значенияпеременной объявленного типа.11.10.20161Кафедра математического моделирования и информатики: первый курс, первый семестрПример.#include <stdio.h>enum WeekDays {LunaeDies,MartisDies,MercuriiDies,JovisDies,VenerisDies,SaturniDies,SolisDies};int main(){WeekDays wd = VenerisDies;printf("%d\n", wd);return 0;}В результате работы программы будет выведена цифра 4. Переменная wd имеет типWeekDays и может принимать только значения, явно указанные в перечислении. Если неуказано ничего дополнительно, то константы в перечислении нумеруются, начиная с нуля.Если для какой-либо константы указано явное значение, то нумерация продолжаетсядальше с этого значения, указывать значение можно для константы с любой позицией:#include <stdio.h>enum WeekDays {LunaeDies = 10,MartisDies,MercuriiDies,JovisDies,VenerisDies,SaturniDies = 20,SolisDies};int main(){WeekDays wd[] = { LunaeDies, MartisDies, MercuriiDies, JovisDies,VenerisDies, SaturniDies, SolisDies };for( int i=0; i <= sizeof(wd)/sizeof(wd[0]); i++ )printf("%d ", wd[i]);printf("\n");return 0;}В результате работы программы будут выведены числа:10 11 12 13 14 20 2111.10.20162Кафедра математического моделирования и информатики: первый курс, первый семестр3 ОбъединенияОбъединения хранят значения всех своих полей в одной области памяти.

В случае, еслиполя имеет разную длину, то выделяется память под наибольшее поле. Объединениянужны для экономия памяти в случае, если в разные неперекрывающиеся моментывремени требуется хранить массивы разных типов данных, имеющих одинаковую длину.Пример. Объединения с полями различных типов:#include <stdio.h>union IntoFloat {float f;int i;};int main(){IntoFloat uif;uif.i = 1000;printf("%d %f\n", uif.i, uif.f);uif.f = 10.5;printf("%d %f\n", uif.i, uif.f);return 0;}В результате работы программы будет выведено:1000 0.000000(второе значение – абсолютно случайный мусор)1093140480 10.50000(первое значение – абсолютно случайный мусор)4 Побитовые операторыПобитовые операции языка Си представлены пятью бинарными и одной унарнойоперацией.

К побитовым операциям относятся:бинарная операция побитовое И: « & » (знак амперсанд);бинарная операция побитовое ИЛИ: « | » (знак вертикальная черта);бинарная операция побитовое ИСКЛЮЧАЮЩЕЕ ИЛИ: « ^ » (знак карет);унарная операция побитовое отрицание, НЕ: « ~ » (знак тильды);бинарная операция побитовый СДВИГ ВПРАВО: « >> » (два знака больше);бинарная операция побитовый СДВИГ ВЛЕВО: « << » (два знака меньше).Обратите внимание, формально операторы сдвига совпадают с операторами ввода-выводаязыка Си++, которые использовались с самого начала этого курса.

Но так как ониприменяются к другому типу данных левого операнда (к целому числу, а не к потокуввода-вывода), то смысл их действия принципиально другой: они осуществляютпобитовый сдвиг целого значения, указанного в первом операнде, вправо или влево науказанное во втором операнде целое число битов.11.10.20163Кафедра математического моделирования и информатики: первый курс, первый семестрТаблица истинности для бинарных побитовых операций:первый операнд второй операндоперация& («И») | («ИЛИ») ^ «ИСКЛЮЧАЮЩЕЕ ИЛИ»00000100110101111110Пример.

Побитовые операции:unsigned char a = 14;unsigned char b = 42;// a=00001110// b=00101010(14)(42)unsigned char c = ~a;c = a & b;c = a | b;c = a ^ b;////////c=11110001 (241)c=00001010 (10)c=00101110 (46)c=00100100 (36)////////a=00001011b=00101100b=00000000b=00000101Пример. Операции сдвига:unsignedb = a <<b = a <<b = a >>char a = 11, b;2;10;1;(11)(44)(0)(5)Все перечисленные операторы имеют дополнительный оператор «выполнить-присвоить»,например:unsigned char a = 10, b = 8;a &= b;a >>= 2;// a=00001010// a=00001000// a=00000010(10), b=00001000(8), b=00001000(2)(8)(8)Типовое задание: реализовать программу, обрабатывающую структуры данных, данныедля работы считать из файла, результат – записать в файл. Например: считать из файламассив записей о студентах (ФИО, год рождения, номер группы), отсортировать записи погоду рождения и записать результат в другой файл.11.10.20164Кафедра математического моделирования и информатики: первый курс, первый семестр1.

ВариантСоздать тип данных рациональные числа (числитель, знаменатель). Прочитать из файламассив рациональных чисел, отсортировать его с помощью библиотечной функцииqsort(). Для использования функции qsort() создать свою функцию сравнения двухрациональных чисел.Результат напечатать на экране специально созданной функцией.2. ВариантСоздать тип данных трехмерные вектора. Прочитать из файла массив трехмерныхвекторов, отсортировать его с помощью библиотечной функции qsort() по убываниюнормы вектора. Для использования функции qsort() создать свою функцию сравнениянорм двух векторов.Результат напечатать на экране специально созданной функцией.3.

ВариантСоздать тип данных музыкальные альбомы (исполнитель, название, год выпуска).Прочитать из файла массив альбомов, отсортировать его с помощью библиотечнойфункции qsort() по исполнителям, а для одного исполнителя – по годам. Дляиспользования функции qsort() создать свою функцию сравнения двух альбомов.Результат вывести на экран в компактном виде: исполнитель, год, список альбомов в этом году.4. ВариантСоздать тип данных время (чч:мм:cc). Прочитать из файла массив времен, отсортироватьего с помощью библиотечной функции qsort() по возрастанию.

Для использованияфункции qsort() создать свою функцию сравнения двух времен.Результат напечатать на экране специально созданной функцией.5. ВариантСоздать тип данных календарная дата (дд.мм.гггг), считать, что в месяце всегда ровно 30дней. Прочитать из файла массив дат, отсортировать его с помощью библиотечнойфункции qsort() по убыванию разницы значения элемента массива с заданнойпользователем датой.

Для использования функции qsort() создать свою функциюсравнения.Результат напечатать на экране специально созданной функцией.6. ВариантСоздать тип данных полиномы 4 порядка. Записать коэффициенты полиномов,вводимых пользователем в бинарный файл. В отдельной программе запросить упользователя число x, прочитать последовательно записанный бинарный файл и вывестина экран полином, значение которого на заданном x будет минимальным, а такжезначение этого полинома для заданного х.7. ВариантСоздать тип данных книги (автор, заглавие, год выхода). Записать набор таких данных вбинарный файл записей фиксированной длины в отсортированном по автору и году виде.Написать функцию двоичного поиска всех произведений заданного пользователем авторав этом бинарном файле.Результат напечатать на экране.11.10.20165Кафедра математического моделирования и информатики: первый курс, первый семестр8.

ВариантСоздать тип данных комплексные полиномы 3 порядка и тип данных комплексноечисло. Прочитать из файла массив комплексных полиномов, запросить у пользователякомплексное число z, на экран вывести вывести на экран полином, значение которого назаданном z будет минимальным по модулю.9. ВариантСоздать тип данных студенты (фамилия, имя, год рождения, номер группы). Записатьнабор таких данных в бинарный файл записей переменной длины в отсортированном погруппам и фамилиям виде. Каждое текстовое поле начинается с байта, указывающего надлину этого поля, запись содержит дополнительный байт, вначале, задающий длину всейзаписи, весь файл в начале содержит целое число, задающее количество записей в нем.Написать функцию, распечатывающую на экране всех студентов указанной пользователемгруппы на экране.10.

ВариантНаписать программу, подсчитывающую число уникальных слов в текстовом файле.Подсчет вести в массиве указателей на структуры вида: слово, частота, отсортированномпо частотам слов. Использовать функцию выделения динамической памяти.Результирующую таблицу частот напечатать на экране.11. ВариантСоздать тип данных квадратные уравнения (ax2+bx+c=0), и тип данных корниквадратного уравнения. Написать функцию решения квадратных уравнений solve(),возвращающую решение заданного уравнения. Прочитать уравнения из файла, на экраненапечатать решение каждого из них.12. ВариантНаписать программу, создающую бинарный индексный файл к любому заданномутекстовому файлу. Индекс реализовать в виде набора структур вида: слово, смещение вбайтах от начала файла строки, содержащей это слово.

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5224
Авторов
на СтудИзбе
428
Средний доход
с одного платного файла
Обучение Подробнее