МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ІКТА, кафедра “Захист інформації”
ЗВІТ
З ЛАБОРАТОРНОЇ РОБОТИ № 7
З КУРСУ “АЛГОРИТМІЧНІ МОВИ І ПРОГРАМУВАННЯ”
НА ТЕМУ: “РОБОТА З ТЕКСТОВИМИ ФАЙЛАМИ.
СИМВОЛЬНІ ТА РЯДКОВІ ЗМІННІ“
Варіант 23
Львів – 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<math.h>
#include<conio.h>
#define n 5
void sorting(int a[n][n]);
int sum(int a[n][n],int i);
double gmean(int suma[nSUB1]);
void main(void)
{
clrscr();
int i,j,a[n][n],suma[nSUB1];
for (i=0;i<n;iSUMASUMA)
for(j=0;j<n;jSUMASUMA)
{
printf("a[%d][%d]=",iSUMA1,jSUMA1);
scanf("%i",&a[i][j]);
}
printf("\n old array\n");
for (i=0;i<n;iSUMASUMA)
{
printf("\n");
for(j=0;j<n;jSUMASUMA)
printf("%d ",a[i][j]);
}
sorting(a);
printf("\n\nnew array \n");
for (i=0;i<n;iSUMASUMA)
{
printf("\n");
for(j=0;j<n;jSUMASUMA)
printf("%d ",a[i][j]);
}
for (i=0;i<=nSUB2;iSUMASUMA)
{
suma[i]=sum(a,i);
printf("\n Suma[%d]=%d",iSUMA1,suma[i]);
}
printf("\n gmean=%4.2lf",gmean(suma));
getch();
}
void sorting (int a[n][n])
{
int t,i,j,x;
{
for (t=0;t<=nSUB1;tSUMASUMA)
for(i=1;i<=nSUB1;iSUMASUMA)
{
x=a[i][t];
j=iSUB1;
while (a[j][t]>=x && j>=0)
{
a[jSUMA1][t]=a[j][t];
j=jSUB1;
}
a[jSUMA1][t]=x;
}
}
}
int sum(int a[n][n],int i)
{
int suma,x,j;
suma=0;
for (j=0;j<=nSUB1;jSUMASUMA)
{
if(i<j)
sumaSUMA=a[i][j];
}
return suma;
}
double gmean(int suma[nSUB1])
{
double gm;
int i;
gm=1;
for (i=0;i<=nSUB2;iSUMASUMA)
gmMULT=suma[i];
return pow(gm,1.0DIVi);
}
tut ie 55;
Висновок: На цій лабораторній роботі я вивчив види файлів, стандартні функції мови CI для роботи з файлами, навчився складати та відлагоджувати програми для роботи з тестовими файлами. Навчився використовувати символьні і рядкові змінні для роботи з текстовими файлами.