Изучение структурной организации, способов доступа к элементам и других особенностей текстовых файлов

Страницы работы

Содержание работы

Цель лабораторной работы: изучение структурной организации, способов доступа к элементам и других особенностей текстовых файлов; изучение стандартных средств языка C/C++ для работы со строками и текстовыми файлами; совершенствование навыков структурного программирования на языке C/С++ при решении задач редактирования текстовых файлов.

Задание на программирование:

Создать исходный текстовый фаил, внести в него введенные строки. Признак окончания ввода — пустая строка. Выделить из строк фаила слова - полиндромы  и сохранить их в результирующем  текстовом фаиле.

Схема алгоритма:

Ввод строк и
сохранение их в фаил
,Построчный вывод строк в фаил,
 проходя обработку
 Функцией аналогичной ф-цие
 из лабораторной работы 8
,Ввод имени конечного фаила,Конец,Начало,Создание фаила,Ввод имени исходного фаила


Текст программы:

#include <iostream.h>

#include <stdio.h>

#include <conio.h>

#include <string.h>

#include <stdlib.h>

#include <fstream.h>

#include <ctype.h>

const max=256;

int k;

unsigned char str[max];

unsigned char str2[max/2][max];

unsigned char str3[max] = "";

char filename[40];

char filenameo[40];

void down(unsigned char str[max]);

int videl(unsigned char str[max], unsigned char str2[max/2][max]);

void pol(int k,unsigned char str2[max/2][max]);

void comb(int k,unsigned char str[max], unsigned char str2[max/2][max]);

int createf();

void palindrom(unsigned char str[max], unsigned char str3[max]);

int makeout(unsigned char str3[max]);

void main()

{

clrscr();

createf();

makeout(str3);

cout << "\nSlova palindromi uspeshno wiwedeny w fail << " << filenameo << " >>";

getch();

}

int createf()

{

unsigned char string[40];

cout << "enter filename\n";

cin.getline(filename,40);

ofstream file(filename);

if(!file)

{

cout << "File could not be opened!!\n";

return -1;

}

cout << "Wwedite stroki\n\n";

while(1)

{

cin.getline(string,50);

if (!strcmp(string,"")) break;

file << string << endl;

}

file.close();

return 0;

}

int makeout(unsigned char str3[max])

{

int i;

unsigned char string[max];

unsigned char string2[max];

cout << "enter output filename\n";

cin.getline(filenameo,40);

ofstream file_out(filenameo);

ifstream file(filename);

if(!file)

{

cout << "File could not be opened!!\n";

return -1;

}

while(1)

{

for(i=1;!file.eof(); i++)

{

file.getline(str, max);

palindrom(str,str3);

file_out << str3<< endl;

}

if (file.eof()) break;

}

return 0;

}

void palindrom(unsigned char str[max],unsigned char str3[max])

{

::str3[0]='\0';

down(str);

k = videl(str,str2);

pol(k,str2);

comb(k,str3,str2);

}

int videl(unsigned char str[max], unsigned char str2[max/2][max])

{

int i=0,j=0;

while(str[i])

{

int k=0;

while(str[i] == ' ')  i++;

while(str[i] != ' ' && str[i])

{

str2[j][k] = str[i];

k++;

i++;

}

str2[j][k] = '\0';

j++;

}

return j;

}

void down(unsigned char str[max])

{

int i=0;

while(str[i])

{

if (str[i]=='.') str[i]=' ';

str[i]=tolower(str[i]);

i++;

}

}

void pol(int k,unsigned char str2[max/2][max])

{

int j,i=0;

while(i < k-1)

{

int len;

int j=0;

len = strlen(str2[i]);

while(j < len)

{

if (str2[i][j] != str2[i][len-j-1])

{

str2[i][j] = ' ';

str2[i][len-j-1] = ' ';

}

j++;

}

i++; }}

void comb(int k,unsigned char str3[max], unsigned char str2[max/2][max])

{

int i=0;

while(i<k-1)

{

int k=1;

int len,j=0;

len = strlen(str2[i]);

while (j<len-1)

{

if (str2[i][j] == ' ') k=0;

j++;

}

if (k == 1)

{

strcat(str3,str2[i]);

strcat(str3," ");

}

i++;

}

}

Скриншот работы программы:

Содержание фаилов 1.txt и 2.txt

1.txt

qwerty.

qwq.

asdfdsa asd asdsa.

qwewq.

qwertrewq.

2.txt

qwq

asdfdsa asdsa

qwewq

qwertrewq

Похожие материалы

Информация о работе