- •Insert Project Into Workspace..
- •VisualComponentManager
- •Типи майстрів проектів
- •Void cLab_04 1Dlg::OnDel()
- •Void cLab 04 1Dlg::OnOptimum()
- •Int NumCars; //Количество автомобілів
- •Void cLab 04 1Dlg::OnOpen()
- •Void cLab_06Dlg::OnReplace(nmhdr* pNmhdr, lresult* pResult)
- •Робота №1 Програмування лінійних алгоритмів
- •1.2. Функції бібліотеки math.Lib
- •1.4. Індивідуальні завдання
- •Работа №2 Програмування алгоритмів, що розгалужуються
- •2.1. Логічні операції і операції порівняння
- •3.5. Приклад виконання роботи
- •4.3. Індивідуальні завдання
- •5.2. Операції над покажчиками
- •5.5. Індивідуальні завдання
- •Int strlen(st) – повертає довжину рядка st.
- •Int atoi(st) – перетворить рядок st в число цілого типа (int).
- •Return вираження;
- •8.2. Передача параметрів
- •8.3. Перевантаження функцій і покажчик на функцію
- •Hanr(n-1,s1,s3,s2);
- •Hanr(n-1,s3,s2,s1);
- •9.3. Індивідуальні завдання
- •Робота №10 Програмування з використанням файлів
- •10.1. Організація роботи з файлами
- •I або I ( десяткове, вісімкове або шістнадцятиричне ціле;
- •Void s_qs(tStudent st[], int n)
- •11.3. Індивідуальні завдання
- •Робота №15 Програмування з використанням двусвязанных списків
- •15.1. Черги на основі двусвязанных списків
- •Методика оцінювання робіт студентів
- •Литература
I або I ( десяткове, вісімкове або шістнадцятиричне ціле;
D або d ( десяткове ціле;
U або u ( десяткове ціле без знаку;
E або e ( дійсне з плаваючою крапкою;
s ( рядок символів;
з ( символ.
Функція
int *fscanf(FILE * указатель_на _файл
const char * управляющая_строка);
читає форматовані дані з файлу. Рядок форматування будується аналогічно функції fprintf.
Функція
void rewind(FILE * указатель_на _файл);
встановлює покажчик поточної позиції виділеного файлу в початок файлу.
Функція
int ferror(FILE * указатель_на _файл);
визначає, чи сталася помилка під час роботи з файлом. Функція
size_t fwrite(const void * записываемое_данное
size_t размер_элемента, size_t число_элементов
FILE *указатель_на _файл);
записує у файл задане число даних певного розміру. Розмір даних задається в байтах. Тип size_t визначається як ціле без знаку.
Функція
size_t fread(void * считываемое_данное
size_t размер_элемента, size_t число_элементов
FILE *указатель_на _файл);
прочитує з файлу вказане число даних заданого розміру. Розмір задається в байтах. Функція повертає число прочитаних елементів. Якщо число прочитаних елементів не дорівнює заданому, то при читанні виникла помилка або зустрівся кінець файлу.
Функція
int fileno(FILE * указатель_на _файл);
повертає значення дескриптора вказаного файлу (дескриптор – логічний номер файлу для заданого потоку).
Функція
long filelength(int дескриптор);
повертає довжину файлу з відповідним дескриптором в байтах.
Функція
int fseek(FILE * указатель_на _файл, long int число_байт
int точка_отсчета);
встановлює покажчик в задану позицію. Задана кількість байт відлічується від позиції, яка задається наступними макросами: SEEK_SET – початок файлу, SEEK_CUR – поточна позиція, SEEK_END – кінець файлу.
10.3. Приклад виконання роботи
Умова. Написати програму, що вводить у файл або ведомость студентів, що склали іспити, що читає з файлу. Кожна структура повинна містити прізвище, а також оцінки по математиці і програмуванню. Вивести список студентів, що склали іспит по програмуванню з оцінкою 4, і записати цю інформацію в текстовій файл.
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
FILE *fl;
typedef struct
{
char fio[30];
unsigned char matem;
unsigned char oaip;
} TStudent;
TStudent stud[30]; // Масив структур
char name[20]; // Ім'я файлу
int nst=0; // Число введених структур
int menu(); // Меню
void nnf(); // Ввести ім'я файлу
void newf(); // Створити новий файл
void spisok(); // Ввести список
void opf(); // Відкрити файл
void resc(); // Вивести результат на екран
void resf(); // Вивести результат у файл
int main()
{
while (true)
{
switch (menu())
{
case 1: nnf(); break;
case 2: newf(); break;
case 3: spisok(); break;
case 4: opf(); break;
case 5: resc(); break;
case 6: resf(); break;
case 7: return 0;
default: "Viberite pravilno!";
}
puts("Press any key to continue");
getch(); system("cls");
}
}
int menu() // Меню
{
cout << "VIBERITE:" << endl;
cout << "1. Vvod file name" << endl;
cout << "2. New file" << endl;
cout << "3. Vvesti spisok" << endl;
cout << "4. Open file" << endl;
cout << "5. Vivesti result" << endl;
cout << "6. Vivesti v fail" << endl;
cout << "7. Exit" << endl;
int i;
cin >> i;
return i;
}
void nnf() // Ввести ім'я файлу
{
cout << "Vvedite file name" << endl;
cin >> name;
}
void newf() // Створити новий файл
{
if ((fl = fopen(name,"wb"))==NULL)
{
cout << "Oshibka pri sozdanii"<<endl;
exit(1);
}
cout << "OK" << endl;
fclose(fl);
}
void spisok() // Ввести список
{
if ((fl = fopen(name,"rb+"))==NULL)
{
cout << "Oshibka pri sozdanii"<<endl;
exit(1);
}
cout << "Vvedite chislo studentov " << endl;
cin >> nst;
for (int i=0; i<nst; i++)
{
cout << "Vvedite imya: ";
cin >> stud[i].fio;
cout << "Vvedite otcenku ро matematike: ";
cin >> stud[i].matem;
cout << "Vvedite otcenku ро OAiP: ";
cin >> stud[i].oaip;
fwrite( &stud[i], sizeof(TStudent), 1, fl );
}
fclose(fl);
}
void opf() // Відкрити файл
{
if ((fl = fopen(name,"rb"))==NULL)
{
cout << "Oshibka pri otkritii"<<endl;
exit(1);
}
nst=0; TStudent std;
while(true)
{
int nwrt = fread( &std, sizeof(TStudent), 1, fl );
if (nwrt!=1) break;
stud[nst]=std;
cout << stud[nst].fio << " " << stud[nst].matem
<< " " << stud[nst].oaip << endl;
nst++;
}
fclose(fl);
}
void resc() // Вивести результат на екран
{
for (int i=0; i<nst; i++)
if (stud[i].oaip=='4')
cout << stud[i].fio << endl;
}
void resf() // Вивести результат у файл
{
char namet[30];
FILE *ft;
cout << "Vvedite imya faila" << endl;
cin >> namet;
if ((ft = fopen(namet,"w"))==NULL)
{
cout << "Oshibka pri sozdanii "<<endl;
exit(1);
}
char s[80];
for (int i=0; i<nst; i++)
if (stud[i].oaip=='4')
{
strcpy(s, stud[i].fio);
strcat(s, "\n"); // Додавання роздільника рядків
fputs(s, ft);
}
fclose(ft);
}
10.4. Індивідуальні завдання
У програмі передбачити збереження даних, що вводяться, у файл і можливість читання з раніше збереженого файлу. Результати виводити на екран і в текстовій файл.
1. Список товарів, що є на складі, включає найменування товару, кількість одиниць товару, ціну одиниці і дату вступу товару на склад. Вивести список товарів, що зберігаються більше місяця і вартість яких перевищує 1 000 грн.
2. Для здобуття місця в гуртожитку формується список студентів, який включає ФІО студента, групу, середній бал, дохід на члена сім'ї. Вивести інформацію про студентів, в яких дохід на члена сім'ї менше двох мінімальних зарплат.
3. У довідковій автовокзалу зберігається розклад руху автобусів. Для кожного рейса вказані його номер, пункт призначення, час відправлення і прибуття. Вивести інформацію про рейси, якими можна скористатися для прибуття в пункт призначення раніше заданого часу.
4. Інформація про співробітників фірми включає ФІО, кількість годинника, що пропрацював, за місяць, почасовою тариф. Робочий час понад 144 години вважається наднормовим і оплачується в подвійному розмірі. Вивести розмір заробітної плати кожного співробітника фірми за вирахуванням прибуткового податку, який складає 12 % від суми заробітку.
5. Інформація про учасників спортивних змагань містить назву команди, ФІО гравця, вік. Вивести інформацію про спортсменів, вік яких не досяг 18 років.
6. Для книг, що зберігаються в бібліотеці, задаються автор, назва, рік видання, кількість сторінок. Вивести список книг, виданих після заданого року.
7. На заводі випускається декілька найменувань деталей. Відомості про деталі включають код деталі, кількість випущених деталей, номер місяця випуску. Вивести інформацію про продукцію, випущену заданим цехом за останній місяць.
8. Інформація про співробітників підприємства містить ФІО, номер відділу, посаду, дату початку роботи. Вивести список співробітників заданого відділу, що пропрацювали на підприємстві більше 20 років.
9. Ведомость абітурієнтів містить ФІО, місто мешкання, сумарний бал. Вивести інформацію про абітурієнтів, що проживають в м. Сумах і мають бал більше 12.
10. У довідковій аеропорту зберігається розклад вильоту літаків на наступну добу. Для кожного рейса вказані номер рейса, пункт призначення, час вильоту. Вивести всі номери рейсів і час вильоту літака для заданого пункту призначення.
11. У адміністратора залізничних кас зберігається інформація про вільні місця в поїздах. Інформація представлена в наступному вигляді: номер поїзда, пункт призначення, час відправлення, число вільних місць. Вивести інформацію про поїзди, в яких є вільні місця до заданого пункту призначення.
12. Ведомость студентів, що здавали сесію, містить ФІО і оцінки по чотирьох предметах. Вивести список студентів, що здали сесію з середнім балом більше 7.
13. У радіоательє зберігаються квитанції про здані в ремонт телевізори. Кожна квитанція містить наступну інформацію: марка телевізора, дата приймання в ремонт, стан готовності замовлення (виконаний, не виконаний). Вивести інформацію про замовлення, які на даний момент не виконані.
14. На АТС інформація про розмови містить номер телефону абонента, час розмови і тариф. Вивести для заданого абонента суму, яку йому слід сплатити за розмови.
15. У магазині складений список людей, яким видана карта постійного покупця. Кожен запис цього списку містить номер картки, ФІО, знижку, що надається. Вивести інформацію про покупців, що мають 10 %-ную знижку в магазині.
Работа №11
Сортування по ключу одновимірних масивів структур
11.1. Сортування масивів
Метод бульбашки
void s_puz(int a[], int n)
{
int i,j,t;
for(i=1; i < n; i++)
for( j=n-1; j >= i; j--)
if (а[j-1]> а[j])
{ t = а[j-1]; а[j-1]= а[j]; а[j]= t; }
}
Сортування вибором
void s_vb(int a[], int n)
{
int imin,i,j,t;
for(i=0; i<n-1; i++)
{
imin=i;
for(j=i+1; j<n; j++)
if (а[imin]>а[j]) imin=j;
if (imin != i)
{
t = а[imin];
а[imin]= а[i];
а[i]= t;
}
}
}
Сортування вставками
void s_vst(int a[], int n)
{
int i,j,t;
for(i=1; i<n; i++)
{
t=a[i];
for(j=i-1; j>=0 && t<a[j]; j--) а[j+1]=a[j];
а[j+1]= t;
}
}
11.2. Приклад виконання роботи
Функція для сортування методом QuickSort. Сортування ведеться по ключу – оцінка по ОАїП (використовуються типи даних, оголошені в попередньому прикладі (пункт 10.3)).
