- •Лабораторная работа №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-й элемент до тех пор, пока не будут удалены все.
- •Программа, которая работает со стеком.
- •Программа, которая работает с деревом.
- •Задания для самостоятельного выполнения
5. Программа, которая считывает текст файла и создает новый файл, заменив во всем тексте заданное слово на новое (не изменяя деление на строки и количество пробелов между словами)
#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;
// Функция, которая будет выполнять команду “Заменить”
void Replace (char*& str, char* olds,char *news)
/* параметрами функции являются ссылка на указатель, который хранит адрес строки, слово, которое нужно заменить, и новое слово.
Функция будет изменять указатель (адрес строки) */
{
char* rez = new char[2*strlen(str)];
/* новая строка; длина строки может увеличиться в результате замены, поэтому выделим память в 2 раза больше, чем длина исходной строки */
unsigned char slovo[31]; // 1 слово из строки
unsigned char *s = reinterpret_cast<unsigned char*>(str), *r = reinterpret_cast<unsigned char*>(rez), *sl; /* указатели, с помощью которых мы будем двигаться по строке и обрабатывать символ за символом */
while (*s) // пока не достигнут конец строки
{
sl = slovo;
// устанавливаем указатель sl на область памяти для хранения слова
while ( *s > 0 && *s <= ' ') *r++ = *s++;
// Скопировали в результирующую строку пробелы
while ( *s > ' ' && *s < 1<<8 ) *sl++ = *s++;
// Скопировали слово
*sl = '\0'; // записали признак конца слова
if (strcmp(reinterpret_cast<char*>(slovo), olds))
// Если очередное слово не нужно заменять
sl = slovo;
// устанавливаем указатель sl на считанное слово
else
sl = reinterpret_cast<unsigned char*>(news);
// иначе на новое слово
while (*sl) *r++ = *sl++;
// копируем то или иное слово в результирующую строку
}
*r = '\0'; // записываем признак конца строки
delete []str; // удаляем из памяти старую строку
str = rez; // теперь указатель str хранит адрес новой строки
}
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 = new char[81] ; // строка для чтения файла
if (!inf)
cout<<"Файл не найден \n";
else
{
while (!inf.eof()) // пока не конец файла
{
inf.getline(str,80); // считываем строку
cout<<str<<endl; // выводим ее на экран
Replace(str, "$$", "???");
// заменяем одно слово на другое
outf << str << endl; // записываем новую строку в файл
}
outf.close(); // созданный файл закрываем
// выводим полученный файл на экран:
outf.open("rez.txt", ios::in);
cout << "\nНовый файл:\n";
while( !outf.eof())
{
outf.getline(str,81);
cout<<str<<endl;
}
}
delete str;
_getch();
return 0;
}
6. Программа, которая считывает данные для структуры Man из файла.
Cтруктура должна содержать следующие поля:
пол, фамилия, имя, отчество, возраст, рост, вес, цвет глаз, цвет волос.
Набор полей, соответствующий одному человеку, должен быть записан в одну строку.
Файл должен содержать информацию о нескольких людях.
Программа должна вывести на экран сведения о всех людях, рост которых > 180 см.
Файл с данными:
м Сидоров Иван Петрович 52 185 90 карий русый
ж Иванова Анна Марковна 45 170 72 голубой блонд
м Петров Сидор Юрьевич 34 182 120 зеленый рыжий
…
Программа:
#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;
// Описание структуры:
struct Man
{
char sex; // пол
char FIO[80]; // фамилия, имя, отчество
int age; // возраст
int height; // рост
int weight; //вес
char ycolor[20]; // цвет глаз
char hcolor[20]; //цвет волос
};
int main()
{
if(SetConsoleCP(1251)==0)
{
cerr<<"Fialed to set codepage!"<<endl;
}
if(SetConsoleOutputCP(1251)==0)
{
cerr<<"Failed to set OUTPUT page!"<<endl;
}
fstream fl;
char fName[20];
cout <<"Введите имя файла ";
cin.getline(fName,20);
fl.open(fName,ios::in);
if (!fl) cout<<"Файл не найден.\n";
if (fl)
{
char str[100];
cout <<"Файл с данными: \n";
while (!fl.eof())
{
fl.getline(str,100);
cout << str << endl;
}
// Обработка данных:
fl.seekg(0L, ios::beg); // возвращаемся в начало файла
fl.clear();
Man person; /* объявляем конкретный набор данных, который будет хранить сведения об одном человеке */
char fam[40], name[40], otch[40];
for(int i=0;i<80;i++)
cout << "=";
cout << endl;
// фамилия, имя отчество как отдельные слова
char flag = 1; // признак того, что нужные данные еще не найдены
while (!fl.eof())
{
fl>>person.sex;
// начинаем считывать данные на очередного человека
if (!fl.eof()) // если файл еще не закончен
{
fl >> fam >> name >> otch;
// считываем фамилию, имя отчество
// и собираем их в одну строку FIO:
strcat(fam," ");
strcat(fam,name);
strcat(fam," ");
strcat(fam,otch);
strcpy(person.FIO,fam);
// считываем остальные данные:
fl>>person.age>>person.height >> person.weight >> person.ycolor >> person.hcolor;
if (person.height > 180)
// если считанные данные удовлетворяют условию (рост > 180)
{
if (flag) cout<<
"Люди, рост которых > 180 см:\n";
/* если найден первый человек, удовлетворяющий условию, выводим поясняющий текст */
flag = 0; // признак того, что данные найдены
// выводим найденные данные:
cout <<"пол " << person.sex <<" ФИО: " << person.FIO << endl <<"возраст: " << person.age <<" рост: " << person.height <<" вес: " << person.weight <<" цвет глаз: " <<person.ycolor <<" цвет волос: "<< person.hcolor << endl ;
} // end if
} // end if
} // end while
if (flag) cout <<"Нет сведений о людях, рост которых > 180 см.\n";
} // end if
_getch();
return 0;
}
Необходимость использования структуры в данном примере не слишком очевидна вследствие небольшого объема примера, однако в реальных задачах, работающих со множеством объектов, структуры действительно полезны.