
- •6.050103 «Програмна інженерія»
- •Одновимірні масиви
- •Теоретичні відомостi
- •Поняття масиву
- •Оголошення масиву
- •Доступ до елементів масиву
- •Обробка масивів
- •Приклад програми
- •Варіанти завдань
- •Контрольні питання
- •Багатовимірні масиви
- •Теоретичні відомостi
- •Обробка матриць
- •Масиви-параметри
- •Приклад програми
- •Варіанти завдань
- •Контрольні питання
- •Теоретичні відомості
- •Поняття рядка
- •Операції з рядками
- •Приклад програми
- •Варіанти завдань
- •Контрольні питання
- •Теоретичні відомості
- •Поняття структури
- •Оголошення структури
- •Доступ до полів структур
- •Обробка структур
- •Приклад програми
- •Варіанти завдань
- •Теоретичні відомостi
- •Приклад програми
- •Варіанти завдань
- •Бінарні файли
- •Теоретичні відомостi
- •Потоки і файли
- •Приклади програм
- •Варіанти завдань
- •Текстові файли
- •Теоретичні відомостi
- •Приклади програми
- •Варіанти завдань
- •Теоретичні відомостi
- •Приклади програм
- •Варіанти завдань
- •8.1 Теоретичні відомостi
- •8.2 Приклади програм
- •8.3. Варіанти завдань
- •Порядок виконання роботи та зміст звіту
- •Список рекомендованої літератури
- •1.1. Одновимірні масиви ............................................................................... 3
Приклади програм
Приклад. На основі сформованого файла цілих чисел створити новий файл, в який переписати числа, що зустрічаються у вихідному файлі тільки один раз.
#include <stdio.h>
#include <sys\stat.h>
#include <conio.h>
#include <alloc.h>
#include <iostream.h>
FILE *in,*curr,*out; // покажчики файли
int i,j, // поточні значення елементів файлів
m, // індикатор співпадаючих елементів
ind_i=0,ind_j=0; // поточні номера елементів файлів
struct stat buf; // параметри файла: розмір, будова тощо
char c; // індикатор кінця введення
void Input(); // створення файла цілих чисел
void Output(FILE *); // виведення на екран вмісту файла
void CopyF(); // копіювання файлів
void DelDubl(); // пошук елементів файлів, що повторюються
//---------------------------- головна функцiя ---------------------------------------
main()
{ clrscr();
Input();
in=fopen("in.dat","r"); // відкрити файл для читання
printf("\nFile 1:");
Output(in);
CopyF();
curr=fopen("curr.dat","r");
printf("\nFile 2:");
Output(curr);
out=fopen("out.dat","w+"); // відкрити для запису і доповнення
DelDubl();
fclose(out);
out=fopen("out.dat","r");
printf("\nFile 3:");
Output(out);
while(!kbhit()); // очікування натиснення клавиші
return 0;
}
//-----------------------створення файла цілих чисел --------------------------------
void Input()
{ in=fopen("in.dat","w");
do
{ cout<<"Input:"; scanf("%d",&i);
fprintf(in,"%d ",i);
cout<<"\nContinue?(y/n)"; cin>>c;
}
while(c!='n');
fclose(in);
}
//-------------------- виведення на екран вмісту файла ------------------------------
void Output(FILE *inn)
{ while(!feof(inn)) // поки не кінець файла,
{ fscanf(inn,"%d ",&i); // зчитати із файла в ОП
printf("%d ",i); // друк значень із ОП
}
}
//----------------------- копіювання файлів --------------------------------------------
void CopyF()
{ curr=fopen("curr.dat","w+");
fseek(in,0L,SEEK_SET);
while(!feof(in))
{ fscanf(in,"%d ",&i);
fprintf(curr,"%d ",i);
}
fclose(curr);
}
//----------------- пошук елементів файлів, що повторюються --------------------
void DelDubl()
{ fseek(in,0L,SEEK_SET);
while(!feof(in))
{ fscanf(in,"%d ",&i); // читати елемент із вхідного файла
m=0;
ind_i++;
fseek(curr,0L,SEEK_SET);
ind_j=0;
while(!feof(curr))
{ fscanf(curr,"%d ",&j); // читати елемент із допом. файла
ind_j+=1;
if((i==j)&&(ind_i!=ind_j)) m++;
}
if (m==0) fprintf(out,"%d ",i);
}
}
Варіанти завдань
Створити файл структур з полями: прізвище абонента, номер його телефона, позначка про сплата рахунку за телефон (при наявності боргу – його величина). Вилучити з файлу абонентів, які не мають боргів по оплаті.
Заданий файл, компонентами якого є цілі числа. Отримати новий файл, який містить компоненти вихідного файлу, що є парними числами. Визначити розмір нового файлу.
Заданий файл G, компонентами якого є цілі числа. Визначити кількість елементів файлу G, що менші за середнє арифметичне всіх його елементів. Переписати ці компоненти до нового файлу Q, збільшивши їх у 3 рази.
Створити файл структур з полями: прізвище студента і його оцінки по результатам сесії. Визначній середній бал успішності кожного студента. Створити другий файл з полями: прізвище студента і його середній бал.
Заданий файл, компоненти якого - цілі числа. Отримати другий файл шляхом виключення із першого повторного входження одного і того ж числа.
Створити файл цілих чисел. Переписати до другого файлу усі елементи першого файлу, що є квадратами цілих чисел. Визначити кількість елементів, що не відповідають зазначеній умові.
Задані два файла дійсних чисел, що містять від'ємні елементи. Створити третій файл, кожен елемент якого - модуль різниці відповідних елементів перших двох файлів, якщо обидва вони є додатними числами.
Створити файл дійсних чисел. Переписати до другого файлу усі елементи першого файлу, що менші за введене з клавіатури число k. Визначити кількість таких елементів.
Заданий файл символів. Записати у новий символьний файл ті символи першого файла, яким передує символ ‘а’. Підрахувати кількість таких символів.
Створити файл структур. Структура запису: автор, назва твору. Вилучити з файлу всі записи, у яких прізвище автора починається на задану користувачем літеру.
Заданий файл F, компоненти якого - цілі числа. Записати до файлу G всі компоненти файлу F, що кратні 3 та не кратні 7. Визначити кількість таких елементів. Дописати відповідне значення у кінець файла G.
Нехай заданий файл, що містить інформацію про працівників установи: прізвище працівника, його ім’я, по батькові та номер телефону. Переписати у другий файл інформацію про абонентів, телефон яких почанається із заданої цифри.
Створити файл цілих чисел шляхом введення даних з клавіатури. Переписати до нового файлу всі числа першого файлу, які задовольняюгь умові:
число = <номер позиції> * const,
де const вводиться з клавіатури. Визначити кількість таких чисел.
Заданий файл F, що містить різні дати, кожна з яких - це число, місяць та рік. Переписати із файла F у файл G усі весняні дати, а у файл R– усі зимові дати.
Створити файл цілих чисел. Переписати в новий файл числа, кратні середньому арифметичному цих чисел (округлити до цілого). Визначити розмір отриманого файлу.
Заданий файл структур з полями: прізвище і ініціали працівника, його вік та стать. Переписати у другий файл інформацію про працівників-пенсіонерів.
Заданий файл символів. Записати у новий символьний файл ті символи першого файла, за якими йде заданий символ. Визначити розмір нового файлу.
Заданий файл дійсних чисел F, що містить від'ємні елементи. Використовуючи допоміжний файл Н, переписати компоненти файлу F до файлу G таким чином, щоб спочатку йшли всі додатні числа, а потім всі від'ємні.
Заданий файл дійсних чисел R. Використовуючи допоміжний файл D, переписати компоненти файлу R до файлу G таким чином, щоб спочатку йшли всі парні числа, а потім всі непарні.
Нехай задані два файла символів. Сформувати третій файл, який містить елементи, що входять в обидва вихідні файли.
Заданий файл цілих чисел, що містить від'ємні елементи. Створити два нових файла, переписавши в один із них усі додатні числа вихідного файлу, у другий - усі від'ємні. Визначити розмір кожного із отриманих файлів.
Заданий файл, компонентами якого є цілі числа. Отримати новий файл, компонентами якого є всі елементи першого файлу, що є непарними числами та коренями цілих чисел. Підрахувати кількість таких елементів. Дописати відповідне значення у кінець нового файла.
Нехай задані два файла цілих чисел G і Q. Сформувати третій файл, який містить елементи, що входять у файл G і не входять у файл Q.
Заданий файл даних про європейські держави: країна, її площа, кількість населення. Створити новий файл, який містить список країн у порядку збільшення кількості їх населення.
Створити файл цілих чисел шляхом введення чисел з клавіатури. Створити новий файл, який містить цілі числа з першого файлу у двійковому вигляді.
Заданий файл структур з полями: прізвище і ініціали квартиронаймача, його адреса, признак наявності телефона. Вилучити з файлу відомості про людей без телефона і пересортувати вміст файлу за прізвищами у алфавітному порядку.
Створити файл цілих чисел шляхом введення чисел з клавіатури. Створити новий файл, який містить цілі числа з першого файлу у вісімковому вигляді.
Заданий файл структур з полями: посада, оклад. Створити новий файл, який містить список посад у порядку зменшення їх окладів. Визначити середній посадовий оклад.
Пряма на площині задається рівнянням ах + bу + с = 0, де а і b – цілі, що одночасно не дорівнюють нулю. Нехай F - файл, який містить коефіцієнти декількох прямих. Переписати з файлу F до файлу G коефіцієнти прямих, які паралельні першій прямій, заданій у файлі F.
Створити файл цілих чисел шляхом введення чисел з клавіатури. Створити новий файл, який містить цілі числа з першого файлу у шістнадцятковому вигляді.