- •Лабораторная работа №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-й элемент до тех пор, пока не будут удалены все.
- •Программа, которая работает со стеком.
- •Программа, которая работает с деревом.
- •Задания для самостоятельного выполнения
Программа выводит на экран n-ую строку файла
Программа иллюстрирует чтение данных из файла построчно.
#include<iostream>
#include<locale> //!!! Отвечает за работу с локализацией ОС
#include<iomanip>
#include<math.h>
#include<conio.h>
#include<String.h>
#include<ctype.h>
#include <stdlib.h>
#include<windows.h>
#include <fstream> // Этот файл обеспечивает работу с файлами
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;
}
ifstream inf; // Объявляем файл для чтения
char name[21]; // имя файла
char str[81]; // строка для чтения данных из файла
do // повторение программы до нажатия клавиши <Esc>
{
cout << "Задайте имя файла ";
cin >> name;
inf.open(name);
if (!inf) // Если файл не открыт
{
cout<<"Файл не найден\n";
}
else
{
int k = 0; // счетчик прочитанных строк
while ( !inf.eof() ) // пока файл не закончен
{
inf.getline(str,80);
// считываем одну строку файла
k++; // увеличиваем счетчик строк
cout << str << endl;
if ( (k+1) % 23 == 0 )
// выводим текст на экран по 23 строки
{
cout<< "Нажмите любую клавишу";
_getch(); /* при нажатии любой клавиши выводится очередная часть текста */
}
}
int n; // номер строки, которую нужно вывести на экран
inf.seekg(0L, ios::beg); // возвращаемся в начало файла
inf.clear(); // сбрасываем признак конца файла
do
{
cout<<"Введите номер строки от 1 до "<< k << " ";
cin>>n;
}while ( n>k || n<1 );
for (int i=1; i<=n; i++)
inf.getline(str,80);
cout<<str<<endl; /* последнюю считанную строку выводим на экран */
}
inf.close(); /* если открытие файла повторяется, значит файл должен закрываться */
} while (_getch() !=27);
return 0;
}
Обратите внимание на то, что чтение файла осуществляется последовательно: чтобы прочитать n-ую строку файла, необходимо прочитать предыдущие (n-1) строк. Это вызвано тем, что строки разной длины и мы не можем определить, где начинается каждая строка. Решением проблемы может быть предварительное чтение файла с записью в массив позиции каждой строки. Работу с массивами мы будем разбирать в следующей лабораторной работе.
Программа, которая переписывает текст из одного файла в другой, удаляя лишние пробелы между словами и делая ширину текста максимум 70 символов
Программа иллюстрирует чтение данных из файла словами (словом называется последовательность символов, не содержащая внутри себя пробелов и отделенная от других слов пробелами или пробельными символами типа табуляции). При таком чтении файла все управляющие символы рассматриваются как разделители между словами и деление на строки теряется.
#include<iostream>
#include<iomanip>
#include<math.h>
#include<conio.h>
#include<String.h>
#include<ctype.h>
#include <stdlib.h>
#include<windows.h>
#include <fstream> // Этот файл обеспечивает работу с файлами
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;
}
ifstream inf("test.txt"); // Объявляем файл для чтения
fstream outf("rez.txt",ios::out);
// создаваемый файл (можно использовать как для записи, так и для чтения)
char str[81]; // строка для чтения нового файла
char slovo[71]; // 1 слово, считываемое из файла
char rez[81]; // строка для записи в новый файл
rez[0] = '\0'; // делаем строку пустой
if (!inf) // если файл не открыт
cout<<"Файл не найден \n";
else
{
byte flag = 0; // признак первого слова
cout << "Исходный файл:\n";
while (!inf.eof()) // пока не конец файла
{
inf >> slovo ; // считывем слово из файла
cout<<slovo<< ' '; // выводим его на экран
if (strlen(rez)+strlen(slovo)+1<=70 && strlen(slovo))
/* если длина строки после добавления к ней нового слова не превысит 70 и слово не пустое */
{
if (flag) strcat(rez," ");
// если слово - не первое, добавляем пробел
strcat(rez,slovo); // добавляем слово
flag = 1; // в строке уже есть слово
}
else // если строка уже длинная
{
outf << rez << endl; // записываем ее в файл
*rez = '\0'; // строку делаем опять пустой
strcpy(rez,slovo); // копируем в нее слово
}
} //end while
if (*rez) outf << rez << endl;
// если последняя строка – не пустая, записываем ее в файл
outf.close(); // создаваемые файлы нужно закрывать
cout <<"\n\nНажмите любую клавишу \n";
_getch();
outf.open("rez.txt",ios::in);
// открываем созданный файл для чтения
cout << "\nНовый файл:\n";
while( !outf.eof()) // пока не конец файла
{
outf.getline(str,80); // считываем строку
cout << str << endl; // выводим ее на экран
}
}
_getch();
return 0;
}