- •Часть 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-й элемент до тех пор, пока не будут удалены все.
- •Программа, которая работает со стеком.
- •Программа, которая работает с деревом.
- •Задания для самостоятельного выполнения
Программа перевода числа из 2-ой системы счисления в 16-ую.
В этом примере перевод выполняется по таблице, в которой каждой четверке двоичных цифр соответствует одна шестнадцатеричная.
В программе используется структура TableString, описывающая одну строку таблицы.
#include <iostream>
#include <iomanip>
#include <math.h>
#include <conio.h>
#include <string>
#include <ctype.h>
#include <windows.h>
using namespace std;
struct TableString
{
char hex; // 16-ая цифра
char bin[5];
// строка, содержащая четверку 2-х цифр (строка заканчивается ‘\0’)
};
int main()
{
if(SetConsoleCP(1251)==0)
{
cerr<<"Fialed to set codepage!"<<endl;
}
if(SetConsoleOutputCP(1251)==0)
{
cerr<<"Failed to set OUTPUT page!"<<endl;
}
char ch; // используется для посимвольного ввода
int n=0, k=0 ; // счетчики символов
char hex[21]; // 16-е число
char bin[81]; // 2-е число
char zero[81]; // строка, в начале которой будет записан ‘0’
char tmp[5];
// сюда будет копироваться четверка двоичных цифр из строки bin
strcpy(zero,"0"); // записываем ноль в начало строки
cout<<"Введите 2-ое число: \n";
while ( ( ch=_getch() ) != '\r') // пока не нажата клавиша <Enter>
{
if ( (ch=='0'||ch=='1') && k < 79) // если введена 2-я цифра
{
cout<<ch; bin[k++]=ch;
// Выводим ее на экран и записываем в строку
}
else if (ch == '\b' && k > 0 )
// стирание последнего введенного символа
{
cout<<"\b \b";
k--;
}
} //end while
bin[k]=0; hex[n]=0; cout << endl;
//делаем длину строки кратной 4:
while(strlen(bin)%4)
{
strcpy(bin,strcat(zero,bin)); /* складываем строку, содержащую ‘0’, с bin, затем полученную сумму копируем в bin, в результате в начало bin добавляется ‘0’ */
strcpy(zero,"0"); /* восстанавливаем zero, она должна содержать только 1 ноль*/
}
Cout << bin << endl; // проверим, что получилось
// Перевод:
TableString table[16] = { {'0', "0000"}, /* обратите внимание на то, как инициа// лизируется массив структур */
{'1', "0001"}, {'2', "0010"},
{'3', "0011"},
{'4', "0100"},
{'5', "0101"},
{'6', "0110"},
{'7', "0111"},
{'8', "1000"},
{'9', "1001"},
{'A', "1010"},
{'B', "1011"},
{'C', "1100"},
{'D', "1101"},
{'E', "1110"},
{'F', "1111"} };
// проходим по 2-му числу, обрабатывая по 4 цифры:
for (int i=0; i<strlen(bin); i+=4)
{
strncpy(tmp,bin+i,4); // копируем очередные 4 цифры в tmp
tmp[4] = '\0'; // strncpy() признак конца строки не записывает
for (int j=0; j<16; j++) // выполняем поиск в таблице
if (!strcmp(table[j].bin,tmp)) // если strcmp() вернула 0, значит tmp совпала с i-ой строкой таблицы
{
hex[n++]=table[j].hex; /* копируем 16-ю цифру из таблицы в строку hex */
break;
}
}
hex[n] = '\0';
cout<<"Соответствующее 16-ое число = \n";
cout<<hex<<endl;
_getch();
return 0;
}
Программа, которая выводит на экран треугольник Паскаля (треугольник биноминальных коэффициентов)
Программа иллюстрирует применение строк для центрирования по горизонтали при выводе результата
#include<iostream>
#include<windows.h>
#include<iomanip>
#include<math.h>
#include<conio.h>
#include<string>
#include<ctype.h>
#include <stdlib.h>
using namespace std
/* Для вычисления каждого биноминального коэффициента используем рекурсивную функцию из Лаб. работы №3.*/
int C(int m, int n)
{
if (m == 0 || m == n)
return 1;
else return C(m,n-1)+C(m-1, n-1);
}
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; // количество строк треугольника
do
{
Cout << "Задайте число строк >0 и <=17 --> ";
/* при k > 17 треугольник не уместится на экране */
Cin >> k;
} while (k<1 || k>17);
int y = 3;
// Номер строки, начиная с которой будет выводится треугольник
char str[81], tmp[11];
// строка для вывода на экран и строка для хранения числа
for (int n=0; n < k; n++) // идем по строкам треугольника Паскаля
{
str[0] = '\0';
for (int m=0; m<=n; m++)
// вычисляем коэффициенты в одной строке
{
itoa(C(m,n), tmp, 10);
// делаем из коэффициента строку tmp
strcat(str, tmp);
// добавляем строку tmp в строку str
strcat(str, " "); // разделяем числа пробелами
}
int x = 41-strlen(str)/2; /* определяем, с какой позиции в строке экрана должна начинаться выводимая строка треугольника Паскаля */
for(int i=0; i<x; i++)
cout<<" ";
cout << str << endl; /* выводим строку с заданной позиции (строка центрирована по горизонтали) */
y++; // переходим к следующей строке экрана
}
_getch();
return 0;
}