- •Часть 1 11
- •Часть 2 18
- •Часть 1 21
- •Часть 2 24
- •Лабораторная работа №1 Тема: “Программы, использующие команды ветвления. Отладка программы“ Отладка программы
- •Часть 1 Ветвление в программе с помощью вложенных конструкцийif-else Задание
- •Пример 1
- •Пример 2
- •Организация повторения программы
- •Выполнение программы в пошаговом режиме
- •Задание для самостоятельного выполнения
- •Часть 2 Ветвление в программе с помощью оператораswitch
- •Задание для самостоятельного выполнения
- •Лабораторная работа №2
- •Программа, которая проверяет, является ли число простым
- •Программа, которая проверяет, является ли число палиндромом
- •Часть 2 Программы, использующие рекуррентные соотношения
- •Программа, которая находит числа Фибоначчи в заданном диапазоне.
- •Программа, которая находит значение квадратного корня из заданного числа, используя рекуррентное соотношение:
- •Программа, которая вычисляет сумму рядас заданной точностью.
- •Пример – программа, которая вычисляет сумму рядадля заданного количества слагаемых.
- •Задания для самостоятельного выполнения
- •Лабораторная работа № 3 Тема: “Программы, использующие вспомогательные функции”.
- •1. Программа, которая считывает координаты вершин треугольника на плоскости и находит все углы этого треугольника в градусах.
- •2. Программа, которая находит заданное количество чисел, содержащих цифру 3
- •3. Программа, которая находит на заданном отрезке натуральные числа, которые можно представить в виде суммы квадратов двух натуральных чисел.
- •Программа, которая находит первое автоморфное число справа от заданного.
- •6. Программа для вычисления биноминальных коэффициентов
- •Задания для самостоятельного выполнения
- •Лабораторная работа № 4 Тема: “Программы, использующие строки символов ”.
- •Программа, которая считывает строку символов и сортирует ее по возрастанию кодов символов
- •Программа перевода числа из десятичной системы счисления в двоичную
- •Первый вариант (с использованием указателя)
- •Программа перевода числа из двоичной системы в десятичную
- •Программа перевода числа из 16-ой системы счисления в 2-ую.
- •Программа перевода числа из 2-ой системы счисления в 16-ую.
- •Программа, которая выводит на экран треугольник Паскаля (треугольник биноминальных коэффициентов)
- •Задания для самостоятельного выполнения
- •Лабораторная работа № 5 Тема: “Программы, использующие файлы ”.
- •Программа, которая считывает имя файла, открывает его и подсчитывает количество скобок каждого вида, содержащихся в файле.
- •Программа, инвертирующая файл (переставляющаясимволыв обратном порядке)
- •Программа выводит на экран n-ую строку файла
- •Программа, которая переписывает текст из одного файла в другой, удаляя лишние пробелы между словами и делая ширину текста максимум 70 символов
- •5. Программа, которая считывает текст файла и создает новый файл, заменив во всем тексте заданное слово на новое (не изменяя деление на строки и количество пробелов между словами)
- •6. Программа, которая считывает данные для структуры Man из файла.
- •Задания для самостоятельного выполнения
- •Лабораторная работа № 6 Тема: “Программы, использующие массивы ”.
- •Программа заполняет массив a(50) случайными целыми числами из диапазона [-20, 30] и упорядочивает его по возрастанию. Исходный и упорядоченный массивы выводятся на экран дисплея.
- •Программа, которая по заданным корням многочлена степениnвосстанавливает все коэффициенты многочлена.
- •Программа считывает линейный массив из файла, выводит его на экран, и подсчитывает количество элементов массива, находит min и max элементы и их индексы.
- •Программа заполняет массив a[5][5] случайными целыми числами из диапазона [-3, 3] и находит произведение элементов, стоящих на побочной диагонали.
- •Программа считывает матрицу из файла, выводит ee на экран, сортирует элементы в каждом столбце и отсортированную матрицу записывает в файл.
- •Программа, сортирующая файл по длине строки методом быстрой сортировки.
- •Задания для самостоятельного выполнения
- •Лабораторная работа № 7 Тема: “Программы, использующие динамические структуры”.
- •Программа, которая создает очередь символов.
- •Программа, которая создает закольцованный список и затем последовательно удаляет из списка каждыйm-й элемент до тех пор, пока не будут удалены все.
- •Программа, которая работает со стеком.
- •Программа, которая работает с деревом.
- •Задания для самостоятельного выполнения
Задание для самостоятельного выполнения
Напишите программу, которая считывает с клавиатуры число типа double, затем символ, обозначающий знак операции (+ - * / % ^) и второе число типаdouble. С помощью оператораswitchорганизуйте проверку символа и выполнение соответствующей операции для заданных чисел (если это возможно). Знак ^ используйте для обозначения возведения в степень. Возведение в степень вCвыполняется функциейpow(x,y),которая возводитxв степеньy. Для того, чтобы использовать эту функцию, не забудьте вставить в начало файла#include <math.h>
Организуйте повторение всей программы до нажатия клавиши <Esc>.
Продемонстрируйте результаты своей работы преподавателю.
Лабораторная работа №2
Тема: “Программы, использующие команды повторения (циклы). Рекуррентные соотношения“
Часть 1
Программы, работающие с натуральными числами
Наберите одну из трех нижеследующих программ (комментарии набивать не нужно), подберите тестовые исходные данные и выполните программу в пошаговом режиме. Остальные программы внимательно просмотрите и запомните реализованные в них алгоритмы.
Программа, которая находит наибольший общий делитель двух натуральных чиселmиn
В программе реализован алгоритм Евклида нахождения НОД: пока числа не равны, заменять большее число на разность большего и меньшего, затем взять любое из получившихся чисел в качестве ответа.
m |
n |
12 |
16 |
12 |
4 |
8 |
4 |
4 |
4 |
НОД(12,16) = 4
#include<iostream>
#include <math.h>
#include <conio.h>
#include <windows.h>
using namespace std
int main()
{
//Настройки шрифтов и региональных стандартов:
if(SetConsoleCP(1251)==0)
//проверка правильности установки кодировки символов для ввода
{
cerr<<"Fialed to set codepage!"<<endl;
}
if(SetConsoleOutputCP(1251)==0)//тоже самое для вывода
{
cerr<<"Failed to set OUTPUT page!"<<endl;
}
long m, n, nod;
/* Выполним проверку исходных данных: оба числа должны быть > 0; */
/* для проверки исходных данных используется цикл do, поскольку тело цикла должно выполнится хотя бы один раз */
do
{
cout<<"Введите 2 натуральных числа ";
cin >> m >> n;
} while (m < 1 || n < 1);
// алгоритм Евклида:
/* используем цикл while потому, что при равенстве введенных чисел тело цикла не должно выполниться ни разу */
while (m != n) // пока числа не равны
if (m > n) m -= n;
// заменяем большее число на разность большего и меньшего
else n -= m; //
nod = m; // берем любое число в качестве ответа
cout<<"НОД этих чисел= "<< nod << endl;
// выводим ответ на экран
_getch();
return 0;
}
Программа, которая проверяет, является ли число простым
Простым называется число, которое делится только на себя и на единицу. Для того чтобы проверить, является ли число простым, проверим все возможные делители, отличные от 1 и самого числа. Первый делитель числа n находится на отрезке от 2 до , если на этом отрезке нет делителей, значит число - простое.
#include<iostream>
#include <math.h>
#include <conio.h>
#include <windows.h>
using namespace std;
int main()
{
//Настройки шрифтов и региональных стандартов
if(SetConsoleCP(1251)==0)
{
cerr<<"Fialed to set codepage!"<<endl;
}
if(SetConsoleOutputCP(1251)==0)//тоже самое для вывода
{
cerr<<"Failed to set OUTPUT page!"<<endl;
}
double x;
char flag = 1;
/* проверим, что задано натуральное число, т.е. целое и больше 0:
используем сначала число x типа double, которое может иметь дробную часть,и если задано число, которое <= 0 или не целое, или его нельзя преобразовать к целому типу, будем повторять ввод */
do
{
cout<<"Введите натуральное число <= 4e9 --> ";
cin >> x;
} while (x <= 0 || (unsigned long)x != x || x > 4e9 );
unsigned long n = x; //преобразуем число x в число n целого типа
/* поищем первый делитель; для поиска используем цикл for, поскольку счетчик цикла i можно использовать в качестве очередного проверяемого делителя: */
for (unsigned long i = 2; i <= sqrt(x); i++)
{
if (n % i == 0) // если n делится на i
{
flag=0;/* отмечаем с помощью специальной переменной (флажка), что делитель найден */
break; // и прерываем выполнение цикла
}
}
if (flag) cout<< n<<" - простое число\n";
// в зависимости от значения флажка выводим ответ
else cout << n<<" - не простое число\n";
_getch();
return 0;
}