РОБОТА З ТЕКСТОВИМИ ФАЙЛАМИ. СИМВОЛЬНІ ТА РЯДКОВІ ЗМІННІ

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКТА
Факультет:
Не вказано
Кафедра:
Захист інформації

Інформація про роботу

Рік:
2007
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Алгоритмічні мови та програмування
Група:
ІБ-13

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” ІКТА кафедра „ЗАХИСТ ІНФОРМАЦІЇ” ЗВІТ до лабораторної роботи № 7 З КУРСУ “АЛГОРИТМІЧНІ МОВИ І ПРОГРАМУВАННЯ” на тему: „РОБОТА З ТЕКСТОВИМИ ФАЙЛАМИ. СИМВОЛЬНІ ТА РЯДКОВІ ЗМІННІ” Варіант № 20 Мета роботи – навчитися працювати з файлами та з розробленими процедурами мови Сі для роботи з стрічками, вивчити синтаксис опису функцій для роботи з файлами та стрічками. 2. ПОВНИЙ ТЕКС ЗАВДАННЯ Знайти кількість приголосних літер в кожному рядку заданого файлу. Вивести на екран рядки файлу в порядку збільшення кількості приголосних літер в цих рядках. Сформувати та вивести на екран текстовий файл, в якому замінити символи “;” словами “END_LINE”. Пошук символу “;” оформити у вигляді підпрограми. Програму написати з використанням розроблених процедур та функцій для роботи зі стрічками. 3. ОСТАТОЧНА ВЕРСІЯ БЛОК-СХЕМИ АЛГОРИТМУ  Блок-схема функції IsProcedure(s)  4. СПИСОК ІДЕНТИФІКАТОРІВ КОНСТАНТ, ЗМІННИХ, ПРОЦЕДУР І ФУНКЦІЙ, ВИКОРИСТАНИХ У ПРОГРАМІ, ТА ЇХ ПОЯСНЕННЯ in, out – покажчики на тип FILE за допомогою яких отримуємо доступ до файлів на диску; tmp, buf – масиви символів; lines – масив користувацької структури; i, j – змінні типу int для зберігання введених даних та результату роботи програми; clrscr() – функція очистки екрана яка об’явлена в модулі conio.h; getch() – функція яка чекає натискання будь-якої клавіші; printf() – функція виведення текстових повідомлень і значень змінних на екран; fopen(fPath,s) – функція яка відкриває файл fPath у режимі s (fPath i s – стрічки) та повертає покажчик на тип FILE тим самим зв’язуючи цей покажчик з файлом на диску; fclose(file) – функція, яка закриває файл зв’язаний з покажчиком file; fgets(buf, n, file) – функція, яка закриває зчитує з файла file рядок символів у масив buf, де n – розмір масиву buf; fputs(s, file) – функція, яка записує у файл file рядок s; strcat(s1, s2) – функція, яка дописує до рядка s1 рядок s2; strstr(s1, s2) – функція, яка повертає покажчик на перший символ входження рядка s2 в рядок s1. Якщо рядок s1 не містить рядка s2 то функція повертає NULL; Користувацькі функції rEnd_Line(s) – функція яка замінює символи “;” на слово “END_LINE” в рядку s; SortLines() – впорядковує рядки шляхом заміни покажчиків на ці рядки в масиві структури; nPrugol(s) – повертає кількість приголосних букв у стрічці s; 5. ОСТАТОЧНА ВЕРСІЯ ПРОГРАМИ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> #define IN "Lab3_v20.pas" #define OUT "Out.txt" #define MAX 256 struct { char *s; int n; } lines[MAX]; int nStr=0; //======================================================= void rEnd_Line(char *s) { char buf[MAX]; buf[0]=0; char *tmp,*p=s; while (tmp=strstr(p,";")) { *tmp=0; strcat(buf,p); strcat(buf,"END_LINE"); p=tmp+1; } strcat(buf,p); strcpy(s,buf); } //======================================================= void SortLines() { int i=1,j; for (i=1;i<nStr;i++) for (j=nStr-1;j>=i;j--) if (lines[j-1].n>lines[j].n) { char *p=lines[j-1].s; lines[j-1].s=lines[j].s; lines[j].s=p; int t = lines[j-1].n; lines[j-1].n=lines[j].n; lines[j].n=t; } } //======================================================= int nPrugol(char *s) { const int n=10; int np=0; char szGol[]="AaEeIiOoYy"; while (*s) { if (*s>='A' && *s<='Z' || *s>='a' && *s<='z') { np++; for (int j=0; j<n; j++) if (*s==szGol[j]) np--; } s++; } return np; } //======================================================= void main(void) { FILE *in,*out; char tmp[MAX]; in=fopen(IN,"r"); out=fopen(OUT,"w"); while (1) { if (fgets(tmp,MAX,in)==NULL) break; lines[nStr].s=(char*)malloc(strlen(tmp)); strcpy(lines[nStr].s,tmp); lines[nStr].n=nPrugol(tmp); nStr++; rEnd_Line(tmp); fputs(tmp,out); } fclose(in); fclose(out); SortLines(); for (int j=0;j<nStr;j++) printf("%s",lines[j].s); printf("\n\n\n=====\tOut.txt\t=====\n\n\n"); out=fopen(OUT,"r"); while (1) { if (fgets(tmp,MAX,in)==NULL) break; printf("%s",tmp); } fclose(out); getch(); } 6. РЕЗУЛЬТАТИ РОБОТИ ПРОГРАМИ {=============================================} {=============================================} {=============================================} {=============================================} dob:=1; end; end; end; end; end; end; end; end. begin begin begin begin begin x:=a[j-1,k]; a[j,k]:=x; begin sum:=0; begin readkey; var a:mas; dob:real; write(a[i,j]:4); k,i,j:byte; a[j-1,k]:=a[j,k]; const n=5; var j:byte; var i,j:byte; for i:=1 to n do writeln; for i:=2 to n do for i:=1 to n do for i:=2 to n do uses crt; for j:=1 to n do for k:=1 to n do for j:=1 to n do clrscr; PrintMas; d:=Dobutok(a,i); Dobutok:=dob; var x:integer; write('a[',i,',',j,']:= '); read(a[i,j]); sum:=sum+d; if a[j,k]>a[j-1,k] then Sort; writeln; i,j:byte; sum,d:real; procedure Sort; for j:=n downto i do begin clrscr; program SortMas; PrintMas; writeln; procedure PrintMas; type mas=array [1..n,1..n] of integer; for j:=n downto n-i+2 do dob:=dob*a[i,j]; function Dobutok(a:mas;i:byte):real; writeln; Writeln('Vvedeno matrix A:'); writeln('Vvedit matrix A (rozmir ',n,'x',n,'):'); writeln('Dobutok radka ',i,' pid dopom diagonally: ',d:1:0); writeln; writeln('Seredne arufmetuchne SA = ',Sum/(n-1):3:2); writeln('Rezultatu robotu programu, Matrix A:'); writeln; ===== Out.txt ===== program SortMasEND_LINE uses crtEND_LINE const n=5END_LINE type mas=array [1..n,1..n] of integerEND_LINE var a:masEND_LINE i,j:byteEND_LINE sum,d:realEND_LINE {=============================================} function Dobutok(a:masEND_LINEi:byte):realEND_LINE var j:byteEND_LINE dob:realEND_LINE begin dob:=1END_LINE for j:=n downto n-i+2 do dob:=dob*a[i,j]END_LINE Dobutok:=dobEND_LINE endEND_LINE {=============================================} procedure PrintMasEND_LINE var i,j:byteEND_LINE begin for i:=1 to n do begin for j:=1 to n do write(a[i,j]:4)END_LINE writelnEND_LINE endEND_LINE endEND_LINE {=============================================} procedure SortEND_LINE var x:integerEND_LINE k,i,j:byteEND_LINE begin for k:=1 to n do for i:=2 to n do for j:=n downto i do if a[j,k]>a[j-1,k] then begin x:=a[j-1,k]END_LINE a[j-1,k]:=a[j,k]END_LINE a[j,k]:=xEND_LINE endEND_LINE endEND_LINE {=============================================} begin clrscrEND_LINE writeln('Vvedit matrix A (rozmir ',n,'x',n,'):')END_LINE for i:=1 to n do for j:=1 to n do begin write('a[',i,',',j,']:= ')END_LINE read(a[i,j])END_LINE endEND_LINE clrscrEND_LINE writelnEND_LINE Writeln('Vvedeno matrix A:')END_LINE PrintMasEND_LINE SortEND_LINE writelnEND_LINE writeln('Rezultatu robotu programu, Matrix A:')END_LINE writelnEND_LINE PrintMasEND_LINE writelnEND_LINE sum:=0END_LINE for i:=2 to n do begin d:=Dobutok(a,i)END_LINE writeln('Dobutok radka ',i,' pid dopom diagonally: ',d:1:0)END_LINE sum:=sum+dEND_LINE endEND_LINE writelnEND_LINE writeln('Seredne arufmetuchne SA = ',Sum/(n-1):3:2)END_LINE readkeyEND_LINE end. 7. ВИСНОВОК На даній лабораторній роботі я навчився зчитувати та записувати дані у файл, вивчив синтаксис деяких функцій для роботи з стрічками. Також була вивчена технологія макропідстановки за допомогою макроса #define. На основі наведених вище даних була створена відповідна програма для роботи з файлами та стрічками.
Антиботан аватар за замовчуванням

28.01.2013 14:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!