МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ІКТА кафедра «Захист інформації»
Звіт
про виконання лабораторної роботи №7
з курсу «Алгоритмічні мови і програмування»
на тему:
РОБОТА З ФАЙЛАМИ.
СИМВОЛЬНІ ТА РЯДКОВІ ЗМІННІ
ВАРІАНТ 18
Львів – 2007
ПОВНИЙ ТЕКСТ ЗАВДАННЯ
Дано текстовий файл, в якому міститься програма мовою С (лаб. робота №3). Словами є слова в коментарях, назви ідентифікаторів, ключові слова, які розділяються між собою згідно із синтаксисом мови С.
Написати програму мовою С обробки текстового файлу.
Сформувати із заданого текстового файлу масив елементів, що містить всі цифри, які зустрічаються у файлі. Розбити цей масив у стрічки по дві цифри у кожній. Перевести кожну із стрічок у десяткове число і вивести на екран і у файл стрічки заданого текстового файлу з одержаними номерами. Пошук цифр у стрічці оформити у вигляді функції.
Список ідентифікаторів констант, змінних, функції, використаних у блок-схемі алгоритму і програмі, та їх пояснення:
printf( ) – функція, що виводить дані на дисплей;
scanf( ) – функція, що зчитує дані з клавіатури;
main( ) – головна функція;
f – заданий файл;
rez – результат;
im, str – рядкові змінні;
i, j, n – проміжні змінні;
Poshuk( ) – функція, яка знаходить цифри у файлі.
ОСТАТОЧНА ВЕРСІЯ ПРОГРАМИ:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void Poshuk (char* s,char* cyf);
void main()
{
FILE* f,*rez;
char im[20],str[255],cyf[30],mas[11],dv[3];
int i,j,n;
printf("vvedit shliah do textovoho fajla: ");
gets(im);
f=fopen(im,"r");
if(f==NULL){
puts("nemogluvo vidkrutu fajl");
getchar();
return;
}
rez=fopen("cyfry_rez.txt","w");
n=0;
while(fgets(str,255,f)!=NULL){
Poshuk(str,cyf);
i=0;
while(i<strlen(cyf)) {
for(j=0;j<n;j++)
if(cyf[i]==mas[j])
break;
if(j==n) {
mas[j]=cyf[i];
n++;
}
i++;
}
}
printf("zustrichautsya cyfry: ");
for(i=0;i<n;i++)
printf("%c ",mas[i]);
puts("");
fputs("rezyltat\n",rez);
i=0;
while(i<n){
dv[0]=mas[i];
if(i+1<n){
dv[1]=mas[i+1];
dv[2]='\0';
}else
dv[1]='\0';
printf("%s ",dv);
fprintf(rez,"%s ",dv);
fseek(f,0,SEEK_SET);
j=1;
while(fgets(str,255,f)!=NULL && j!=atoi(dv))
j++;
if(j!=atoi(dv)){
puts("riadka nema");
fputs("riadka nema",rez);
}else{
puts(str);
fputs(str,rez);
}
i+=2;
}
getchar();
}
void Poshuk (char* s,char* cyf){
char *p,*n;
for(p=s,n=cyf;*p!='\0';p++)
if(*p>='0' && *p<='9'){
*n=*p;
n++;
}
*n='\0';
}
РЕЗУЛЬТАТИ РОБОТИ ПРОГРАМИ:
zustrichautsya cyfry:
511001100014444001101111101
a[i][k]=a[i][j]; a[i][j]=x;
int i, j, a[n][n];
#include <stdio.h>
{
{
{
double b[n-1];