Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
8
Добавлен:
30.05.2020
Размер:
86.02 Кб
Скачать

Технологія створення програм

Лабораторна робота №4_2

Дана лабораторна робота має бути виконана групою студентів. Група студентів отримує загальне завдання, яке є сукупністю підзадач-модулів. Кожен студент є членом команди і виконуює одне із завдань. Один з членів групи, будучи керівником проекту, здійснює керівництво проекту (визначає складність завдань, розподіляє роботу і конролирует процес її виконання).

Результатом роботи групи є програма, що складається з окремих модулів, що мають загальний інтерфейс.

Керівник проекту контролює процес виконання роботи, написання звіту і представляє роботу викладачеві, дає оцінку роботи кожного члена команди.

Лабораторна робота розрахована на 6 годин виконання:

1 Заняття (2 години):

  • видача індивідуальних завдань;

  • розробка плану виконання робіт групою (розподіл ролей в команді, розподіл завдань, розробка єдиного інтерфейсу);

  • розробка алгоритмів, написання код кожним членом команди.

2 Заняття (2 години):

  • тестування код;

  • написання звітів-інструкцій;

  • вироблення одного загального звіту.

3 Заняття (2 години):

  • захист лабораторної роботи (виконується керівником групи);

  • оцінка вкладу кожного члена команди.

Звіт повинен містити:

  1. Тему і мету лабораторної роботи;

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

  3. Коди кожного завдання;

  4. Інструкцію по роботі.

Тема: Файли.

Операции с текстовыми файлами

Запис даних у файл

Описати покажчик на файл                                                                                                

FILE *filename;

1.      Відкрити файл (функція fopen)

Опис функції

FILE *fopen(const *filename, const char *mode)

filename – рядок, в якому зберігається повне ім'я файлу, що відкривається.

mode – рядок, який визначає режим роботи з файлом; можливі наступні значення:

«r» – відкриваємо текстовий файл в режимі читання;

 «w» – створюємо текстовий файл;

 «a» – створюємо або відкриваємо текстовий файл для дозапису в кінець файлу;

 «r+» – відкриваємо текстовий файл в режимі читання і запису;

 «w+» – відкриваємо текстовий файл для виправлення, старий вміст викидається;

 «a+» текстовий файл відкривається або створюється для виправлення існуючої інформації і додавання новою в кінець файлу;

Функція повертає покажчик на файлову змінну або NULL при невдалому відкритті файлу.

2.      Записати даних у файл (функція fprintf )

Функція fprintf аналогічна функції printf, єдиною відмінністю є перший параметр – покажчик на файл. За допомогою цієї функції вивід здійснюється не на екран, а на файл.

3.      Закрити файл (функція fclose )

int fclose(FILE *filename);

Повертає 0 при успішному закритті файлу і NULL інакше.

Окрім цих функцій для роботи з файлами є ще дві:

 

int remove(const char *filename);

Ця функція видаляє з диска файл, покажчик на який зберігається у файловій змінній filename. Функція повертає ненульове значення, якщо файл не удалося видалити.

int rename(const char *oldfilename, const char *newfilename);

Функція перейменовує файл; перший параметр – старе ім'я файлу, другий – нове. Повертає 0 при невдалому завершенні програми.

 

Читання даних з файлу

 

1.      Описати покажчик на файл

FILE *filename;

2.      Відкрити файл (функція fopen)

3.      Рахувати дані з файлу (функція fscanf)

Функція fscanf аналогічна функції scanf, єдиною відмінністю є перший параметр – покажчик на файл. За допомогою цієї функції вивід здійснюється не на екран, а на файл.

4.      Закрити файл (функція fclose )

ПРІМЕР1. У файлі abc.txt зберігаються матриці A(N,M) і B(M,K). Хай структура файлу наступна: у першому рядку зберігаються числа n і m, потім відрядковий матриця A, за тим рядок, в якому зберігається m і до. Потім – відрядковий матриця B. Знайти матрицю С=a.B і записати її у файл rez.txt.

#include <stdio.h>

#include <math.h>

#include <stdlib.h>

#include <alloc.h>

int main()

{

int i,j,n,m,l,k;

float *b,*c,*a,s,temp;

FILE *f;

f=fopen("abc.txt","r");

fscanf(f,"%d%d",&n,&m);

a=(float *)

calloc(n*m,sizeof(float));

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

for(j=0;j<m;j++)

{

fscanf(f,"%g",&temp);

*(a+i*m+j)=temp;

}

fscanf(f,"%d%d",&m,&l);

b=(float *)calloc(m*l,sizeof(float));

c=(float *)calloc(n*l,sizeof(float));

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

for(j=0;j<l;j++)

{

fscanf(f,"%g",&temp);

*(b+i*l+j)=temp;

}

fclose(f);

f=fopen("rez.txt","w");

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

for(j=0;j<l;*(c+i*l+j)=s,j++)

for(s=0,k=0;k<m;k++)

s+=*(a+i*m+k)**(b+k*l+j);

fprintf(f,"Њ ваЁж  C\n");

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

{

for(j=0;j<l;j++)

fprintf(f,"%g\t",*(c+i*l+j));

fprintf(f,"\n");

}

fclose(f);

free(a);

free(b);

free(c);

}

Контрольне питання

 У текстовому файлі f.txt записані (упереміш) цілі числа: порівну негативних і позитивних. Використовуючи лише один допоміжний файл, переписати в текстовий файл h.txt всі ці числа так, щоб:

  1. порядок негативних чисел був збережений;

  2. порядок позитивних чисел був збережений;

  3. будь-які два числа, що стоять поряд, мали різні знаки.

1

  • Багаж пасажира характеризується кількістю речей і їх загальною вагою. Даний файл Bagazh, що містить зведення про багаж декількох пасажирів. Зведення про багаж кожного пасажира є записом з двома полями: одне поле цілого типа (кількість речей) і одне — дійсного (вага в кілограмах).

  • Знайти багаж, середня вага однієї речі в якому відрізняється не більше ніж на т кг від загальної середньої ваги однієї речі.

  • В умовах попереднього завдання знайти число пасажирів, що мають більше двох речей, і число пасажирів, кількість речей яких перевершує середнє число речей.

  • В умовах завдання 1 з'ясувати, чи є пасажир, багаж якого складається з однієї речі вагою менш t кг

2

Даний файл Assort, що містить відомості про іграшки: вказуються назва іграшки, її вартість в гривнах і вікові кордони (наприклад, іграшка може призначатися для дітей від двох до п'яти років).

а) Отримати назву іграшок, ціна яких не перевищує 140 грн. і які личать дітям 5 років;

б) визначити вартість найдорожчого конструктора;

в) надрукувати назву найбільш дорогих іграшок (ціна яких відрізняється від ціни найдорожчої іграшки не більше ніж на 50 грн.);

г) отримати назви іграшок, які личать дітям як чотири, так і десяти років;

д) отримати відомості про те, чи можна підібрати іграшку, будь-яку, окрім м'яча, відповідну дитяті трьох років;

е) отримати назву найдешевшої іграшки;

ж) отримати назву найдорожчої іграшки для дітей до чотирьох років;

з) отримати назви іграшок для дітей чотирьох-п'яти років;

и) отримати назву найдорожчої іграшки, відповідної дітям двох-трьох років;

к) визначити вартість найдорожчої ляльки;

л) визначити вартість ляльок для дітей шести років;

м) для дітей якого віку призначається конструктор?

н) для дітей якого віку призначені кубики? Вказати їх середню вартість.

3

  • Дан файл, що містить текст англійською мовою, і деяка буква. Підрахувати, скільки слів починається з вказаної букви.

  • Дан файл, що містить текст англійською мовою. Знайти слово, що зустрічається в кожній пропозиції, або повідомити, що такого слова немає.

  • Дан файл, що містить текст, що включає російські і англійські слова. Підрахувати, якіх букв в тексті більше — російських або латинських.

  • Дан файл, що містить текст. Скільки слів в тексті? Скільки цифр в тексті?

4

  • Дано два текстові файли f1 і f2. Файл f1 містить довільний текст. Слова в тексті розділені пропусками і розділовими знаками. Файл f2 містить не більше 30 слів, які розділені комами. Ці слова утворюють пари: кожне друге є синонімом першого. Замінити у файлі f1 ті слова, які можна, їх синонімами. Результат помістити в новий файл.

  • Дан текстовий файл. Видалити з нього всі зайві пропуски, залишивши між словами не більш за один пропуск. Результат помістити в новий файл.

  • Дан текстовий файл і деяке слово. Надрукувати ті рядки файлу, які містять дане слово.

6

Соседние файлы в папке Лабораторні роботи