DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

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

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

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

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

Рік:
2013
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Алгоритмічні мови та програмування
Група:
ІБ-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:18

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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