МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
кафедра КБ
З В І Т
до лабораторної роботи №4
з курсу: «Технології програмування»
на тему: «ОБРОБКА СИМВОЛЬНИХ РЯДКІВ. РОБОТА З ФАЙЛАМИ»
Варіант № 22
Мета роботи – вивчити елементи мови Сі, рядки, рядкові константи, принципи потокового вводу-виводу, стандартні файли і функції для роботи з ними.
1. Завдання
1. Ознайомитися з організацією роботи вводу-виводу в мові Cі.
2. Ознайомитися з потоковим вводом, відкриттям і закриттям потоку в мові Cі.
3. Ознайомитися з стандартними функціями для роботи з файлами в мові Cі.
4. Дано текстовий файл, в якому міститься програма мовою С (Лабораторна робота №3). Скласти блок-схеми алгоритмів та програму мовою С для обробки текстового файлу з використанням розроблених функцій для роботи зі стрічками. Оформити виконання одного із завдань у вигляді підпрограми. Словами є слова в коментарях, назви ідентифікаторів, зарезервовані слова, які розділяються між собою згідно із синтаксисом мови С. Дані для роботи беруться з табл.1 за вказівкою викладача..
2. Блок-схема алгоритму програми
3. Список ідентифікаторів констант, змінних, функцій,
використаних у блок-схемі алгоритму і програмі,
та їх пояснення
fopen()-функція,яка відкриває файл;
fgets()-функція зчитує символи з потоку і зберігає їх у вигляді рядка;
i++-збільшення індексу масиву(інкремент);
i,n,m,-змінні у функції;
strcpy()-функція для копіювання рядків(стрічок);
strcat()-функція для обєднання рядків;
printf()-функція виведення даних;
scanf()-функція введення даних;
puts()-функція для виводу рядка на екран;
tM-кількість малих букв в рядку;
tV-кількість великих букв в рядку;
if-умовний оператор;
while-оператор циклу з передумовою;
for-оператор покрокового циклу;
do while-оператор циклу з післяумовою.
4. Текст програми
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main ()
{
int i,n, m = 0, tM, tV;
char str[256][100], temp[100];
char * ptr;
FILE *filePtr;
if ((filePtr = fopen("input.txt", "r")) == NULL)
{
printf("File could be not opened.\n");
return 0;
}
i = 0;
while (!feof (filePtr)) {
fgets (str[i], 100, filePtr);
i++;
}
n = i;
tM = 0;
tV = 0;
for (i = 0; i < n; i ++)
{
ptr = str[i];
for (; *ptr; ptr++)
{
if (*ptr >= 'A' && *ptr <= 'Z')
tV++;
if (*ptr >= 'a' && *ptr <= 'z')
tM++;
}
tM|tV ? printf ("Line %s has %d small letters and %d big letters\n\n", str[i], tM, tV) : 0 ;
tM = 0;
tV = 0;
}
for (i = 0; i < n; i ++) {
ptr = str[i];
for (; *ptr; ptr++) {
if (*ptr == ';') {
strcpy (temp, ptr+1);
*ptr = '\0';
strcat (str[i], "END_LINE");
strcat (str[i], temp);
}
}
puts (str[i]);
}
return 0;
}
5. Результати роботи програми
Line #include <stdio.h>
has 13 small letters and 0 big letters
Line #include <stdlib.h>
has 14 small letters and 0 big letters
Line #include <math.h>
has 12 small letters and 0 big letters
Line #define n 5
has 7 small letters and 0 big letters
Line void sort(int a[n][n]);
has 14 small letters and 0 big letters
Line void serar(int a[n][n]);
has 15 small letters and 0 big letters
Line void middleValue(int a[n][n],double b[n]);
has 28 small letters and 1 big letters
Line void seredHeometrical(double a[n]);
has 27 small letters and 1 big letters
Line main(void){
has 8 small letters and 0 big letters
Line int i,j,k;
has 6 small letters and 0 big letters
Line int a[n][n];
has 6 small letters and 0 big letters
Line double b[n];
has 8 small letters and 0 big letters
Line system("cls");
has 9 small letters and 0 big letters
Line for(i=0;i<n;i++){
has 7 small letters and 0 big letters
Line for(j=0;j<n;j++){
has 7 small letters and 0 big letters
Line printf("a[%d][%d]=",i+1,j+1);
has 11 small letters and 0 big letters
Line scanf("%d",&a[i][j]);
has 9 small letters and 0 big letters
Line sys...