МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ, МОЛОДІ ТА СПОРТУ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
кафедра ЗІ
З В І Т
до лабораторної роботи №4
з курсу: «Алгоритмічні мови та програмування»
на тему: «ОБРОБКА СИМВОЛЬНИХ РЯДКІВ. РОБОТА З ФАЙЛАМИ»
Варіант № 7
Львів – 2011
Мета роботи – вивчити елементи мови Сі, рядки, рядкові константи, принципи потокового вводу-виводу, стандартні файли і функції для роботи з ними.
1. Завдання
1. Ознайомитися з організацією роботи вводу-виводу в мові Cі.
2. Ознайомитися з потоковим вводом, відкриттям і закриттям потоку в мові Cі.
3. Ознайомитися з стандартними функціями для роботи з файлами в мові Cі.
4. Дано текстовий файл, в якому міститься програма мовою С (Лабораторна робота №3). Скласти блок-схеми алгоритмів та програму мовою С для обробки текстового файлу з використанням розроблених функцій для роботи зі стрічками. Оформити виконання одного із завдань у вигляді підпрограми. Словами є слова в коментарях, назви ідентифікаторів, зарезервовані слова, які розділяються між собою згідно із синтаксисом мови С. Дані для роботи беруться з табл.1 за вказівкою викладача..
№ п/п
Завдання
7
Сформувати і вивести на екран текстовий файл, в якому пробіли замінюються символом підкреслення. Підрахувати кількість арифметичних операцій (+,-,*,/) у файлі.
2. Блок-схема алгоритму програми
Головна програма
Алгоритм підпрограми виконання завдання
3. Список ідентифікаторів констант, змінних, функцій,
використаних у блок-схемі алгоритму і програмі,
та їх пояснення
golos(str,sss) – функція яка рахує кількість літер у рядку та замінює всі символи “(” і “)” на “[” і “]” відповідно;
i – змінна цілого типу , яка є визначником елемента символьного рядка;
j – змінна цілог типу яка є лічильником літер у рядку;
str[n] – масив з n елементів символьного типу(текстовий рядок);
sss[n] – масив з n елементів cимвольного типу(текстовий рядок);
int isalpha(int a) – повертає ненульове значення, якщо символ а є латинською літерою, інакше нуль;
itoa(int numb, char*str, int base) – перетворює цілочислове значення параметра numb у символьний рядок і записує його за адресою, заданою параметром str. Параметр base задає основу системи числення, в якій буде записане число;
FILE*fp – відкриття потоку через вказівник fp;
FILE*fpp – відкриття потоку через вказівник fpp;
fopen("LAB3.C","r") – відкриття файлу LAB3.C для читання;
fopen("orbit.C","w") – відкриття файлу orbit.C для запису;
n – константа цілого типу зі значенням 50 задана на початку програми.
4. Текст програми
#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#define n 50
FILE*fp;
FILE*fpp;
int golos(char *str);
void main(void)
{
char str[n]; int cl;
fp=fopen("LAB3.C","r");
if (fp==NULL)
{
printf("file ne pravulniy");
}
fpp=fopen("Oleg","w");
while (fgets(str,n,fp) !=NULL)
{
cl= cl + golos(str);
fprintf(fpp, "%s", str);
printf("%s" ,str);
}
printf("%d", cl);
fprintf(fpp, "%d", cl);
fclose(fp);
fclose(fpp);
}
int golos(char *str)
{
int i,j,cl;
j=0; i=0; cl=0;
while(str[i]!='\0')
{
if (str[i]==' ') str[i]='_';
if ((str[i]=='+') && (str[i-1]!='+')) cl++;
if ((str[i]=='-') && (str[i-1]!='-')) cl++;
if (str[i]=='*') cl++;
if (str[i]=='/') cl++;
i++;
}
return cl;
}
5. Результати роботи програми