
- •Введение
- •Лабораторная работа №1
- •Лабораторная работа №2 Задача 1
- •Лабораторная работа №3 Задача 1
- •Лабораторная работа №4
- •Задача 3
- •Лабораторная работа №5
- •Лабораторная работа №6
- •Лабораторная работа №7
- •Лабораторная работа №8-10
- •Лабораторная работа №11 Задача 1
- •Лабораторная работа №12
- •Лабораторная работа №14
- •Лабораторная работа №15
- •Лабораторная работа №16
- •Лабораторная работа №17
- •Заключение:
Лабораторная работа №15
Постановка задачи:
Дан массив размера N. Возвести в квадрат все его локальные минимумы (то есть числа, меньшие своих соседей).
Тест:
Входные данные: |
Выходные данные: |
нет |
нет |
Листинг программы:
#include <iostream>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
using namespace std;
int main()
{
setlocale(LC_ALL,"Russian");
cout<<"Введите число N: ";
int N;
cin>>N;
int A[100],B[100];
srand(time(NULL));//randomize
cout<<"\nСгенерированный массив: ";
for (int i = 0; i < N; i++)
{
A[i] = rand() % 50;
cout<<A[i]<<" ";
}
bool flag = false;
int j = 0;
for (int i = 1; i < N-1; i++)
{
if ((A[i-1] > A[i])&&(A[i+1] > A[i]))
{
cout<<"\n\nЛокальный минимум: ";
cout<<A[i]<<", индекс: "<<i+1;
flag = true;
B[j] = i;
j++;
}
}
cout<<"\n\nСформированный массив: ";
for (int i = 0; i < N; i++)
{
for (int k = 0; k < j; k++)
{
if(B[k] == i)
A[i] *= A[i];
}
cout<<A[i]<<" ";
}
%//взятие остатка
if (!flag)
{
cout<<"Локальный минимум не найден!!!";
}
getch();
return 0;
}
Блок-схема:
Скриншот:
Рис 34.
Лабораторная работа №16
Постановка задачи:
Дан адрес P 1 записи типа TNode, содержащей поле Data (целоготипа) и поле Next (типа PNode — указателя на TNode). Эта запись связана полем Next со следующей записью того же типа. Вывести значения полей Data обеих записей, а также адрес P 2 следующей записи
Тест:
Входные данные: |
Выходные данные: |
нет |
нет |
Листинг программы:
#include <iostream>
#include <time.h>
#include <stdlib.h>
using namespace std;
typedef struct TNode
{
int Data;
TNode* Next;
} *PNode;
int main()
{
setlocale(LC_ALL,".1251");
srand(time(NULL)); чисел
PNode P1 = new TNode;
PNode P2 = new TNode;
P1 -> Data = rand() % 50;
P1 -> Next = P2; //
P2 -> Data = rand() % 50; P2 -> Next = P1;
cout << "Переменная P1:\n\taдрес: " << P1 << "\n\tполе Data: " << P1 -> Data << "\n\tполе Next: " << P1 -> Next;
cout << "\n\nПеременная P2:\n\taдрес: " << P2 << "\n\tполе Data: " << P2 -> Data << "\n\tполе Next: " << P2 -> Next;
return 0;
}
Блок-схема:
Скриншот:
Рис 35.
Лабораторная работа №17
Постановка задачи:
Создать программу позволяющую работать с обьектом(-и) класса по определенной предметной области. В моем случае я выбрал электронный журнал.
Тест:
Входные данные: |
Выходные данные: |
нет |
нет |
Листинг программы:
#include <iostream>
#include <windows.h>
#include <vector>
using namespace std;
typedef struct Score
{
string Pupil;
string Subject;
int Score;
};
class Electronic_Journal
{
protected:
vector<string> Pupils;
vector<string> Subjects;
vector<Score> Scores;
public:
Electronic_Journal()
{
int op;
do
{
system("cls");
setlocale(LC_ALL,".1251"); cout << "Электронный дневник\n\nВыберите действие:\n\n\t1. Просмотр журнала\n\t2. Добавить оценку\n\t3. Добавить ученика\n\t4. Добавить предмет\n\t5. Выйти\n\n> ";
cin >> op;
switch (op)
{
case 1: View_Journal(); break;
case 2: Add_Score(); break;
case 3: Add_Pupil(); break;
case 4: Add_Subject(); break;
}
cout << endl;
system("pause");
} while (op != 5);
}
void View_Journal()
{
bool flag;
system("cls");
setlocale(LC_ALL,".1251"); cout << "Электронный журнал\n\n";
setlocale(LC_ALL,".866");
for (int i = 0; i < Pupils.size(); i++)
{
cout << Pupils[i] << endl;
for (int j = 0; j < Subjects.size(); j++)
{
flag = false;
for (int k = 0; k < Scores.size(); k++)
{
if ((Scores[k].Pupil == Pupils[i]) && (Scores[k].Subject == Subjects[j]))
{
if (!flag)
{
cout << "\n\t" << Subjects[j] << ": ";
flag = true;
}
cout << Scores[k].Score << " ";
}
}
if (flag) cout << "\n";
}
cout << "\n\n";
}
}
void Add_Pupil()
{
string buffer;
system("cls");
setlocale(LC_ALL,".1251"); cout << "Добавление ученика\n\n\tФИО: ";
setlocale(LC_ALL,".866"); cin.ignore(); getline(cin, buffer);
Pupils.push_back(buffer);
}
void Add_Subject()
{
string buffer;
system("cls");
setlocale(LC_ALL,".1251"); cout << "Добавление предмета\n\n\tНазвание: ";
setlocale(LC_ALL,".866"); cin.ignore(); getline(cin, buffer);
Subjects.push_back(buffer);
}
void Add_Score()
{
string FIO, Subj;
Score newScore;
int i;
system("cls");
setlocale(LC_ALL,".1251"); cout << "Добавление оценок\n\n";
cout << "\tВведите ФИО: "; setlocale(LC_ALL,".866"); cin.ignore(); getline(cin, FIO);
for (i = 0; i < Pupils.size(); i++)
{
if (Pupils[i] == FIO) break;
}
if (i != Pupils.size())
{
setlocale(LC_ALL,".1251"); cout << "\n\tВведите предмет: ";
setlocale(LC_ALL,".866"); getline(cin, Subj);
for (i = 0; i < Subjects.size(); i++)
{
if (Subjects[i] == Subj) break;
}
if (i != Subjects.size())
{
setlocale(LC_ALL,".1251"); cout << "\n\tВведите оценку: ";
cin >> newScore.Score;
newScore.Pupil = FIO;
newScore.Subject = Subj;
Scores.push_back(newScore);
}
else
{
setlocale(LC_ALL,".1251"); cout << "Вы ввели некорректные данные";
}
}
else
{
setlocale(LC_ALL,".1251"); cout << "Вы ввели некорректные данные";
}
}
};
int main()
{
Electronic_Journal* myJournal = new Electronic_Journal();
return 0;
}
Блок-схема:
Скриншот:
Рис 36.