Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Приклад коду

Приклади програм | Приклад алгоритму та програми | Приклад алгоритму та програми | Код програми | Приклад алгоритму та програми | Приклад алгоритму та програми | Код програми | Приклад алгоритму та програми | Визначення рядка | Приклад алгоритму та програми |


Читайте также:
  1. Аттестация прикладных собак
  2. Гуменюк Ю.П. Організаційно-економічні механізми стимулювання розвитку рекреаційно-туристичного комплексу (на прикладі Тернопільської області). – Рукопис.
  3. Декоративно-прикладное искусство
  4. Занятия граждан военно-прикладными видами спорта
  5. Кафедра прикладной и отраслевой социологии
  6. ОПИСАННЯ ПРИКЛАДУ МОДЕЛЮЮЧОЇ СИСТЕМИ
  7. ОПИСАННЯ ПРИКЛАДУ МОДЕЛЮЮЧОЇ СИСТЕМИ

#include<iostream>

#include<conio.h>

#include<string.h>

#include<iomanip> //бібліотека маніпуляторів уведення-виведення

using namespace std;

/////////////// оголошення структур ///////////////////

struct teacher //структура даних про викладача

{

char fio[10]; //прізвище

char posada[20]; //посада

float salary; //зарплатня

};

struct stud //структура даних про студента

{

char fio[10]; //прізвище

float bal; //середній бал

float stip; //стипендія

};

struct subject //структура даних про дисципліни

{

char name[10]; //назва дисципліни

teacher prepod; //викладач, який читає дисципліну

int stnum; //кількість студентів, які вивчають цю дисципліну

stud student[10]; //масив студентів, які вивчають дисципліну

};

subject predmet[10]; //масив дисциплін

int n; //кількість записів

///////////////////// Введення даних ////////////////////

void input()

{

char answer_prep, //параметр закінчення введення даних про викладача

answer_stud; //параметр закінчення введення даних про студента

int i=0; //початкове значення лічильника кількості дисциплін

do

{ //уведення даних про викладача

cout<<"subject name"<<endl; //уведення назви дисципліни

cin>>predmet[i].name; //уведення назви дисципліни

cout<<"teacher\'s surname"<<endl;

cin>>predmet[i].prepod.fio;

cout<<"teacher\'s position"<<endl;

cin>>predmet[i].prepod.posada;

cout<<"teacher\'s salary"<<endl;

cin>>predmet[i].prepod.salary;

int j=0; //початкове значення лічильника кількості студентів

do

{

//уведення даних про студента, який навчається у конкретного викладача

cout<<"student\'s surname"<<endl;

сin>>predmet[i].student[j].fio;

cout<<"student\'s ball on subject"<<endl;

cin>>predmet[i].student[j].bal;

cout<<"student\'s stipend"<<endl;

cin>>predmet[i].student[j].stip;

j++; //перехід до індексу наступного студента

cout<<"any students else? y/n"<<endl;

answer_stud=getch();

} while(answer_stud!='n'); //кінець введення даних про студента

predmet[i].stnum=j; //кількість студентів, які вивчають і-у

// дисципліну

cout<<"contunue input? y/n"<<endl;

answer_prep=getch();

i++; //перехід до нової дисципліни

} while (answer_prep!='n'); //кінець введення даних про викладача

n=i; //кількість викладачів

getch(); //чекати натиснення клавіші

} //кінець функції input()

/////////////////// виведення даних ///////////////////////

void output()

{

for(int i=0;i<n;i++)

{

cout<<"subject------teacher----position-----salary"<<endl;

cout.setf(ios::left); //вирівнювання даних на екрані зліва

cout<<setw(12)<<predmet[i].name<<setw(12)<<predmet[i].prepod.fio<<

setw(13)<<predmet[i].prepod.posada<<predmet[i].prepod.salary<<endl;

cout<<"____Students"<<endl;

cout<<" fio--------ball-----stipend"<<endl;

for(int j=0;j<predmet[i].stnum;j++) //виведення даних про студентів

{

cout.setf(ios::left);

cout<<setw(12)<<predmet[i].student[j].fio<<setw(10)<<

predmet[i].student[j].bal<<predmet[i].student[j].stip<<endl;

}

}

getch(); //чекати натиснення клавіші

} //кінець функції read_from_file()

//////////////// виведення даних про викладачів /////////////

void list_prepod()

{

cout<<"---subject----teacher-----position-----salary \n";

for(int i=0;i<n;i++)

{

cout.setf(ios::left); //виведення даних про викладачів

cout<< setw(10)<<predmet[i].name<<setw(12)<<predmet[i].prepod.fio<<

setw(14)<<predmet[i].prepod.posada<<predmet[i].prepod.salary<<endl;

}

getch(); //чекати натиснення клавіші

}

/////// пошук дисципліни з найвищім середнім балом ////////////

void maxbal()

{

float sr[10];

int i; //середній бал

for(i=0;i<n;i++)

{

sr[i]=0; //сума балів успішності по і-й дисципліні

for(int j=0;j<predmet[i].stnum;j++) //перегляд даних про студентів

//сума балів студентів з дисципліни

sr[i]+=predmet[i].student[j].bal;

sr[i]=float(sr[i])/predmet[i].stnum; //середній бал з конкретної

//дисципліні

}

cout<<" Subject\'s average ball"<<endl;

for (int i=0;i<n;i++) //цикл виведення даних про всіх викладачів

{

cout.setf(ios::left);

cout<<setw(10)<<predmet[i].name<<setw(5)<<sr[i]<<endl;

}

cout<<" subject with the highest ball: "<<endl;

float max=sr[0]; //максимальний бал

int nomer_predmet=0; //індекс дисципліни у масиві дисциплін

//пошук найбільшого середнього бала з усіх дисциплін

for(int i=1;i<kol_prep; i++)

if (max<sr[i])

{

max=sr[i];

nomer_predmet=i;

}

cout<<" max ball="<<max<<" in subject "<<

predmet[nomer_predmet].name<<

" teacher "<<predmet[nomer_predmet].prepod.fio<<endl;

getch(); //чекати натиснення клавіші

} //кінець функції maxbal()

////////////// перерозподіл стипендій /////////////////

void stipendia()

{

float sum=0; //сума стипендій студентів з середнім балом меншим трьох

int k=0; //кількість записів про студентів у вхідному масиві

int m=0; //лічильник кількості студентів

stud s,tmp[10],stud_tmp[10]; //проміжні масиви студентів

//копіювання даних про студентів у масив без дисциплін і прізвищ викладачів

for(int i=0;i<n;i++)

for(int j=0;j<predmet[i].stnum;j++) //обробка масиву студентів

{ //копіювання масиву студентів

tmp[k]=predmet[i].student[j];

k++;

}

//===розрахунок середнього бала студентів, що вивчають різні дисципліни =====

int kol[10]; //лічильник дисциплін, які вивчає один студент

for (int i=0;i<k;i++)

{ //перегляд усього масиву студентів

stud_tmp[m].bal=0; //сума балів одного студента з різних дисциплін

kol[m]=0; //кількість дисциплін для одного студента

int f=0; //прапорець обробки даних про студента

//перегляд даних про студентів від початку масиву до конкретного запису

for (int j=0;j<i;j++)

if ((strcmp(tmp[i].fio,tmp[j].fio)==0))

f=1; //відомості про студента вже зустрічалися в масиві

if (f==0) //відомості про студента ще не зустрічалися в масиві

{

for (int j=i;j<k;j++) //перегляд масиву студентів

if (strcmp(tmp[i].fio,tmp[j].fio)==0) //студент вивчає

// інший предмет

{

stud_tmp[m].bal+=tmp[j].bal; //накопичення балів

// одного студента

strcpy(stud_tmp[m].fio, tmp[j].fio); //запам’ятати

// прізвище студента

stud_tmp[m].stip=tmp[j].stip; //запам’ятати

//розмір стипендії

kol[m]++; //вибір наступної дисципліни

}

stud_tmp[m].bal=float(stud_tmp[m].bal)/kol[m]; //розрахунок

// середнього бала

m++; //перехід до наступного студента

} // end of if (f==0)

} //end of for I

//================ сортування студентів за алфавітом =================

int all_stud=m; //загальна кількість студентів

for (int i=0;i<all_stud;i++)

for(int j=i+1;j<all_stud;j++)

if (strcmp(stud_tmp[i].fio,stud_tmp[j].fio)>0)

{

s=stud_tmp[i];

stud_tmp[i]=stud_tmp[j];

stud_tmp[j]=s;

}

//=== виведення даних про загальний середній бал і початкову стипендію ====

cout<<"Array of students after sort"<<endl;

cout<<"—student------average ball------stipend"<<endl;

for (int i=0;i<all_stud;i++)

{

cout.setf(ios::left);

cout<<setw(20)<<stud_tmp[i].fio<<setw(15)<<stud_tmp[i].bal<<

stud_tmp[i].stip<<endl;

}

getch();

// ================== перерозподіл стипендій =======================

int j=0; //кількість студентів

for (int i=0;i<all_stud;i++)

if ((stud_tmp[i].bal>=0)&&(stud_tmp[i].bal<3)) //умови зняття стипендій

{

sum+=stud_tmp[i].stip;

stud_tmp[i].stip=0; //обнуління даних про стипендії

j++;

}

//розподіл стипендії між студентами, які добре вчаться

for (int i=0;i<all_stud; i++)

if ((stud_tmp[i].bal>=3)&&(stud_tmp[i].bal<=5))

stud_tmp[i].stip=stud_tmp[i].stip+sum/(all_stud-j);

 

//=============== виведення нарахованої стипендії =================

//виведення заголовка таблиці

cout<<endl<<"Counted stipend"<<endl;

cout<<"—FIO------average ball------stipend"<<endl;

//виведення даних з масиву студентів

for(int i=0;i<all_stud;i++)

{

cout.setf(ios::left);

cout<<setw(15)<<stud_tmp[i].fio<<setw(15)<<stud_tmp[i].bal;

if ((stud_tmp[i].bal>=3)&&(stud_tmp[i].bal<=5))

cout<<stud_tmp[i].stip<<endl;

else

cout<<"has no stipend"<<endl; //стипендію не нараховано

}

getch(); //чекати натиснення клавіші

} //кінець функції stipendia()

///////////////// виведення даних про студентів //////////////////

void list_student()

{

cout<<"---teacher----student-----ball----stipend \n";

for(int i=0;i<n;i++)

{

cout<<" "<<predmet[i].prepod.fio<<endl; //прізвища викладача

//вибір студентів, які навчаються у конкретного викладача

for(int j=0;j<predmet[i].stnum;j++)

{

cout.setf(ios::left); //виведення даних про студентів

cout<<setw(12)<<predmet[i].student[j].fio<<setw(10)<<

predmet[i].student[j].bal<<predmet[i].student[j].stip<<endl;

}

}

} //кінець функції list_student()

 

//////////////////// головна програма //////////////////

void main()

{

while (1)

{

system("cls");

cout<<" MENU \n"<<endl;

cout<<"1. Database input by keyboard."<<endl;

cout<<"2. Output data."<<endl;

cout<<"3. View teacher\’s database."<<endl;;

cout<<"4. View student\’s database."<<endl;

cout<<"5. List of subjects with the highest average ball."<<endl;

cout<<"6. Stipend."<<endl;

cout<<"7. Stipend found."<<endl;

cout<<"8. Exit"<<endl;

cout<<endl;

int key; //номер пункту меню

cout<< "Choosen menu item:";

cin>>key; //вибір потрібного пункту меню

switch(key) //вибір функції реалізації меню

{

case 1: {input();break;} //введення даних

case 2: {output();break;} //виведення даних з масиву на екран

case 3: {list_prepod();break;} //виведення даних про викладачів

case 4: {list_student();break;} //виведення даних про студентів

case 5: {maxbal();break;} //пошук дисципліни з найвищім балом

case 6: {stipendia();break;} //перерозподіл стипендій

case 8: {exit (0); break;} //вихід з програми

default: {cout<<"Try another time...";getch();break;}

}

}

} //кінець функції main()

 

Рис. 10.1. Результати роботи програми. Виконання меню 2

 

Рис. 10.2. Результати роботи програми. Виконання меню 5

Рис. 10.3. Результати роботи програми. Виконання меню 6

10.3. Варіанти завдань

1. Створити масив структур. Кожна структура складається з таких елементів: факультет, курс, група, прізвища студентів, екзаменаційні оцінки. Реалізувати запити, визначивши: 1) прізвища студентів, які мають дві та більше двійок за сесію на факультеті ІОТ і вилучити їх; 2) факультет, який на першому курсі має найбільшу кількість відмінників; 3) курс, на якому виключено найбільшу кількість студентів.

2. Створити масив структур. Кожна структура складається з таких елементів: фірма, вакантна посада, кількість вакантних місць, вимоги до претендентів на кожну посаду, заробітна платня. Реалізувати запити: 1) визначити фірми з найбільшою кількістю вакансій на задану посаду; 2) вивести список вимог до кандидатів на задану посаду по кожній фірмі; 3) створити новий масив із структурою: вакантна посада, заробітна платня. Вакансії вибирати з початкового масиву, виключаючи повторення однакових вакантних посад. На випадок різної платні на однакових посадах у різних фірмах включити у масив середню заробітну платню.

3. Створити масив структур. Кожна структура складається з таких елементів: факультет, курс, група, прізвища студентів, екзаменаційні оцінки. Реалізувати запити: 1) визначити факультет і курс з максимальною кількістю відмінників; 2) вивести список відмінників; 3) знайти групу, де немає двієчників.

4. Створити масив структур. Кожна структура складається з таких елементів: факультет, курс, група, прізвища студентів, екзаменаційні оцінки. Реалізувати запити, визначивши: 1) факультет і курс, на якому середній бал не менше 3.5; 2) прізвища студентів, що не мають трійок і двійок; 3) факультет і групу, де найбільше відмінників.

5. Створити масив структур. Кожна структура складається з таких елементів: місто, інститут, факультет, список спеціальностей, план прийому на перший курс. Реалізувати запити, визначивши: 1) список спеціальностей, що містять у своїй назві слова "комп'ютерний" або "автоматизований"; 2) факультети й інститути, де є задана спеціальність; 3) факультет, інститут і місто, де на вказану користувачем спеціальність виділено найбільше місць.

6. Створити масив структур, кожна з яких складається з наступних елементів: факультет, курс, група, прізвища студентів, екзаменаційні оцінки. Реалізувати запити: 1) визначити прізвища студентів, групу і факультет, де середній бал студентів 4.5; 2) вилучити прізвища студентів першого курсу, які мають три двійки; 3) відсортувати назви факультетів за умови зростання успішності студентів.

7. Створити масив структур. Кожна структура складається з таких елементів: марка автомобіля, тип (вантажний або легковий), номерний знак, строк служби. Для легкових вказується колір, для вантажних - вантажність. Реалізувати запити: 1) визначити номерні знаки автомобілів, вантажність котрих не менше за задану; 2) вивести марки автомобілів заданого типу і вказаного кольору; 3) вилучити з масиву відомості про автомобілі, строк служби яких перевищує п'ять років.

8. Створити масив структур. Кожна структура складається з таких елементів: прізвище абонента, номер телефону, адреса, заборгованість по оплаті. Реалізувати запити: 1) визначити прізвища абонентів, що мають заборгованість по оплаті більше заданої користувачем; 2) вилучити прізвища абонентів, адреса яких змінилася; 3) замінити номер телефону заданого абонента.

9. Створити масив структур. Кожна структура складається з таких елементів: фірма, найменування товару, що продається, вартість, термін поставки товару. Реалізувати запити: 1) визначити фірми, що постачають заданий товар у дводенний строк; 2) визначити назву товару в заданій фірмі, вартість якого не перевищує заданого значення; 3) впорядкувати масив за умови зростання термінів постачання товару.

10. Створити масив структур. Кожна структура складається з таких елементів: інститут, факультет, список спеціальностей, план прийому на перший курс, прохідний бал. Реалізувати запити: 1) скласти список спеціальностей по факультетах із вказаним прохідним балом; 2) впорядкувати масив за прохідним балом і планом прийому; 3) визначити інститут із вказаним середнім прохідним балом.

11. Створити масив структур. Кожна структура складається з таких елементів: номер авіаційного рейсу, тип літака, дата відльоту, кількість вільних місць, вартість квитка. Реалізувати запити: 1) скласти список номерів авіаційних рейсів, на які є вільні місця; 2) вивести типи літаків і відповідні номери авіаційних рейсів на задану дату; 3) упорядкувати масив за умови зростання вартості квитків по кожній даті.

12. Створити масив структур. Кожна структура складається з таких елементів: напрям польоту, номер авіаційного рейсу, типи літаків, кількість посадкових місць, вартість квитка, льотні дні на тиждень. Реалізувати запити: 1) визначити номери авіаційних рейсів заданого напрямку з мінімальною вартістю квитків; 2) визначити типи літаків і сумарну кількість посадкових місць у заданому напрямку по днях тижня; 3) вилучити з масиву відомості про рейси, якщо кількість польотів на тиждень менше двох..

13. Створити масив структур. Кожна структура складається з таких елементів: факультет, курс, група, прізвища студентів, екзаменаційні оцінки. Реалізувати запити, визначивши: 1) групи на першому і другому курсах, в яких більше п'яти відмінників; 2) факультети, де немає двієчників; 3) прізвища студентів, що не з'явилися хоча б на один іспит (оцінка 0).

14. Створити масив структур. Кожна структура складається з таких елементів: прізвище абонента, номер телефону, адреса, вид оплати (щохвилинна чи абонементна), вартість оплати. Реалізувати такі операції: 1) доповнити масив прізвищами абонентів, номери телефонів яких починаються на задані цифри (імітувати введення нової АТС); 2) видати список абонентів з щохвилинною оплатою, сума оплати у яких нижче заданого рівня; 3) визначити номер телефону абонента за заданою адресою.

15. Створити масив структур. Кожна структура складається з таких елементів: напої та шоколадні вироби; їх калорійність, вартість. Для напоїв вказати міцність, для шоколадних виробів - вагу, начинку. Реалізувати запити: 1) визначити список шоколадних виробів, що мають максимальну вагу і задану начинку; 2) вилучити з масиву інформацію про алкогольні напої; 3) скласти меню з напоїв і шоколадних виробів, що відповідають заданій калорійності та вартості.

16. Створити масив структур. Кожна структура складається з таких елементів: продукт, ціна продукту, рівень корисності продукту (функцію корисності задати у довільному вигляді), прибуток споживача. Реалізувати запити, визначивши: 1) продукти заданого рівня корисності, які може придбати споживач при заданому прибутку; 2) сумарну вартість продуктів з максимальним рівнем корисності; 3) споживачів, прибутків яких не вистачає для придбання продуктів за заданою ціною і рівнем корисності.

17. Створити масив структур. Кожна структура складається з таких елементів: місто, інститут, факультет, список спеціальностей, план прийому на перший курс, прохідний бал. Реалізувати запити, визначивши: 1) список міст, де знаходяться політехнічні інститути; 2) інститути і факультети, де приймають студентів на перший курс за заданою користувачем спеціальністю; 3) факультет, інститут і місто, де на вказану користувачем спеціальність існує найвищий прохідний бал.

18. Створити масив структур. Кожна структура складається з таких елементів: факультет, прізвища студентів, прізвища викладачів. Для студентів вказують стипендію і середній бал. Для викладачів - посаду і заробітну плату. Реалізувати запити, визначивши: 1) список студентів по факультетах з найнижчим середнім балом і стипендією; 2) кількість викладачів-доцентів на заданому факультеті; 3) сумарний фонд стипендії і зарплати на заданому факультеті.

19. Створити масив структур. Кожна структура складається з таких елементів: назва фірми, продукт, що продається - комп'ютери і програмне забезпечення, регіон збуту, вартість продажу, термін постачання. Реалізувати запити, визначивши: 1) список комп'ютерів, що продаються у заданому регіоні конкретною фірмою; 2) вартість проданого програмного забезпечення у задані терміни; 3) найрентабельніші фірми (з найбільшою вартістю продажів).

20. Створити масив структур. Кожна структура складається з таких елементів: прізвище студента, курс, середній бал. Для студентів контрактної форми навчання вказується вартість контракту, а для студентів, що навчаються за бюджетною формою - розмір стипендії. Реалізувати такі операції: 1) визначити прізвища студентів із середнім балом вище четвірки, надрукувати окремо студентів контрактної та бюджетної форм навчання; 2) вилучити дані про студентів бюджетної форми з масиву, якщо їх середній бал нижче трійки; 3) вивести список студентів контрактної форми і суму їх контрактів.

21. Створити масив структур. Кожна структура складається з таких елементів: книги, журнали. Для книжок задають назву, прізвище автора, рік видання. Для журналів - назву, номер, рік видання, назву статті, автора. Реалізувати запити: 1) вивести авторів, які друкувалися у вказаному році та їх праці; 2) визначити журнал, рік видання вказаної статті; 3) вивести кількість статей заданого автора і журнали, у яких він друкувався.

22. Створити масив структур. Кожна структура складається з таких елементів: прізвище викладача, дисципліна, прізвища студентів, що вивчають конкретну дисципліну. Для викладача задають посаду, заробітну плату, для студента - середній бал і стипендію. Реалізувати такі запити: 1) визначити викладачів і дисципліни з середніми балами менше заданого; 2) вилучити студентів, середній бал яких нижче за трійку; 3) визначити стипендіальний фонд студентів (кількість студентів, що отримають стипендію, помножену на розмір стипендії), які вивчають задану дисципліну.

23. Створити масив структур. Кожна структура складається з таких елементів: факультет, курс, група, прізвища студентів, екзаменаційні оцінки, стипендія. Реалізувати запити, визначивши: 1) прізвища студентів, що мають стипендію, їх середній бал; 2) факультет, на якому на першому курсі найбільша кількість груп студентів, що не мають двійок; 3) курс з найбільшою кількістю відмінників.

24. Створити масив структур. Кожна структура складається з таких елементів: факультет, курс, група, прізвища студентів, екзаменаційні оцінки. Реалізувати запити, визначивши: 1) кількість факультетів, де середній бал студентів від трьох до чотирьох; 2) видалити прізвища студентів-двієчників другого курсу факультетів, середній бал яких вище 3.5; 3) упорядкувати масив структур за умови зростання середнього бала на факультеті ФІОТ.

25. Створити масив структур. Кожна структура складається з таких елементів: місто, фірма, продукт, кількість продукту, ціна одиниці продукту, вартість продуктів. Реалізувати запити: 1) визначити місцезнаходження фірми, що виробляє заданий продукт; 2) визначити сумарну вартість продуктів, що виробляються у даному місті; 3) упорядкувати список продуктів за ціною для даного міста.

10.4 Контрольні запитання

1. Дати поняття структурного типу даних та оголошення структурної змінної, масиву структур.

2. Як здійснюється доступ до елементів структури?

3. Як передати структуру або масив структур до функції як аргумент?

4. Як повернути з функції масив структур?

5. Які операції можна виконувати із структурами?

6. Як визначається обсяг пам'яті, що потребує структура, і коли вона резервується?


Дата добавления: 2015-08-27; просмотров: 105 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Приклад алгоритму та програми| Гипнотизер Клиент

mybiblioteka.su - 2015-2024 год. (0.03 сек.)