Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
профорг поясняет.doc
Скачиваний:
4
Добавлен:
14.08.2019
Размер:
752.13 Кб
Скачать
    1. Результат работы программы

Рис 11. Результат работы программы 8: заполнение структур

Рис 12. Результат работы программы 8

  1. Лабораторная работа №9 «Строковый ввод-вывод»

    1. Постановка задачи

Создать текстовый файл F1 не менее, чем из 10 строк и записать в него информацию.

Скопировать из файла F1 в файл F2 все строки, которые не содержат слова , начинающиеся на одну букву.

Найти самое короткое слово в файле F2.

    1. Программа решения задачи

#include <vcl.h>

#include <iostream.h>

#include <conio.h>

#include <math.h>

#include <fstream.h>

#include <stdio.h>

#include <iomanip.h>

#include <algorithm>

#include <string.h>

#include <fstream.h>

#pragma hdrstop

#pragma argsused

/*

1) Скопировать из файла F1 в файл F2 все строки, которые не содержат слова ,

начинающиеся на одну букву.

2) Найти самое короткое слово в файле F2.

*/

char* Rus(const char* text);

void vvod_F1(char* outfile);

void copy_F1(char* infile, char* outfile);

int schet(char* outfile);

void show(char* outfile);

int main(int argc, char* argv[])

{

vvod_F1("F1.txt"); //создаем файл и записываем в него строки

copy_F1("F1.txt","F2.txt"); //копируем в другой файл нужные строки

cout<< endl <<Rus("Данные из файла F2.txt:")<<endl<<endl;

show("F2.txt"); //выводим данные из второго файла

//выводим размер самого маленького слова

cout<<Rus("Количество букв в самом маленьком слове: ")<< schet("F2.txt");

getch();

return 0;

}

// Функция создает текстовый файл F1.txt и вводится с клавиатуры текст этого файла

void vvod_F1(char* outfile)

{

int len = 0;

char s[255]; //строка

cout<<Rus("Введите количество строк: ");

cin>>len;

ofstream f1(outfile);

cout<<Rus("Введите текст:") << endl << endl;

_flushall();

for (int i=0;i<len;i++) //записываем строку

{

gets(s);

f1.write(s,strlen(s));

f1.write("\n",1);

}

cout << endl <<Rus("Ввод завершен.");

cout<< endl << endl;

f1.close();

}

// Функция копирует определенные данные из файла F1.txt в файл F2.txt

void copy_F1(char* infile, char* outfile)

{ const max=255;

char s[max]; //строка

int dlin=0; //длина строки

ifstream f1(infile);

ofstream f2(outfile);

while (!f1.eof()) //начинаем просматривать файл

{

f1.getline(s,max);

dlin=strlen(s);

for(int i=0;i<dlin;i++) //просматриваем строку

{

if(s[i]==' ' && s[i+1]==s[0]) //если нашли слова, начинающиеся на одну букву - их не записываем

{

break; //не записываем ее

}

else

{

if(i==(dlin-1)) //если дошли до конца строки

{

f2.write(s,strlen(s)); //переписываем строку

f2.write("\n",1);

}

continue;

}

}

}

f1.close();

f2.close();

}

// функция, ищущая самое маленькое слово

int schet(char* outfile)

{

ifstream f2(outfile);

const int max=255;

char s[max]; //строка

int dlin; //длина строки

int min=255; //переменная для хранения длины самого маленького слова

int curlen; //длина текущего слова

while (!f2.eof())

{

int curb=0; //начало текущего слова

f2.getline(s,max);

dlin= strlen(s); //длина тек. строки

if (dlin!=0)

{

for(int i=0;i<=dlin;i++)

{

if(s[i]==' ' || i==dlin ) //ищем слово

{

curlen=i-curb; //находим его длину

if (curlen<min) min=curlen; //записываем минимальное

curb=i+1; //передвигаемся на начало следующего слова

}

}

}

}

f2.close();

return min;

}

// Функция вывода данных на экран

void show(char* outfile)

{

ifstream f2(outfile);

char s[256];

while (!f2.eof())

{

f2.getline(s,255) ; //берем строку

printf("%s\n",s); //печатаем и переводим строку

}

cout<< endl << endl;

f2.close();

}

char bufrus[256];

char* Rus(const char* text)

{

CharToOem(text,bufrus);

return bufrus;

}