Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Портфолио Шимбирёв.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.53 Mб
Скачать

Лабораторная работа №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.