- •Лабораторная работа №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-й элемент до тех пор, пока не будут удалены все.
- •Программа, которая работает со стеком.
- •Программа, которая работает с деревом.
- •Задания для самостоятельного выполнения
Лабораторная работа № 7 Тема: “Программы, использующие динамические структуры”.
Программа, которая создает очередь символов.
#include<iostream>
#include<iomanip>
#include<math.h>
#include<conio.h>
#include<String.h>
#include<ctype.h>
#include <stdlib.h>
#include<windows.h>
using namespace std;
// структура, которая описывает один узел:
struct Node
{
char data; // элемент данных
Node* next; // указатель на следующий узел
};
int main()
{
if(SetConsoleCP(1251)==0)
{
cerr<<"Fialed to set codepage!"<<endl;
}
if(SetConsoleOutputCP(1251)==0)
{
cerr<<"Failed to set OUTPUT page!"<<endl;
}
// Указатели на первый, текущий и предыдущий узел:
Node *firstPt=NULL, *token=NULL, *prev=NULL;
cout<<"Введите строку символов \n";
char ch, flag=1;
// создаем очередь:
do
{
ch = _getche(); // считываем символ с клавиатуры
token = new Node; // выделяем место под текущий узел
token->data = ch; // записываем элемент данных
token->next = NULL; // указатель на следующий элемент равен 0
if (flag) // если создан первый узел
{
firstPt = token; flag = 0; // запоминаем его адрес
}
else prev -> next = token;
// в противном случае запоминаем в ранее созданном узле адрес нового узла
prev = token; // текущий узел становится предидущим
} while (ch != '\r'); // пока не будет нажата клавиша <Enter>
cout<<endl;
//Вывод:
cout <<"Очередь:\n";
token = firstPt; // адрес первого узла
while (token) // пока указатель на текущий узел не равен 0
{
cout<<token -> data; // выводим элемент данных
token = token->next; // переходим к следующему узлу
}
cout <<endl;
_getch();
return 0;
}
Программа, которая создает закольцованный список и затем последовательно удаляет из списка каждый m-й элемент до тех пор, пока не будут удалены все.
#include<iostream>
#include<iomanip>
#include<conio.h>
#include<String.h>
#include<ctype.h>
#include<stdlib.h>
#include<windows.h>
using namespace std;
// структура, которая описывает один узел:
struct Node
{
int num;
Node* ptr;
};
// функция, которая добавляет 1 элемент в список:
void Add(Node*& pLast, int i)
/* первый параметр – ссылка на указатель, который будет хранить адрес последнего добавленного элемента, второй параметр – значение элемента данных, которое будет записано в этот узел */
{
Node* pNext = new Node; // выделяем место под новый узел
if (pLast) pLast -> ptr = pNext;
// если предыдущий узел существует, подсоединяем новый узел к предыдущему
pNext -> num = i; // записываем элемент данных
pNext -> ptr = NULL;
// указатель, записанный в последнем узле пока никуда не указывает
pLast = pNext; // новый узел становится последним
}
// -----------------------------------------------------------
// функция, которая удаляет узел с номером m:
int Del(Node*& pToken, int m)
// первый параметр – адрес текущего узла
{
int n; // элемент данных из удаляемого узла
if (pToken->ptr != pToken) // если узел - не единственный
{
// Отсчет:
for (int i = 1; i < m; i++)
pToken = pToken->ptr; // переходим к следующему узлу
//Адрес удаляемого элемента:
Node* tmp = pToken->ptr;
n = tmp->num; // запоминаем значение элемента данных
pToken->ptr = tmp->ptr;
// запоминаем в узле перед удаляемым адрес узла, который расположен за удаляемым
delete tmp; // удаляем узел
}
else // если узел – единственный, просто удаляем его
{
n = pToken -> num;
delete pToken;
pToken = NULL;
}
return n;
}
//------------------------------------------------------------
int main()
{
if(SetConsoleCP(1251)==0)
{
cerr<<"Fialed to set codepage!"<<endl;
}
if(SetConsoleOutputCP(1251)==0)
{
cerr<<"Failed to set OUTPUT page!"<<endl;
}
do
{
int n, m;
do
{
cout << "Задайте начальное количество элементов >=1 --> ";
cin >> n;
} while (n < 1);
do
{
cout << "Задайте номер удаляемого элемента от 1 до "<< n << " --> ";
cin >> m;
} while ( m < 1 || m > n);
// Указатели на начало и конец списка:
Node *pBegin = NULL, pLast = NULL;
//Формирование списка:
for (int i = 1; i <= n; i++)
{
Add(pLast, i);
if (i == 1) pBegin = pLast;
}
// Закольцуем список:
pLast->ptr = pBegin;
//Занимаем начальную позицию:
Node* pToken = pLast;
// Удаление:
do
{
cout<<"" << Del(pToken, m) << ' ';
} while (pToken);
cout << endl;
cout << "\nНажмите любую клавишу\n";
} while (_getch()!=27);
return 0;
}