ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.08.2024
Просмотров: 6
Скачиваний: 0
Технологія створення програм
Лабораторна робота №4_1
Дана лабораторна робота має бути виконана групою студентів. Група студентів отримує загальне завдання, яке є сукупністю підзадач-модулів. Кожен студент є членом команди і виконуює одне із завдань. Один з членів групи, будучи керівником проекту, здійснює керівництво проекту (визначає складність завдань, розподіляє роботу і конролирует процес її виконання).
Результатом роботи групи є програма, що складається з окремих модулів, що мають загальний інтерфейс.
Керівник проекту контролює процес виконання роботи, написання звіту і представляє роботу викладачеві, дає оцінку роботи кожного члена команди.
Лабораторна робота розрахована на 6 годин виконання:
1 Заняття (2 години):
-
видача індивідуальних завдань;
-
розробка плану виконання робіт групою (розподіл ролей в команді, розподіл завдань, розробка єдиного інтерфейсу);
-
розробка алгоритмів, написання код кожним членом команди.
2 Заняття (2 години):
-
тестування код;
-
написання звітів-інструкцій;
-
вироблення одного загального звіту.
3 Заняття (2 години):
-
захист лабораторної роботи (виконується керівником групи);
-
оцінка вкладу кожного члена команди.
Звіт повинен містити:
-
Тему і мету лабораторної роботи;
-
Блок-схему алгоритму;
-
Коди кожного завдання;
-
Інструкцію по роботі.
Тема: Файли.
Операции с текстовыми файлами
Запис даних у файл
Описати покажчик на файл
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
-
Даний файл, що містить текст англійською мовою і деякі два слова. Визначити, скільки разів вони зустрічаються в тексті і скільки з них — безпосередньо один за одним.
-
Даний файл, що містить текст англійською мовою. Вибрати з нього ті символи, які зустрічаються в нім лише один раз, в тому порядку, в якому вони зустрічаються в тексті.
-
Даний файл, що містить текст і арифметичні вирази вигляду а
-
-
b, де
-
-
— один із знаків +, - *, /. Виписати всі арифметичні вирази і обчислити їх значення.
3
-
Даний файл, що містить текст, що включає російські і англійські слова. Отримати новий файл, замінивши в початковому всі заголовні букви рядковими і навпаки.
-
Даний файл, що містить зашифрований російський текст. Кожна буква замінюється на наступну за нею (буква я замінюється на а). Отримати в новому файлі розшифровку даного тексту.
-
Дано два текстові файли f1 і f2. Файл f1 містить довільний текст. Слова в тексті розділені пропусками і розділовими знаками. Файл f2 містить не більше 30 слів, які розділені комами. Ці слова утворюють пари: кожне друге є синонімом першого. Замінити у файлі f1 ті слова, які можна, їх синонімами. Результат помістити в новий файл.
4
-
Даний текстовий файл. Видалити з нього всі зайві пропуски, залишивши між словами не більш за один пропуск. Результат помістити в новий файл.
-
Дани текстовий файл і деяке слово. Надрукувати ті рядки файлу, які містять дане слово.
-
Даний текстовий файл. Надрукувати в алфавітному порядку всі слова з даного файлу, що мають задану довжину n.
-
Даний файл, що містить текст російською мовою. Підрахувати кількість слів, що починаються і закінчуються на одну і ту ж букву.