- •Содержание
- •1 Группа
- •1. Організація адресації ат286 в захищеному режимі.
- •2. Архітектура мп 80386.
- •3. Архітектура мп 80486.
- •4. Регістри стану й керування і486.
- •5. Архітектура та функціональні можливості Pentium.
- •6. Провести порівняльний аналіз архітектур мікропроцесорів фірми Intel.
- •7. Risc-процесори.
- •8. Архітектура сигнального мікропроцесора adsp.
- •9. Описати роботу системного таймера ibm-сумісного комп'ютера.
- •10. Класифікація мікропроцесорних наборів.
- •11. Класифікація мікропроцесорних наборів за числом віс.
- •12. Режими роботи таймерів однокристальної мікро еом Intel 8051.
- •13. Архітектура пам’яті процесорів adsp-2100.
- •14. Система команд і регістри процесорів сімейства adsp-2100.
- •15. Динамічні зп з довільною вибіркою.
- •16. Стекова адресація. Польський зворотній запис.
- •If (число)
- •17. Перетворення віртуальних адресів у фізичні.
- •18. Адресний простір еом. Способи адресації операндів.
- •19. Оперативна пам’ять. Організація та принципи управління.
- •20. Система переривань та її характеристики.
- •21. Формування фізичної адреси з логічної у реальному режимі.
- •22. Формування фізичної адреси з логічної у 386 захищеному режимі.
- •23. Підсистема керування оперативної пам’яті. Організація та принципи управління.
- •1. Динамическое распределение памяти.
- •2. Разделение памяти на страницы.
- •3. Использование связанных списков.
- •4. Сегментация памяти.
- •5. Свопинг памяти.
- •6. Организация виртуальной памяти.
- •24. Динамічний розподіл пам’яті. Організація віртуальної пам’яті.
- •25. Загальні принципи будування багатопроцесорних обчислювальних комплексів..
- •26. Загальні принципи будування багатомашинних обчислювальних комплексів.
- •27. Конвеєрні, векторні та матричні багатопроцесорні комплекси.
- •28. Асоціативні системи та системи зі структурою, що перебудовується.
- •29. Принципи будування високонадійних обчислювальних систем - кластерів.
- •30. Принципи побудови систем з симетрично-паралельною обробкою даних. Переваги та недоліки таких систем
- •31. Страницы jsp. Теги и встроенные объекты jsp
- •32. Архитектура распределенных приложений. Web – сервисы
- •33. Soap
- •34. Java rmi Достоинства и недостатки Java rmi
- •35. Распределенные компьютерные системы. Промежуточное программное обеспечение распределенных компьютерных систем
- •36. Виртуальная машина jvm
- •37. Пространства и схемы xml
- •38. Corba. Достоинтсва и недостатки corba
- •39. Сервлет-технология Java
- •40.Xml. Структура xml-документа
- •2 Группа
- •1 Класифікація операційних систем
- •2 Мультизадачність, її розновиди
- •3. Процеси, потоки та їх взаємодія
- •4. Стани процесів
- •5. Розподіл оперативної пам'яті фіксованими розділами
- •6. Розподіл оперативної пам'яті зміними розділами, алгоритми завантаження нових процесів
- •7. Пошук фізичної адреси у реальному режимі
- •8.Пошук фізичної адреси у захищеному режимі
- •9. Пошук фізичної адреси при сторінковій адресації
- •10.Сегментна та сторінкова організація віртуальної пам’яті, алгоритми заміщення сегментів
- •11. Системи введення-виведення, основні режими, базові таблиці
- •12.Файлові системи fat (fat-16, fat-32, vfat).
- •Vfat и длинные имена файлов
- •13.Файлова система hpfs.
- •14.Файлова система ntfs.
- •15.Файлова система UfS.
- •16. Структура жорсткого магнитного диску
- •1.Каждый жесткий диск обслуживают несколько головок, в зависимости от количества круглых пластинок, покрытых магнитным материалом, из которых состоит диск.
- •2.Информация записывается и читается блоками, поэтому все дорожки как бы разбиты на секторы (обычно по 512 байт).
- •3.В операциях чтения или записи на физическом уровне необходимо указывать номер головки (0,1,...), дорожки или цилиндра (0,1,...), сектора (1,2,...).
- •17 Класифікація системного програмного забезпечення
- •18 Мікроядерні та монолітні операційні системи, їх особливості
- •19 Сервісні системи (інтерфейсні системи, оболонки, утілити)
- •20 Інструментальні системи
- •21 Системи програмування, їх основні типи.
- •22 Системи штучного інтелекту
- •23 Асемблери, алгоритм двохпрохідного асемблера
- •24 Завантажувачі
- •25 Макропроцесори
- •26 Компілятори
- •27 Призначення та структура головної функції вікна.
- •Реєстрація класу вікна, параметри, які підлягають реєстрації.
- •29 Етапи створення вікна. Які функції задіяно на кожному етапі?
- •30 Ініціалізація dll-бібліотеки у середовищі Microsoft Windows nt/2000/xp.
- •31 Експорт та імпорт функцій при використанні dll-бібліотек.
- •32 Динамічний імпорт функцій при використанні dll-бібліотек.
- •33 Структура простої прикладної програми з бібліотекою динамічної компоновки. Послідовність дій при компіляції.
- •If(!strcmp((lpstr)lParam, szBuf)) // Сравниваем заголовок со строкой, адрес которой передан в функцию EnumWindowsProc
- •3 Группа
- •Void main ()
- •Void main ()
- •Void main ()
- •Int n; scanf("%d",&n); //число элементов в массиве
- •Void main()
- •Int n; scanf("%d",&n); //число элементов в массиве
- •Int main()
- •Int n,m; scanf("%d%d",&n,&m); //число элементов строк и элементов в строке
- •Int main()
- •Int n,m; scanf("%d%d",&n,&m); //число элементов строк и элементов в строке
- •Int main()
- •Int main()
- •Int main()
- •Int main()
- •Int mul(double X,double y)
- •Int main()
- •Int main()
- •Void func(a);
- •Int fclose(file *имя);
- •Void perror(const char *s);
- •Int fputc(int ch, file *fp);
- •Int fgetc(file *fp);
- •Int fputs(char* string, file *fp);
- •Int fprintf(file *fp, char *format [,аргумент]…);
- •Int fscanf(file *fp, char *format [,указатель]…);
- •Int n; float f; long l; int a[5]; float m[5];
- •Int fwrite(void *ptr, int size, int n, file *fp);
- •Int fread(void *ptr,int size,int n,file *fp);
- •16 Ооп. Визначення класу. Компоненти класу. Спеціфікатори доступу до компонентів класу. Різниця між методами класу, визначеними в класі та поза межами класу.
- •Void define(double re,double im)
- •Void display()
- •X.Define(1,2);
- •Void set(int);
- •Void myclass::set(int c)
- •Int myclass::get()
- •17 Ооп. Визначення класу. Конструктор, перевантажені конструктори, деструктор.
- •Void main()
- •Void main()
- •Void main()
- •18 Ооп. Поняття дружніх функціїй. Різниця між дружньою функцією - членом класу та не членом класу.
- •19 Ооп. Поняття перевантаження операцій. Правила її використання.
- •20 Ооп. Наслідування. Поняття базового та похідного класів. Спеціфікатори доступу до членів класів.
- •21 Моделювання. Визначення моделі та призначення моделювання. Види моделей.
- •22 Моделювання. Загальносистемна модель функціонування систем. Моделі систем: безперервна, лінійна, безперервна лінійна, дискретна.
- •23 Моделювання. Узагальнена модель систем масового обслуговування (смо). Типи смо
- •24 Моделювання. Позначений граф станів системи. Рівняння Колмогорова для ймовірностей стану системи. Фінальні ймовірності станів системи.
- •25 Асемблер. Регістри та біти ознак процесора Intel 8086. (регістри загального вжитку та сегментні регістри, їх призначення; ознаки cf, of, sf, pf, af, zf)
- •26 Асемблер. Структура програми (директиви сегментування segment та з використанням директиви model; директиви assume; моделі пам’яті; ініціалізація сегментних регістрів)
- •Int 21h ;вызов прерывания с номером 21h
- •28 Асемблер. Арифметичні операції додавання та віднімання чисел зі знаком та беззнакових, з урахуванням ознаки переносу, інкрементування й декрементування
- •Vich_1 dd 2 dup (0)
- •Vich_2 dd 2 dup (0)
- •Inc ax ;увеличить значение в ax на 1
- •29 Асемблер. Арифметичні операції множення та ділення чисел зі знаком та беззнакових
- •Imul eax,bx,8
- •Idiv (Integer diVide) Деление целочисленное со знаком
- •Idiv делитель
- •Idiv bx ;частное в ax, остаток в dx
- •30 Асемблер. Команди безумовної передачі керування. (прямі короткі; прямі; непрямі)
- •31 Асемблер. Організація циклів за допомогою команд jcxz; loop, loopz та loopnz
- •32 Асемблер. Команди умовного передавання керування. (операція cmp; операції умовного передавання керування jcxz, jc, jo, jz, jc, je, jl, jg, ja, jb)
- •Int 21h ;Вызов системной функции
- •33 Асемблер. Макроси (опис, розташування, використання)
- •4 Группа
- •1,2 Общая характеристика модели osi
- •3 Понятие «открытая система»
- •4 Стандартные стеки коммуникационных протоколов (osi , ipx/spx, NetBios/smb)
- •5 Стек tcp/ip
- •6 Общая структура телекоммуникационной сети
- •7 Корпоративные сети
- •8,9 Сети операторов связи
- •10 Классификация линий связи: первичные сети, линии и каналы связи; физ.Среда пердачи аднных
- •11 Классификация линий связи: аппаратура передачи данных
- •12 Структурированная кабельная система
- •13 Безпровідна лінія зв'язку, діапазони електромагнітного спектру
- •14 Безпровідне середовище передачі даних: розповсюдження електромагнітних хвиль, ліцензування
- •15 Общая характеристика протоколов локальных сетей: стандартная топология и разделяемая среда, стек протоклов локальных сетей.
- •16 Протокол mac. Адресация mac-уровня.
- •17 Структура стандартов ieee 802.X
- •18 Спецификация физической среды Ethernet ( общая характеристика стандартов 10Мбит/мек,Домен коллизий)
- •19 Спецификация физической среды Ethernet ( Стандарт 10Base-5, 10Base-5)
- •20 Спецификация физической среды Ethernet ( Стандарт 10Base-т)
- •21 Спецификация физической среды Ethernet ( Оптоволоконная сеть Ethernet)
- •22 Технология Fast Ethernet (Физический уровень технологии Fast Ethernet)
- •23 Технология Fast Ethernet (спецификация 100Base-fx/тх/т4)
- •24 Правила построения сегментов Fast Ethernet при наличии повторителей
- •25. Gigabit Ethernet
- •26. Технология Token Ring
- •27 Загальна характеристика безпровідних локальних мереж
- •28 Мережі Стек протоколів ieee 802.11, безпека безпровідних локальних мереж
- •29 Мережі Топології безпровідних локальних мереж стандарту 802.11, розподілений та централізований режими доступу до розділеного середовища
- •30 Мережі Особливості персональних мереж, архітектура Bluetooth
- •31 Мережі Стек протоколів Bluetooth, кадри Bluetooth.
- •32 Мережі Основні функції мережних адаптерів
- •33 Мережі Основні и додаткові функції концентраторів
- •34 Мережі Багатосегментні концентратори
- •35 Мережі Основні характеристики та особливості комутаторів. Неблокуючі комутатори
- •36 Мережі Функції комутаторів (боротьба з перевантаженнями трансляція протоколів канального рівня, фільтрація трафіку)
- •37 Мережі Характеристики продуктивності комутаторів
- •38 Мережі Поняття та призначення віртуальних мереж
- •39 Мережі Створення віртуальніх мереж на базі одного та декількох комутаторів
- •40 Мережі Якість обслуговування в віртуальних мережах
- •41 Мережі Типи адрес стеку tcp/ip (локальні адреси, мережні ip-адреси, доменні імена).
- •42 Мережі Протокол dhcp
- •43 Мережі Протоколи транспортного рівня tcp и udp (загальна характеристика, порти)
- •44 Мережі Протокол транспортного рівня udp
- •45 Мережі Протокол транспортного рівня tcp (формат tcp - сегмента, логічне з‘єднання, послідовний та затверджений номер)
- •47 Мережі Класифікація протоколів маршрутизації, маршрутизація без таблиць, адаптивна маршрутизація
- •48 Мережі Використання декількох протоколів маршрутизації, зовнішні та внутрішні шлюзні протоколи
- •49 Мережі Протокол bgp
- •50 Мережі Поняття, типи icmp-повідомлень
- •51 Мережі Протокол icmp (формат ехо – запитання /ехо - відповідь и утиліта ping; формат повідомлення про помилку та утиліта traceroute)
- •5 Группа
- •1 Трьохрівнева модель субд
- •2 Моделі даних
- •3 Реляційна модель даних
- •4 Ключі відношень. Визначення, різновиди, призначення. Умови цілісності даних
- •5 Інфологічне моделювання предметної області. Модель “Сутність – зв’язок”
- •6 Види зв’яку між сутностями. Навести приклади
- •7 Нормалізація відношень. Призначення. Послідовність виконання нормалізації.
- •8 Нормалізація відношень. 1 та 2 нормальні форми.
- •9 Нормалізація відношень. 3 нормальна форма та нормальна форма Бойса-Кодда. Навести приклади
- •10 Функціональні залежності атрибутів у відношеннях.
- •11 Реляційна алгебра. Основні операції реляційної алгебри.
- •12 Оператор Select. Речення From . Синтаксис. Використання. Навести приклади.
- •13 Відбирання рядків у запитах. Синтаксис. Навести приклад.
- •14 Відбирання груп у запитах. Синтаксис. Навести приклад.
- •15 Групування та сортування записів у запиті. Навести приклад
- •16 Вкладені запити. Різновиди. Синтаксис. Навести приклади.
- •17 Використання агрегатних функцій у запитах.
- •18 Фізична модель даних. Структура записів на носії.
- •21. Рівні та задачі проектування електронних пристроїв от.
- •22. Математичне моделювання електронних пристроїв от: переваги та недоліки.
- •23. Математичні моделі елементів електронних пристроїв. Визначення і класифікація, методи розробки.
- •24. Задачі схемотехнічного проектування електронних пристроїв от.
- •25. Структура та можливості програм моделювання електронних схем.
- •26. Типова структура і засоби розробки макромоделей інтегральних мікросхем.
- •27. Імітаційне моделювання електронних пристроїв от: процес, подія, активність.
- •28. Методи функціонального моделювання аналогових і цифрових пристроїв.
- •29. Методи логічного моделювання цифрових пристроїв.
- •30. Тестування цифрових пристроїв: контролюючі та діагностичні тести. Засоби їх отримання.
- •31 Моделювання на рівні регістрових передач
- •32 Функціональне моделювання за допомогою програм моделювання аналогових схем.
- •33 Математические методы и модели на разных уровнях проетирования
- •6 Группа
- •1 Властивості інформації. Класифікація загроз інформації.
- •2 Уровни защиты информации в компьютерных системах
- •3 Законодательний рівень захисту інформації
- •4. Організаційно-адміністративний рівень захисту інформації
- •5. Фізико-технічні засоби захисту інформації в компьютерних системах
- •6. Криптографічний захист інформації
- •7. Стандарти симетричного шифрування даних
- •8. Криптосистеми з відкритим ключем
- •9. Канали несанкціонованого доступу до інформації
- •10, Системи захисту від несанкціонованого доступу
- •11. Аутентифікація електронних даних: імітоприкладка, електронний цифровий підпис
- •3. Проверка подписи
- •1. Генерация ключей
- •2. Подписание документа
- •3. Проверка подписи
- •12. Системи ідентифікації та аутентифікації користувачів
- •13. Взаємна аутентифікація користувачів
- •1. «Запрос-ответ»
- •2. «Временной штемпель»
- •3. Процедура рукопожатия
- •4. Протокол аутентификации с нулевым разглашением знаний
- •14. Парольная система. Требования к паролям.
- •15. Захист від віддалених мережевих атак
- •27. Перетворення спектра при дискретизації сигналів. Теорема Котельникова
- •28. Швидке перетворення Фур'є з проріджуванням за часом. Структурна схема "метелика" з проріджуванням за часом.
- •29. Поняття цифрового фільтра. Рекурсивні та нерекурсивні фільтри. Чотири основні форми реалізації фільтрів.
- •30. Операції над зображеннями. Поняття околу (4-точечний, 8-точечний окіл). Вікно, опорна точка вікна.
- •31. Лінійна фільтрація зображень. Рівняння лінійної фільтрації
- •7 Группа
- •2 За допомогою методики розрахунка конфігурації мережі Ethernet, підтвердіть правило 4-х хабів.
- •8 Наведіть обмеження для мереж, що побудовані на основі комутаторів
- •11 Яку максимальну кількість підмереж можливо організувати для мережі класа с? Приведіть значення маски
- •20 Проаналізуйте можливості та характеристики сучасних принтерів
- •21 Проведіть логічне тестування і відновлення інформації на гнучкому магнітному диску
- •22 Структура та принцип роботи сучасного модема, блок-схема передавача та приймача
- •23 Реалізація функцій скремблювання та ехоподавлення в сучасних модемах
- •24 Сучасні жорсткі диски. Проаналізуйте їх характеристики
- •25 Сучасні сканери, Проаналізуйте їх функції та характеристики
- •26 Джерела безперервного живлення. Проаналізуйте їх основні характеристики
- •27 Дайте визначення та наведіть робочі формули основних показників надійності. Приведіть та роз'ясніть графік інтенсивності відмов для обчислювальних пристроїв.
- •28 Приведіть формулу ймовірності безвідмовної роботи Pc(t) системи з навантаженим загальним резервом. Приведіть графік залежності нароботки до відказу від кратності резерву.
- •17 Розробіть на мові асемблер програму для обчислення суми чисел масиву з 10 елементів типу байт у процедурі з передаванням аргументів через регістри.
- •18 Розробіть на мові асемблер фрагмент програми, в якій знаходиться максимальний елемент масиву з 10 чисел типу слово (з використанням команди jcxz).
- •19 Розробіть на мові асемблер фрагмент програми для обчислення номеру мінімального елементу в масиві з 10 чисел типу слово (за допомогою команди loop)
- •20 Розробіть на мові асемблер фрагмент програми, що порівнює значення двох змінних введених з клавіатури й відображає результат у вигляді: рівні або нерівні.
- •21 Розробіть на мові асемблер фрагмент програми, в якій додаються та множаться два байтові числа, визначається парний чи непарний результат суми та дво- чи чотирьохбайтовий результат добутку.
- •26 Приведіть методи підвищення ефективності роботи з жорстким диском по переміщенню голівок
- •31 Проаналізуйте структуру драйверу ms dos. Його частини. Завантаження драйверу та робота з ним.
- •33 Наведіть характеристики режимів відеосистеми. Характеристики, які не змінюються, які змінюються з використанням фізичних методів. Характеристики, які змінюються програмно.
- •34 Проаналізувати методи створення розділів диску. Скільки розділів та логічних дисків можливо встановити на одному фізичному диску?
27 Дайте визначення та наведіть робочі формули основних показників надійності. Приведіть та роз'ясніть графік інтенсивності відмов для обчислювальних пристроїв.
Основные показатели надёжности:
-
Вероятность безотказной работы (P(t)): P(t)=N0-n/N0 (стат.), Pe=e-λ*t (экспон.), Pb=e-λ*t^β (Вейбулла);
-
MTTF: tc = 1/ λпр (λпр = Кэ* λi);
-
MTTR: Tрем = Σ ti / n;
-
MTBF.
Наработка на отказ – период времени, в течении которого изделие гарантированно не откажет ни разу. MTTF – среднее время наработки на отказ (предп. – группы устройств). MTBF – среднее время работы между отказами.
Воздействие внешней среды задаётся определённым коэффициентом К, который определяется таблично (для различных условий). Значение оного для лаборатории =1. Используется для расчёта интенсивности отказов и MTTF.
Показатели надёжности РЭ указывается в техническом паспорте или технических условиях (обычно, указывается интенсивность отказов и MTTF).
Основные показатели могут быть определены статистически, при помощи математических моделей либо опытным способом (табл. – λ).
Основные показатели надёжности определяются на этапах проектирования, лабораторных и производственных испытаний.
График интенсивности отказов показывает зависимость вероятности поломки прибора от времени работы.

28 Приведіть формулу ймовірності безвідмовної роботи Pc(t) системи з навантаженим загальним резервом. Приведіть графік залежності нароботки до відказу від кратності резерву.
Формула імовірності безвідказної роботи системи з навантаженим резервуванням

Графік залежності MTBF відносно кратності n резервування представлений на рисунку 2.5.

Рисунок 7.1 - Графік залежності середнього часу напрацювання на відказ від кратності резерву
Середній час безвідказної роботи в резервованій навантаженій системі зростає спочатку швидко відповідно до зростання n, Але подальше збільшення n неефективно. Графік показує, що система із ненавантаженим резервом має вищу надійність ніж з навантаженим.
29 Дайте визначення графу надійності системи та приведіть приклади для резервованих та нерезервований систем.
Резервована, або нерезервована система може бути представлена у виглядi структурноi схеми надiйностi, або зв`язаного графа надiйностi.
У зв`язаному графi надiйностi вершини вiдповiдають пiдсистемам, а дуги - сполюченням мiж пiдсистемами. При цьому, вiдказу пiдсистеми вiдповiдае обрив i-го ребра графа, а вiдказу системи - втрата зв`язку мiж двома вершинами графа А та В.

30 Приведіть граф надійності та визначіть ймовірніть безвідмовної роботи мережі топології "загальна шина".


Вероятность безотказной работы системы:
P=(1 - (1 - Ppc)N) * (Pterm2), где N – количество компов в сети
31 Приведіть граф надійності та визначіть ймовірніть безвідмовної роботи мережі топології "зірка".


Вероятность безотказной работы системы:
P=(1 - (1 - Ppc)N) * (Phub2), где N – количество компов в сети.
8 ГРУППА
1 Розробити на мові С++ програму, в якій 500 елементам масиву чисел типу int привласнюються випадкові числа від -100 до 100, знаходиться сума та кількість додатних чисел. Якщо елемент масиву дорівнює 0, то цикл завершується.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main()
{clrscr(); // очистка экрана
randomize(); // запуск генератора случайных чисел
const int N=500; // размер массива – константное число
int mas[N]; // определение массива целых чисел
long double pol_sum=0.0;// начальное значение суммы положительных чисел
int pol_kol=0; //счетчик количества положительных чисел
for (int i=0;i<N; i++)
{ mas[i]=(random(201)-100; //заполнение массива случайными числами
if (mas[i]==0)
{printf (“цикл закончился, mas[%d]=%d\n”,i, mas[i]);
break; // завершение цикла
}
else
if (mas[i]>0) {pol_kol++; //подсчет положительных чисел
pol_sum+=mas[i]; //нахождение суммы положительных чисел
}
}
printf("Kolichestvo pologitelnih = %d\n",pol_kol); //вывод результатов
printf("Summa pologitelnih = %Lf\n",pol_sum);
getch(); // ожидание нажатия какой-либо клавиши
return 0;
}
2 Розробити на мові С++ програму, в якій створюється динамічний масив цілих чисел заданого розміру, вводяться значення елементів масиву з клавіатури та робиться сортування даних за зростанням.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main()
{clrscr(); // очистка экрана
int *mas; // определение указателя на массив целых чисел
int n; // переменная для задания размера массива
printf("Задайте размер массива:\n");
scanf("%d",&n); //ввод размера массива с клавиатуры
mas=new int[n]; //запрос динамической памяти под массив
if(mas==NULL){printf(“ошибка выделения памяти”);
return 1; // завершение программы
}
int i,j, tmp;
printf("Введите %d значений элементов массива\n",n);
for (i=0;i<n;i++)
scanf("%d",&mas[i]); //ввод элементов массива
printf("Вы ввели массив\n",n);
for (i=0;i<n;i++)
printf("%d ", mas[i]); //вывод элементов массива
for (i=0;i<n;i++) //пузырьковая сортировка
for (j=i;j<n;j++)
if (mas[i]>mas[j]) //перемещение минимального элемента на начало массива
{tmp=mas[i];
mas[i]=mas[j];
mas[j]=tmp; }
printf("\nМассив после сортировки:\n ");
for (i=0;i<n;i++)
printf("%d ",mas[i]); //вывод массива на экран
puts("\n");
delete [] mas; // освобождение памяти
getch(); // ожидание нажатия какой-либо клавиши
return 0;
}
3 Розробити на мові С++ програму, в якій, використовуючи масив структур, вводяться такі дані: прізвище, рік народження, стать, номер курсу. Розмір масиву задається за допомогою препроцесорної директиви #define.
#include <stdio.h>
#include <conio.h>
#define n 5 //размер массива структур
int main()
{clrscr(); // очистка экрана
//описание структуры данных
struct inf {char surname[20]; // фамилия
int bith; // год рождения
char sex; // пол
int kurs;}; // номер курса
inf mas[n]; // определение массива структур
for (int i=0;i<n;i++) //цикл ввода данных
{printf("Student N %d\n",i+1);
printf("Введите фамилию:\n");
gets(mas[i].surname);// ввод фамилии
printf("Введите год рождения:\n");
scanf("%d",&mas[i].bith);
fflush(stdin); // очистка потока ввода
printf("Введите пол: 1- мужской или 0 – женский\n");
scanf("%d",&mas[i].sex);
fflush(stdin); // очистка потока ввода
printf("Введите курс:\n");
scanf("%d",&mas[i].kurs);
fflush(stdin); // очистка потока ввода
}
//вывод результатов на экран
for (i=0;i<n;i++)
{printf("%d. %15s год рождения %6d ",i+1, mas[i].surname,mas[i].bith);
if (mas[i].sex==1) printf("пол- мужской ”);
else printf("пол- женский ”);
printf(“курс - %d\n”, mas[i].kurs);
}
getch(); // ожидание нажатия какой-либо клавиши
return 0;
}
4 Розробити на мові С++ програму підсумовування елементів масиву чисел типів int, float, double, використовуючи перевантажені функції.
#include <stdio.h>
#include <conio.h>
//функция, в которую передается массив типа int и размер массива
int sum (int x[],int n)
{int add=0; //переменная для суммы элементов
for (int i=0;i<n;i++)
add+=x[i];
return add; }
//функция, в которую передается массив типа float и размер массива
float sum (float x[],int n)
{float add=0.0; //переменная для суммы элементов
for (int i=0;i<n;i++)
add+=x[i];
return add; }
//функция, в которую передается массив типа double и размер массива
double sum (double x[],int n)
{ double add=0.0; //переменная для суммы элементов
for (int i=0;i<n;i++)
add+=x[i];
return add;
}
int main()
{clrscr(); // очистка экрана
int a[8]={11,20,32,4,5,21,6,26}; // массив из 8-и чисел типа int
float b[6]={1.1f,2.2f,0.3f,4.4f,5.5f, 0.2f}; // массив из 6-и чисел типа float
double c[5]={1.01,2.02,3.03,4.04,5.05}; // массив из 5-и чисел типа double
int res1= sum(a,8); // вызывается первая функция sum
printf("Sum of int=%d\n", res1);
float res2= sum(b,6); // вызывается вторая функция sum
printf("Sum of float=%.2f\n", res2);
double res3= sum(c,5); // вызывается третья функция sum
printf("Sum of double=%.2lf\n", res3);
getch(); // ожидание нажатия какой-либо клавиши
return 0;
}
5 Розробити на мові С++ програму підсумовування елементів масиву чисел довільного типу, використовуючи шаблон функції.
#include <stdio.h>
#include <conio.h>
template <class A> //шаблон функции
// в функции используется шаблон, в нее передается массив типа шаблона и размер массива
A sum (A x[],int n)
{A add=0; //переменная для суммы элементов
for (int i=0;i<n;i++)
add+=x[i];
return add; }
int main()
{clrscr(); // очистка экрана
int a[8]={3,92,13,64,55,1,6,6}; // массив из 8-и чисел типа int
long b[4]={1000,223,3,4000}; // массив из 4-и чисел типа long
double c[5]={1.01,2.02,3.03,4.04,5.05}; // массив из 5-и чисел типа double
int res1= sum(a,8); // А заменяется на int
printf("Sum of int=%d\n", res1);
long res2= sum(b,4); // А заменяется на long
printf("Sum of long =%ld\n", res2);
double res3= sum(c,5); // А заменяется на double
printf("Sum of double=%.2lf\n", res3);
getch(); // ожидание нажатия какой-либо клавиши
return 0;
}
6 Розробити на мові С++ програму пошуку максимального елементу масиву чисел типів int, float, double, використовуючи перевантажені функції.
#include <stdio.h>
#include <conio.h>
//функция, в которую передается массив типа int и размер массива
int max_arr(int x[],int n)
{int max=x[0]; //переменная для максимального элемента массива
for (int i=0;i<n;i++)
if (x[i]>max) max=x[i];
return max; }
//функция, в которую передается массив типа float и размер массива
float max_arr (float x[],int n)
{float max=x[0]; //переменная для максимального элемента массива
for (int i=0;i<n;i++)
if (x[i]>max) max=x[i];
return max; }
//функция, в которую передается массив типа double и размер массива
double max_arr (double x[],int n)
{ double max=x[0]; //переменная для максимального элемента массива
for (int i=0;i<n;i++)
if (x[i]>max) max=x[i];
return max;
}
int main()
{clrscr(); // очистка экрана
int a[10]={4,11,27,32,94,5,21,6,22,8}; // массив из 10-и чисел типа int
float b[6]={18.1f,2.32f,60.3f,4.14f,25.5f, 16.2f}; // массив из 6-и чисел типа float
double c[5]={1.01,32.02,3.03,4.04,5.05}; // массив из 5-и чисел типа double
int res1= max_arr (a,10); // вызывается первая функция max_arr
printf("max_arr типа of int=%d\n", res1);
float res2= max_arr (b,6); // вызывается вторая функция max_arr
printf("max_arr типа float=%.2f\n", res2);
double res3= max_arr (c,5); // вызывается третья функция max_arr
printf("max_arr типа double=%.2lf\n", res3);
getch(); // ожидание нажатия какой-либо клавиши
return 0;
}
7 Розробити на мові С++ програму пошуку мінімального елементу масиву чисел довільного типу, використовуючи шаблон функції.
#include <stdio.h>
#include <conio.h>
template <class A> //шаблон функции
//в функции используется шаблон, в нее передается массив типа шаблона и размер массива
A min_arr (A x[],int n)
{ A min=x[0]; //переменная для суммы элементов
for (int i=0;i<n;i++)
if (x[i]<min) min=x[i];
return min;
}
int main()
{clrscr(); // очистка экрана
int a[8]={3,92,13,64,-55,1,5,6}; // массив из 8-и чисел типа int
long b[4]={1000,223,3,4000}; // массив из 4-и чисел типа long
double c[5]={1.01,2.02,3.03,4.04,5.05}; // массив из 5-и чисел типа double
int res1= min_arr (a,8); // А заменяется на int
printf("min_arr of int=%d\n", res1);
long res2= min_arr (b,4); // А заменяется на long
printf("min_arr of long =%ld\n", res2);
double res3= min_arr (c,5); // А заменяется на double
printf("min_arr of double=%.2lf\n", res3);
getch(); // ожидание нажатия какой-либо клавиши
return 0;
}
8 Розробити на мові С++ програму обчислення виразу y=a*x*х+b*x+c, використовуючи функцію з замовчаними параметрами a, b, c. Продемонструвати роботу цієї програми з різними параметрами
#include <stdio.h>
#include <conio.h>
long func (long x, long a=10, long b=5, long c=4)
//функция с умалчиваемыми значениями параметров
{printf(“%ld*%ld*%ld+%ld*%ld+%ld=”,a,x,x,d,x,c);
return (a*x*x+b*x+c); //вычисление выражения
}
int main()
{clrscr(); // очистка экрана
printf("%ld\n",func(2)); //значения умалч. параметров не передаются
printf("%ld\n",func(2,20)); //передается 1 умалч. параметр
printf("%ld\n",func(2,20,3));//передается 2 умалч. параметра
printf("%ld\n",func(2,20,3,10));//передаются все 3 умалч. параметры
getch(); // ожидание нажатия какой-либо клавиши
return 0;
}
На экране будет :
10*2*2 + 5*2 + 4 = 54
20*2*2 + 5*2 + 4 = 94
20*2*2 + 3*2 + 4 = 90
20*2*2 + 3*2 + 9 = 95
9 Розробити на мові С++ програму для одержання значень параметрів, визначених у командному рядку. Передати в головну функцію з командного рядка ім'я студента. Якщо воно вірне, то на екран вивести прізвище студента та назва спеціальності, інакше повідомлення про помилку.
#include <stdio.h>
#include <conio.h>
#include <string.h>
int main(int argc, char **argv)
{clrscr(); // очистка экрана
char str1[]="Ivan;
char str2[]="Petrov";
char str3[]="KCM";
if (strcmp(str1,argv[1])!=0)
{printf("Error! Не правильное имя\n"); //имя, введенное в командной строке, не совпало с заданным
getch();
return 1; //завершение программы
}
printf("Вы ввели в командной строке:\n");
for(int i=0;i<argc;i++)
printf("argv[%d] = %s\n",i,argv[i]);
printf("\n%s %s\n", str2, str3);
getch(); // ожидание нажатия какой-либо клавиши
return 0;
}
Если в командной строке ввести Ivan 18.02.07 ККЗ, то на экране получим:
F:\Users\zao\sad8_9.exe
Ivan
18.02.07
ККЗ
Petrov KCM
Если в командной строке ввести Petr 18.02.07 ККЗ, то на экране получим:
Error! Не правильное имя
10 Розробіть на мові С++ клас матриць, у якому матриця зберігається як динамічний масив, а методи дозволяють складати вводити виводити значення елементів матриці, складати і множити дві матриці.
#include <stdio.h>
#include <conio.h>
#include <string.h>
class matrix //класс матриц
{public:
int **m; //указатель на матрицу
int x; //кол-во столбцов
int y; //кол0во строк
matrix(int a, int b) //конструктор (передаются размерв матрицы)
{
x=a;
y=b;
m=new int*[x]; //динамическое выделение памяти
int i;
for (i=0;i<x;i++) m[i]=new int[y];
int j;
for (i=0;i<x;i++)
for (j=0;j<y;j++)
m[i][j]=0; //начальное обнуление
}
~matrix() //деструктор
{
int i;
for (i=0;i<x;i++) delete m[i]; //освобождение памяти
delete [] m;
}
int sum_el() //вычисляет сумму элементов матрицы
{
int i,j;
int sum=0;
for (i=0;i<x;i++)
for (j=0;j<y;j++)
sum+=m[i][j];
return sum; //возвращает сумму
}
void input() //вводит элементы матрицы с клавиатуры
{
int i,j;
for (i=0;i<x;i++)
for (j=0;j<y;j++)
{
printf("Get the element of %d row and %d column: ",i,j);
scanf("%d",&m[i][j]);
}
}
void output() //выводит матрицу на экран
{
int i,j;
for (i=0;i<x;i++)
{
for (j=0;j<y;j++)
{
printf("%d ",m[i][j]);
}
printf("\n");
}
}
void add(matrix mm)
//складывает 2 матрицы (к каждому элементу текущей матрицы добавляется соотв. эл-т второй матрицы,
//которая передается как параметр
{
if (x==mm.x && y==mm.y) //необходимость одинаковых размеров
{
int i,j;
for (i=0;i<x;i++)
for (j=0;j<y;j++)
m[i][j]+=mm.m[i][j];
}
}
void mul(matrix mm1, matrix mm2)
//перемножает матрицы (текущая матрица становится равной произведению
//2х матриц, которые передаются как параметры
{
if (x==mm1.x && x==mm2.y && mm1.y==mm2.x)
//математическая необходимость соответствия размеров всех 3х матриц
{
int i,j,k;
for (i=0;i<x;i++)
for (j=0;j<y;j++)
for (k=0;k<mm1.y;k++)
m[i][j]+=mm1.m[i][k]*mm2.m[k][j]; //вычисляется каждый элемент
}
}
};
int main()
{
matrix m1(2,3); //создание 1й матрицы размером 2х3
m1.input(); //ввод эл-тов
puts("");
m1.output(); // вывод на экран
puts("");
printf("Sum of elements=%d\n\n",m1.sum_el()); //сумма эл-тов матрицы
matrix m2(2,3);//создание 2й матрицы размером 2х3 (для суммирования с 1й)
m2.input();
puts("");
m2.output();
puts("");
m1.add(m2); //симмирование 1й и 2й матриц
m1.output();
matrix m3(3,2);//создание 3й матрицы размером 3х2 (для перемножения с 1й)
m3.input();
puts("");
m3.output();
puts("");
matrix m4(2,2);//создание 4й матрицы размером 2х2 (для хранения рез-та перемножения матриц)
m4.mul(m1,m3); //произведение 1й и 3й матриц (результат - в 4ю)
m4.output();
getch();
return 0;}
11 Розробіть на мові С++ клас матриць, у якому матриця зберігається як динамічний масив, а методи дозволяють вводити, виводити значення елементів матриці, складати дві матриці.
#include <stdio.h>
#include <conio.h>
#include <string.h>
class matrix //класс матриц
{public:
int **m; //указатель на матрицу
int x; //кол-во столбцов
int y; //кол0во строк
matrix(int a, int b) //конструктор (передаются размерв матрицы)
{
x=a;
y=b;
m=new int*[x]; //динамическое выделение памяти
int i;
for (i=0;i<x;i++) m[i]=new int[y];
int j;
for (i=0;i<x;i++)
for (j=0;j<y;j++)
m[i][j]=0; //начальное обнуление
}
~matrix() //деструктор
{
int i;
for (i=0;i<x;i++) delete m[i]; //освобождение памяти
delete [] m;
}
void input() //вводит элементы матрицы с клавиатуры
{
int i,j;
for (i=0;i<x;i++)
for (j=0;j<y;j++)
{
printf("Get the element of %d row and %d column: ",i,j);
scanf("%d",&m[i][j]);
}
}
void output() //выводит матрицу на экран
{
int i,j;
for (i=0;i<x;i++)
{
for (j=0;j<y;j++)
{
printf("%d ",m[i][j]);
}
printf("\n");
}
}
void add(matrix mm)
//складывает 2 матрицы (к каждому элементу текущей матрицы добавляется соотв. эл-т второй матрицы,
//которая передается как параметр
{
if (x==mm.x && y==mm.y) //необходимость одинаковых размеров
{
int i,j;
for (i=0;i<x;i++)
for (j=0;j<y;j++)
m[i][j]+=mm.m[i][j];
}
}
};
int main()
{
matrix m1(2,3); //создание 1й матрицы размером 2х3
m1.input(); //ввод эл-тов
puts("");
m1.output(); // вывод на экран
puts("");
matrix m2(2,3);//создание 2й матрицы размером 2х3 (для суммирования с 1й)
m2.input();
puts("");
m2.output();
puts("");
m1.add(m2); //симмирование 1й и 2й матриц
m1.output();
getch();
return 0;}
12 Розробіть на мові С++ клас TRIANGLE (прямокутний трикутник). Конструктор повинен ініціалізувати координати гіпотенузи та обчислювати координати катетів. Клас повинен мати закритий метод обчислювання довжин сторін та відкриті методи обчислювання периметру та площі трикутника.
#include <stdio.h>
#include <conio.h>
#include <math.h>
class triangle
{
private: //закрытые методы и свойства
double x1; //коорд. х первого конца гипотенузы
double y1; //коорд. у первого конца гипотенузы
double x2; //коорд. х второго конца гипотенузы
double y2; //коорд. у второго конца гипотенузы
double x3; //коорд. х прямого угла
double y3; //коорд. у прямого угла
double len(double xa,double ya,double xb,double yb)
{ //длина стороны по координатам
return (sqrt( (xb-xa)*(xb-xa)+(yb-ya)*(yb-ya) ));
}
public: //открытые методы
triangle(double xg1,double yg1,double xg2,double yg2) //коструктор
{ //в него передаются координаты гипотенузы
x1=xg1;
y1=yg1;
x2=xg2;
y2=yg2;
x3=x1; //координаты прямого угла
y3=y2; //координаты прямого угла
}
double perim() //вычисление периметра (сумма длин всех сторон)
{
return ( len(x1,y1,x2,y2)+len(x1,y1,x3,y3)+len(x3,y3,x2,y2) );
}
double square() //вычисление площади
{
return ( len(x1,y1,x3,y3)*len(x3,y3,x2,y2)/2.0 );
}
};
int main()
{
triangle t1(3.0,0.0,0.0,2.0);
printf("Perimetr=%.2lf\n",t1.perim());
printf("Square=%.2lf\n",t1.square());
getch();
return 0;
}
На экране:
Perimetr=8.61
Square=3.00
13 Розробіть на мові С++ класи Circle (круг), Quart (квадрат) та дружню функцію для класів , яка не є членом-функцією класу. Конструктори класів повинні ініціалізувати довжини радіуса круга та сторони квадрату. Класи повинні мати методи обчислювання площі. Дружня функція повинна виводити на екран повідомлення, площя якої фігури більше, та обчислювати сумарну площу двох фігур.
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define pi 3.1415926
class quart;
class circle //класс circle
{
public:
double r; //радиус
circle (double rr) //конструктор
{
r=rr;
}
friend void func(circle c1, quart q1); //дружественная функция
private:
double square() //вычисление площади
{
return pi*r*r;
}
};
class quart //класс quert
{
public:
double a; //сторона квадрата
quart (double aa) //конструктор
{
a=aa;
}
friend void func(circle c1, quart q1); //дружественная функция
private:
double square()
{
return a*a;
}
};
void func(circle c1, quart q1)
// дружественная функция (может использовать закрытые методы)
{
if (c1.square()>q1. square ()) printf("Square of circle > Square of quart\n");
if (c1.square()<q1. square ()) printf("Square of circle < Square of quart\n");
if (c1.square()==q1. square ()) printf("Square of circle == Square of quart\n");
printf("Square of both figures=%.2lf\n",c1.square()+q1.square());
return;
}
int main()
{
circle c(4); //радиус=4
quart q(4); //сторона=4
func(c,q); //вызов функции
getch();
return 0;
}
На экране:
Square of circle > Square of quart
Square of both figures=66.27
14 Розробіть на мові С++ клас матриць розміру 3 на 3, в якому конструктор ініціалізує значення елементів матриці довільними числами, а методи дозволяють вводити елементи матриці з клавіатури, виводити їх на екран по стовбцям. В класі повинна бути перевантажена операція (знак +) складання двох матриць та матриці з числом.
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#define n 3
class matrix //класс матриц 3x3
{
public:
int m[n][n]; //матрица
matrix() //конструктор
{
int i,j;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
m[i][j]=floor(random(10)); //начальные значения
}
void input() //вводит элементы матрицы с клавиатуры
{
int i,j;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
{
printf("Get the element of %d row and %d column: ",i,j);
scanf("%d",&m[i][j]);
}
}
void output() //выводит матрицу на экран
{
int i,j;
printf("Po strokam:\n"); //по сторокам
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
printf("%d\t",m[i][j]);
}
printf("\n");
}
printf("Po stolbcam:\n"); //по столбцам
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
printf("%d\t",m[j][i]);
}
printf("\n");
}
}
void operator+(matrix mm) //оператор + с матрицей
{
int i,j;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
m[i][j]+=mm.m[i][j];
}
void operator+(int a) //оператор + с числом
{
int i,j;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
m[i][j]+=a;
}
};
int main()
{
randomize();
matrix m1;
m1.input(); //ввод с коавиатуры
puts("");
m1.output(); //вывод на экран
puts("");
matrix m2;
m2.output(); //вторая матрица запояняется произвольными числами
puts("");
printf("Sum of 2 matrix:\n");
m1+m2; //сумма 2х матриц
m1.output();
puts("");
printf("Sum of matrix and number 3:\n");
m1+3; //сумма матрицы и числа
m1.output();
puts("");
getch();
return 0;
}
На экране:
Po strokam:
1 2 3
4 5 6
7 8 9
Po stolbcam:
1 4 7
2 5 8
3 6 9
Po strokam:
3 3 9
6 2 8
8 2 6
Po stolbcam:
3 6 8
3 2 2
9 8 6
Sum of 2 matrix:
Po strokam:
4 5 12
10 7 14
15 10 15
Po stolbcam:
4 10 15
5 7 10
12 14 15
Sum of matrix and number 3:
Po strokam:
7 8 15
13 10 17
18 13 18
Po stolbcam:
7 13 18
8 10 13
15 17 18
15 Розробіть на мові асемблер фрагмент програми для обчислення виразу z=(a – b + c)/10, де a, b, c змінні типу байт.
data segment para public 'data' ;сегмент данных
a db 10
b db 8
c db 14
d db 10
data ends
stk segment stack
db 256 dup ('?') ;стек
stk ends
code segment para public 'code'
main proc
assume cs:code,ds:data,ss:stk,es:data
mov ax,data ;передача в ds расположение сегмента данных
mov ds,ax
mov al,a ;арифметические операции
mov bl,b
sub al,bl
mov bl,c
add al,bl
cbw
div d
exit: mov ax,4c00h ;завершение программы
int 21h
endp main
code ends
end main
16 Розробити на мові асемблер фрагмент програми для обчислення виразу z=10*(a + b – c), де a, b, c змінні типу слово.
data segment para public 'data' ;сегмент данных
a dw 10 ;переменные типа слово
b dw 8
c dw 14
d dw 10
data ends
stk segment stack
db 256 dup ('?') ;стек
stk ends
code segment para public 'code'
main proc
assume cs:code,ds:data,ss:stk,es:data
mov ax,data
mov ds,ax
mov ax,a ;арифметические операции
mov bx,b
add ax,bx
mov bx,c
sub ax,bx
mul d
exit: mov ax,4c00h
int 21h
endp main
code ends
end main
