- •Лабораторная работа №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-й элемент до тех пор, пока не будут удалены все.
- •Программа, которая работает со стеком.
- •Программа, которая работает с деревом.
- •Задания для самостоятельного выполнения
Пример 1
В качестве первого примера рассмотрим программу, которая считывает два числа и находит частное от деления первого числа на второе. Программа сопровождается комментариями, которые начинаются со знака //.
Наберите текст программы (комментарии набивать не нужно!). Команды языка С++ должны заканчиваться точкой с запятой.
// С помощью команды #include подключаются дополнительные // библиотеки:
#include <iostream> // обеспечивает потоковый ввод-вывод
#include <windows.h> // обеспечивает использование русских букв
using namespace std; // определяет пространство имен
int main()// выполнение программы всегда начинается с этой строчки
// команды программы всегда пишут внутри блока (внутри фигурных // скобок)
{
SetConsoleCP(1251); // подключаем кодовую страницу CP 1251
SetConsoleOutputCP(1251); // то же для вывода
cout << "Задайте два числа "; // выводим текст на экран
double a, b, c; // объявляем переменные
cin >> a >> b;
// считываем два числа (при вводе числа должны разделяться пробелами)
if (b) // если b не равно 0
{
c = a / b;
// находим частное (присваивание выполняется справа налево
cout << "Их частное: " << c << endl;
// выводим результат на экран
}
else
// в противном случае (если b равно 0), выводим сообщение об ошибке // в данных
cout << "Второе число должно быть не равно 0\n";
return 0; // программа должна заканчиваться этой командой
}
//============================================================
Запустите программу, нажав <Ctrl> + <F5>. В появившемся окне нажмите Yes. Скорее всего сначала Вы увидите сообщения об ошибках (но если вы ВНИМАТЕЛЬНО!!! набирали, ошибок НЕ будет). Исправляя ошибки, нужно начинать с первой, поскольку ошибки могут быть наведенными, т.е. одна ошибка может повлечь за собой множество сообщений. Нажмите <F8>, исправьте ошибку в выделенной строке и опять нажмите <F8>. Повторяйте эти действия, пока программа не запустится.
ВАЖНО!!! Для того, чтобы вы могли работать с русскими символами, необходимо при первом запуске вашего приложения правой клавишей мыши щелкнуть на заголовке консольного окна. Затем выбрать пункт выпадающего меню Умолчания, перейти на вкладку Шрифт и выбрать там шрифт Lucida Console и нажмите OK. На вопрос хотите ли вы применить эти свойства только к текущему окну или ко всем окнам с тем же именем выберете, применить ко всем окнам с тем же именем.
Задайте какие-либо исходные данные и получите ответ.
Пример 2
В качестве второго примера возьмем программу решения уравнения для любых a, b, c. Известно, что решением этого уравнения являются , где d = b2 - 4ac при . Хорошая программа должна выдавать ответ в любом случае, поэтому мы должны рассмотреть все возможные варианты ответа. Если , то наша программа будет решать квадратное уравнение, в противном случае – линейное. В каждом из этих случаев должен быть выдан один из трех вариантов ответа, следовательно, всего эта программа должна выдавать один из шести вариантов сообщений.
Наберите нижеследующий текст программы. Обязательно делайте отступы, используя клавишу <Tab>. Это делает структуру программы более понятной.
ВАЖНО!!! Для того, чтобы вы могли работать с русскими символами, необходимо при первом запуске вашего приложения правой клавишей мыши щелкнуть на заголовке консольного окна. Затем выбрать пункт выпадающего меню Умолчания, перейти на вкладку Шрифт и выбрать там шрифт Lucida Console и нажмите OK. На вопрос хотите ли вы применить эти свойства только к текущему окну или ко всем окнам с тем же именем выберете, применить ко всем окнам с тем же именем.
#include <iostream> //!!! Потоковый ввод/вывод
#include <math.h>
#include <windows.h>
using namespace std;
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
cout<<"Программа решает уравнение вида A*x*x + B*x + C = 0\n";
cout<<"Введите A,B,C, разделяя их пробелом ";
double a=0,b=0,c=0,x1=0,x2=0;
cin >> a >> b >> c;
if ( a != 0 ) // Решение квадратного уравнения:
{
double d = b*b - 4*a*c;
//формула вычисления дискриминанта
if ( d > 0 )
{
x1 = (-b + sqrt(d)) / (2*a);
x2 = (-b - sqrt(d)) / (2*a);
cout << "Уравнение имеет два корня: " << x1 <<" и "<< x2 << endl;
}
else if ( d == 0 )
{
x1=(-b) / (2*a);
cout<<"Уравнение имеет один корень: " << x1 << endl;
}
else
cout<<"Действительных корней нет\n";
}
else // Решение линейного уравнения b*x + c = 0:
{
if (b) // Если b != 0
{
x1 = -c / b;
cout<<"Уравнение имеет один корень: " << x1 << endl;
}
else if (!c) // Если с == 0
cout<<"Решением уравнения является любое число \n";
else
cout<<"Уравнение не имеет решений\n";
}
return 0;
}