- •Лабораторная работа №1 Тема: “Программы, использующие команды ветвления. Отладка программы“ Отладка программы
- •Часть 1 Ветвление в программе с помощью вложенных конструкций if-else Задание
- •Пример 1
- •Пример 2
- •Организация повторения программы
- •Выполнение программы в пошаговом режиме
- •Задание для самостоятельного выполнения
- •Часть 2 Ветвление в программе с помощью оператора switch
- •Задание для самостоятельного выполнения
- •Программа, которая проверяет, является ли число простым
- •Программа, которая проверяет, является ли число палиндромом
- •Часть 2 Программы, использующие рекуррентные соотношения
- •Программа, которая находит числа Фибоначчи в заданном диапазоне.
- •Программа, которая находит значение квадратного корня из заданного числа, используя рекуррентное соотношение:
- •Программа, которая вычисляет сумму ряда с заданной точностью.
- •Пример – программа, которая вычисляет сумму ряда для заданного количества слагаемых.
- •Задания для самостоятельного выполнения
- •Лабораторная работа № 3 Тема: “Программы, использующие вспомогательные функции”.
- •1. Программа, которая считывает координаты вершин треугольника на плоскости и находит все углы этого треугольника в градусах.
- •2. Программа, которая находит заданное количество чисел, содержащих цифру 3
- •3. Программа, которая находит на заданном отрезке натуральные числа, которые можно представить в виде суммы квадратов двух натуральных чисел.
- •Программа, которая находит первое автоморфное число справа от заданного.
- •6. Программа для вычисления биноминальных коэффициентов
- •Задания для самостоятельного выполнения
- •Лабораторная работа № 4 Тема: “Программы, использующие строки символов ”.
- •Программа, которая считывает строку символов и сортирует ее по возрастанию кодов символов
- •Программа перевода числа из десятичной системы счисления в двоичную
- •Первый вариант (с использованием указателя)
- •Второй вариант ( с использованием индексации)
- •Программа перевода числа из двоичной системы в десятичную
- •Программа перевода числа из 16-ой системы счисления в 2-ую.
- •Программа перевода числа из 2-ой системы счисления в 16-ую.
- •If (!strcmp(table[j].Bin,tmp)) // если strcmp() вернула 0, значит tmp совпала с I-ой строкой таблицы
- •Программа, которая выводит на экран треугольник Паскаля (треугольник биноминальных коэффициентов)
- •Задания для самостоятельного выполнения
- •Лабораторная работа № 5 Тема: “Программы, использующие файлы ”.
- •Программа, которая считывает имя файла, открывает его и подсчитывает количество скобок каждого вида, содержащихся в файле.
- •Программа, инвертирующая файл (переставляющая символы в обратном порядке)
- •Программа выводит на экран n-ую строку файла
- •Программа, которая переписывает текст из одного файла в другой, удаляя лишние пробелы между словами и делая ширину текста максимум 70 символов
- •5. Программа, которая считывает текст файла и создает новый файл, заменив во всем тексте заданное слово на новое (не изменяя деление на строки и количество пробелов между словами)
- •6. Программа, которая считывает данные для структуры Man из файла.
- •Программа создающая новый текстовый файл из двух данных, в котором 1-я строка –строка из первого файла, 2-я строка – строка из 2-го файла, 3-я строка – содержит общие символы первых 2-х строк.
- •Задания для самостоятельного выполнения
- •Лабораторная работа № 6 Тема: “Программы, использующие массивы ”.
- •Программа заполняет массив a(50) случайными целыми числами из диапазона [-20, 30] и упорядочивает его по возрастанию. Исходный и упорядоченный массивы выводятся на экран дисплея.
- •Программа, которая по заданным корням многочлена степени n восстанавливает все коэффициенты многочлена.
- •Программа считывает линейный массив из файла, выводит его на экран, и подсчитывает количество элементов массива, находит min и max элементы и их индексы.
- •Программа заполняет массив a[5][5] случайными целыми числами из диапазона [-3, 3] и находит произведение элементов, стоящих на побочной диагонали.
- •Программа считывает матрицу из файла, выводит ee на экран, сортирует элементы в каждом столбце и отсортированную матрицу записывает в файл.
- •Программа, сортирующая файл по длине строки методом быстрой сортировки.
- •Задания для самостоятельного выполнения
- •Лабораторная работа № 7 Тема: “Программы, использующие динамические структуры”.
- •Программа, которая создает очередь символов.
- •Программа, которая создает закольцованный список и затем последовательно удаляет из списка каждый m-й элемент до тех пор, пока не будут удалены все.
- •Программа, которая работает со стеком.
- •Программа, которая работает с деревом.
- •Задания для самостоятельного выполнения
Лабораторная работа № 3 Тема: “Программы, использующие вспомогательные функции”.
Наберите одну из нижеследующих программ (комментарии набивать не нужно), подберите тестовые исходные данные и выполните программу в пошаговом режиме. Остальные программы внимательно просмотрите и запомните реализованные в них алгоритмы.
1. Программа, которая считывает координаты вершин треугольника на плоскости и находит все углы этого треугольника в градусах.
Углы треугольника можно найти через площадь, поскольку .
Чтобы воспользоваться этой формулой для нахождения угла, нужно найти длины сторон треугольника.
#include<iostream>
#include<iomanip>
#include<conio.h>
#include <windows.h>
#define _USE_MATH_DEFINES
/* Это определение необходимо включать перед подключением математической библиотеки для использования математических констант */
#include <math.h>
using namespace std;
//--------------------------------------------------------------------
//функция Len, которая будет находить длину отрезка между двумя точками, // используя формулу :
double Len ( double x1, double y1, double x2, double y2)
{
return sqrt( pow(x1-x2,2) + pow(y1-y2,2) );
}
//------------------------------------------------------------
/* Следующая функция будет находить угол между двумя сторонами в градусах. В качестве аргументов функция должна получать длины двух сторон и площадь треугольника */
double Angle(double a, double b, double s)
{
double x = 2*s / (a*b); //x – это
// находим угол и переводим его в градусы
return asin(x) * 180 / M_PI;
}
//============================================================
int main()
{
if(SetConsoleCP(1251)==0
{
cerr<<"Fialed to set codepage!"<<endl;
}
if(SetConsoleOutputCP(1251)==0)
{
cerr<<"Failed to set OUTPUT page!"<<endl;
}
double x1, y1, x2, y2, x3, y3; // Координаты вершин
double a, b , c, u1, u2, u3; // Длины сторон и углы треугольника
do
{
cout<<"Введите координаты вершин треугольника: x1 y1 x2 y2 x3 y3 " ;
cin>> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
// Находим длины сторон, вызывая функцию Len()
a=Len(x1,y1,x2,y2);
c=Len(x2,y2,x3,y3);
b=Len(x1,y1,x3,y3);
/* Проверяем возможность построения треугольника: сумма любых двух сторон должна быть больше третьей стороны */
if (a+b>c && b+c>a && a+c>b)
{
cout<<"Длины сторон треугольника: " <<setprecision(2)<<a<<' '<<b<<' '<<c<<endl;
// Находим площадь треугольника по формуле Герона:
double p = (a+b+c)/2;
double s = sqrt(p*(p-a)*(p-b)*(p-c));
// Находим углы, используя функцию Angle():
u1 = Angle(a, b, s);
u2 = Angle(b, c, s);
u3 = Angle(a, c, s);
cout<<"Углы треугольника: "<<u1<<' '<<u2<<' '<<u3<< " градусов" << endl;
}
else
cout << "Треугольник вырожден\n";
} while (_getch()!=27);
return 0;
}
2. Программа, которая находит заданное количество чисел, содержащих цифру 3
#include<iostream>
#include<iomanip>
#include<math.h>
#include<conio.h>
#include<windows.h>
using namespace std;
bool hold3(long n); /* Объявляем функцию, которая будет определять, содержит ли число цифру 3. Функция будет возвращать значение истина или ложь (true или false), поэтому функция имеет тип bool. */
int main()
{
//Настройки шрифтов и региональных стандартов
if(SetConsoleCP(1251)==0)
{
cerr<<"Fialed to set codepage!"<<endl;
}
if(SetConsoleOutputCP(1251)==0) //тоже самое для вывода
{
cerr<<"Failed to set OUTPUT page!"<<endl;
}
int k=0, count = 0; /* k – количество чисел, которое нужно найти, count – количество уже найденных чисел */
cout<<"Сколько чисел нужно найти ";
cin >> k;
long n = 1; /* будем проверять все числа числового ряда, начиная c 1 */
while (count < k) /* пока заданное количество чисел не найдено, повторяем следующие действия: */
{
if (hold3(n)) // если число содержит цифру 3
{
cout<< n << " "; // выводим это число
count++; // и увеличиваем счетчик на 1
}
n++; /* берем следующее число*/
if ( n > 1000 ) break; /* если мы проверяем все числа числового ряда, мы должны помнить, что этот ряд бесконечен, а компьютер может работать только в конечном диапазоне, зависящем от типа числа. В данном примере проверяемые числа ограничены числом 1000, чтобы выводимые числа уместились на экране. */
}
if (count < k)
cout<< "Не удалось найти заданное количество чисел";
cout<< endl;
_getch();
return 0;
}
/* определение функции, которая проверяет одно число и устанавливает, содержит ли оно цифру 3: */
bool hold3(long n) // аргументом функции является число n
{
/* алгоритм проверки цифр основан на алгоритме, описанном в примере 3 лабораторной работы № 2 */
do
{
unsigned cifra = n % 10; /* Находим цифру путем вычисления остатка от деления на 10 */
if (cifra == 3) return true;
n /= 10;
} while (n);
return false;
}