МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ІКТА, кафедра “Захист інформації”
ЗВІТ
З ЛАБОРАТОРНОЇ РОБОТИ № 4
З КУРСУ “АЛГОРИТМІЧНІ МОВИ І ПРОГРАМУВАННЯ”
НА ТЕМУ: “РОБОТА З ТЕКСТОВИМИ ФАЙЛАМИ.
СИМВОЛЬНІ ТА РЯДКОВІ ЗМІННІ“
Варіант 12
Львів – 2007
ЗАВДАННЯ
Дано текстовий файл в якому міститься програма мовою СІ (Лабораторна робота №3). Словами є слова в коментарях, назви ідентифікаторів, зарезервовані слова, які розділяються між собою згідно із синтаксисом мови СІ
Написати програму мовою СІ обробки текстового файлу з використанням розроблених функцій для роботи зі стрічками.
Сформувати та вивести на екран текстовий файл зі стрічок, в яких символи “+” замінюються словом “SUMA”, символи “-” – словом “SUB”, символи “*” – словом “MULT”, символи “/” – словом “DIV”. Підрахувати кількість символів “;” у файлі. Пошук символів арифметичних операцій та “;” оформити у вигляді підпрограм.
Таблиця ідентифікаторів констант, змінних, функцій, використаних у блок-схемі алгоритму і програмі, та їх пояснення:
fp
Вказівник на файл, що використовується
fn
Вказівник на файл, у який записується fp зі змінами
s
Вказівник на змінну типу char, використовується для заміни +,-,* та /
c
Змінна для по символьного формування файлу
prog
Функція, що заміняє усі +,-,* та /, які зустрічаються на SUMA,SUB, MULT та DIV відповідно
i
Змінна для підрахунку ;
fopen()
Функція для відкривання файлу
printf()
Функція виведення даних
getc()
Функція, яка зчитує один символ з файлу
putc()
Функція, яка записує один символ у файл
fputs()
Функція, яка записує стрічку у файл
fclose()
Функція, яка закриває файл
Текст програми мовою C
#include<stdio.h>
void prog(int c);
void main(void)
{
int i;
char *s,c;
FILE *fp,*fn;
i=0;
fp=fopen("L_3_23.cpp","r");
fn=fopen("new.txt","w");
while((c=getc(fp))!= EOF)
{
prog(c);
if (c==';') i++;
}
printf("\n tut ie %d ;",i);
putc(i,fn);
fclose(fp);
fclose(fn);
}
void prog(int c)
{
char *s;
FILE *fn;
if (c=='+') s="SUMA";
if (c=='-') s="SUB";
if (c=='/') s="DIV" ;
if (c=='*') s="MULT";
if (c=='+'||c=='-'||c=='/'||c=='*') fputs(s,fn),printf("%s",s);
else putc(c,fn),printf("%c",c);
}
Результати роботи програми:
#include<stdio.h>
#include<stdlib.h>
#define n 5
void bul(int a[n][n]);
void geom (int a[n][n]);
void main(void)
{
int i,j,k;
int a[n][n];
system("cls");
for (i = 0; i < n; iSUMASUMA)
{
for (j = 0; j < n; SUMASUMA
{
printf("a[%d][%d] =", iSUMA1, jSUMA1);
scanf("%d", &a[i][j]);
}
}
printf("old array\n");
for (i = 0; i < n; iSUMASUMA)
{
for (j = 0; j < n; SUMASUMA
printf ("%5d", a[i][j]);
printf("\n");
}
bul(a);
printf("\nnew array\n");
for (i = 0; i < n; iSUMASUMA)
{
for (j = 0; j < n; SUMASUMA
{
printf ("%5d", a[i][j]);
}
printf("\n");
}
geomkal (a);
}
void bul(int a[n][n])
{
int i, k, j, c;
for(j = 0; j < n; jSUMASUMA)
{
for(k = nSUB1; k>=0; k SUBSUB)
{
for(i = 0; i< k; iSUMASUMA){
if(a[i][j] < a[iSUMA1][j]){
c = a[i][j];
a[i][j] = a[iSUMA1][j];
a[SUMA1][j] =c;
}
}
}
}
}
void geom (int a[n][n])
{ int i,j,g;
double k;
for (i=0; i<n SUB 1; iSUMASUMA){
g=1;
{ for (j=iSUMA1; j<n; jSUMASUMA)
g=g MULT a[i][j];
k=pow(abs(g),1 DIV (n SUB1 SUB i));
printf("g[%d]=%d\n" ,i,k);
} }
For (i=0; i<n SUB 1; iSUMASUMA)
gg=g MULT g[i];
printf(‘’gg=%d’’ ,gg);
}
}
tut ie 51;
Висновок: На цій лабораторній роботі я вивчив види файлів, стандартні функції мови CI для роботи з файлами, навчився складати та відлагоджувати програми для роботи з тестовими файлами. Навчився використовувати символьні і рядкові змінні для роботи з текстовими файлами.