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

10. Зміст робіт зі створення пз:

  • Специфікація вимог.

  • Аналіз

  • Проектування

  • Реалізація

  1. Перелік документів, які підлягають розробці: програма, технічне

завдання, звіт про виконання роботи, структури даних, блок-схема алгоритму.

  1. Перелік літератури і посилань:

Стауструп Б. П. Язык программирования С++. (Учебное пособие). – Санкт-Петербург: “БХВ Петербург”. – 2010. – 745 с.

Схематичне зображення структури даних

Блок-схема алгоритму

Код програми

#include <iostream>

#include <fstream>

#include <conio.h>

#include <cstring>

#include <Windows.h>

using namespace std;

struct InfoAboutStudent{//ошолошення структури InfoAboutStudent

char *surname;

char *name;

char *date;

int Matan, Diskr, Programuvanja, IstoriaUkraine, IstoriaKulturu;

};

struct Sesiya{//оголошення структури Sesiya

InfoAboutStudent data;

Sesiya *next;

};

Sesiya *start = new Sesiya, *CurrentVkazivnuk = new Sesiya, *NextVkazivnuk = new Sesiya;

int Quantity=0;

void swap(InfoAboutStudent *, InfoAboutStudent *);//обмін

void Sortuvanja(int); //сортування

void AddItem(); //додавання повідомлення

void displayALL(); //вивід

void Komisiya(); //комісія

void remove(int); //видалення

void main(){

setlocale(LC_ALL,"UKR");

char *Lexems[9], **strichka = new char* [15];

for(int i = 0; i < 15; i++ )//виділення пам'яті під **str

strichka[i] = new char [200];

if(!start || !CurrentVkazivnuk || !NextVkazivnuk || !Lexems || !strichka){

cout<<"Недостатньо пам'яті!";

_getch();

return;

}

ifstream file1("student.txt");

if (file1.fail()){

cerr << "Помилка читання файлу" << endl;

exit(1);

}

start = NULL;

while (!file1.eof()){

int k=0;

file1.getline(strichka[Quantity], 200);//зчитування рядка

//розбиття рядка на лексеми

Lexems[k]=strtok(strichka[Quantity],"\t");

while(Lexems[k]){

k++;

Lexems[k]=strtok(NULL,"\t");

}

CurrentVkazivnuk->data.surname=Lexems[0];

CurrentVkazivnuk->data.name=Lexems[1];

CurrentVkazivnuk->data.date=Lexems[2];

CurrentVkazivnuk->data.Matan=atoi(Lexems[3]);

CurrentVkazivnuk->data.Diskr=atoi(Lexems[4]);

CurrentVkazivnuk->data.Programuvanja=atoi(Lexems[5]);

CurrentVkazivnuk->data.IstoriaUkraine=atoi(Lexems[6]);

CurrentVkazivnuk->data.IstoriaKulturu=atoi(Lexems[7]);

if(!start)//виконається лише раз

start = CurrentVkazivnuk;

Sesiya *NextVkazivnuk = new Sesiya;

CurrentVkazivnuk->next = NextVkazivnuk;

CurrentVkazivnuk=NextVkazivnuk;

Quantity++;

}

file1.close();

delete [] strichka;

CurrentVkazivnuk->next = NULL;

displayALL();

Sortuvanja(Quantity);

cout<<"\n\nВiдбулося сортування за назвою в алфавiтному порядку.\n\n";

displayALL();

Komisiya();

char answer[4];

cout<<"\nДодати новий запис yes/no ? ";

cin>>answer;

while(1){

if(!strcmp(answer, "yes") || !strcmp(answer, "Yes") || !strcmp(answer, "YES")){

while(CurrentVkazivnuk->next)

CurrentVkazivnuk=CurrentVkazivnuk->next;

AddItem();

Sortuvanja(Quantity);

cout<<endl;

displayALL();

Komisiya();

cout<<"\nДодати новий запис yes/no ? ";

cin>>answer;

}

else if(!strcmp(answer, "no") || !strcmp(answer, "No") || !strcmp(answer, "NO"))

break;

else

cin>>answer;

}

/*cout<<"\nВилучити 3-х студентiв з найнижчим рейтинговим балом yes/no ? ";

cin>>answer;

cout<<"\nСписок без 3-х студентiв з найнижчим рейтинговим балом:\n\n";

while(1){

int k=0;//допоміжна змінна, яка вказує чи відповідь так

if(!strcmp(answer, "yes") || !strcmp(answer, "Yes") || !strcmp(answer, "YES")){

remove(Quantity);

Sortuvanja(Quantity);

displayALL();

Komisiya();

break;

}

else if(!strcmp(answer, "no") || !strcmp(answer, "No") || !strcmp(answer, "NO"))

break;

else

cin>>answer;}

*/

_getch();

}

void swap(InfoAboutStudent *a, InfoAboutStudent *b)

{

InfoAboutStudent *tmp;

tmp=b;

b=a;

a=tmp;

}

void Sortuvanja(int Quantity){

for(int j=0; j<Quantity; j++){

CurrentVkazivnuk = start;

while(1){

NextVkazivnuk = CurrentVkazivnuk;

CurrentVkazivnuk = CurrentVkazivnuk->next;

if(!NextVkazivnuk->next)

break;

int k=0;

if(NextVkazivnuk->next->next!=NULL){

while(NextVkazivnuk->data.surname[k] && NextVkazivnuk->next->data.surname[k]){

if((char)NextVkazivnuk->data.surname[k]>(char)NextVkazivnuk->next->data.surname[k]){

swap(NextVkazivnuk->data, NextVkazivnuk->next->data);

break;

}

else if((char)NextVkazivnuk->data.surname[k]==(char)NextVkazivnuk->next->data.surname[k])

k++;

else

break;

}

}

}

}

NextVkazivnuk->next = NULL;

}

void AddItem(){ //додання повідомлення

Sesiya *Pointer = new Sesiya;

short length = 50;

char *surname = new char[length];

char *name = new char[length];

char *date = new char[length];

cin.ignore();

cout<<"\nВведiть прiзвище: ";

cin.getline(surname, length);

Pointer->data.surname = surname;

cout<<"Введiть Iмя: ";

cin.getline(name, length) ;

Pointer->data.name = name;

cout<<"Введiть рiк: ";

cin.getline(date, length) ;

Pointer->data.date = date;

cout<<"Мат.аналіз: ";

cin>>Pointer->data.Matan;

cout<<"Компютерна дискретна математика : ";

cin>>Pointer->data.Diskr;

cout<<"Основи програмування : ";

cin>>Pointer->data.Programuvanja;

cout<<"Iсторія України: ";

cin>>Pointer->data.IstoriaUkraine;

cout<<"Історія культури: ";

cin>>Pointer->data.IstoriaKulturu;

Pointer->next = start;

start = Pointer;

Quantity ++;

}

void displayALL(){ //виведення даних

CurrentVkazivnuk = start;

cout<<"Прiзв\tIмя\tДата\t\tМатан\tКДМ\tОП\tIстор\tКульт\n";

while(CurrentVkazivnuk->next){

cout<<CurrentVkazivnuk->data.surname<<"\t"<<CurrentVkazivnuk->data.name<<"\t"<<CurrentVkazivnuk->data.date<<"\t"<<CurrentVkazivnuk->data.Matan<<"\t"<<CurrentVkazivnuk->data.Diskr<<"\t"<<CurrentVkazivnuk->data.Programuvanja<<"\t"<<

CurrentVkazivnuk->data.IstoriaUkraine<<"\t"<<CurrentVkazivnuk->data.IstoriaKulturu<<endl;

CurrentVkazivnuk = CurrentVkazivnuk->next;}

}

void Komisiya(){ //комісія

cout<<"\nСтуденти якi отримали 2 на iспитах\n\n";

CurrentVkazivnuk = start;

cout<<"Прiзв\tIмя\tДата\t\tМатан\tКДМ\tОП\tIстор\tКульт\n";

while(CurrentVkazivnuk->next){

if((CurrentVkazivnuk->data.Matan==2) || (CurrentVkazivnuk->data.Diskr==2) || (CurrentVkazivnuk->data.Programuvanja==2) || (CurrentVkazivnuk->data.IstoriaUkraine==2) || (CurrentVkazivnuk->data.IstoriaKulturu==2)){

cout<<CurrentVkazivnuk->data.surname<<"\t"<<CurrentVkazivnuk->data.name<<"\t"<<CurrentVkazivnuk->data.date<<"\t"<<CurrentVkazivnuk->data.Matan<<"\t"<<CurrentVkazivnuk->data.Diskr<<"\t"<<CurrentVkazivnuk->data.Programuvanja<<"\t"<<

CurrentVkazivnuk->data.IstoriaUkraine<<"\t"<<CurrentVkazivnuk->data.IstoriaKulturu<<endl;}

CurrentVkazivnuk = CurrentVkazivnuk->next;

} }

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]