Отчет по лабораторной работе №9



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

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

Выполнить задание.

 

Вариант задачи

1)  Скопировать из файла F1 в файл F2 все строки, кроме тех, что начинаются на букву А.

2)  Подсчитать количество символов в первом слове F2.

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

//---------------------------------------------------------------------------

 

#include <vcl.h>

#pragma hdrstop

#include <iostream.h>

#include <conio.h>

#include <windows.h>

#include <stdio.h>

#include <fstream.h>

#include <string>

#include <string.h>

#include <iomanip.h>

 

//---------------------------------------------------------------------------

 

#pragma argsused

char* rus(const char* text);

void record(int n, FILE *);

void show(FILE *, char *);

void show2(FILE *, char *);

void copy(FILE *, FILE *, char *);

void amount(FILE *, char *);

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

{

           const int n = 2550;

           FILE *f1; // указатель на 1 файл

           FILE *f2; // аналогично

           char text[n]; // массив символов куда запись инфы

 

           /*

                          1.       Создать текстовый файл F1 не менее,

                          чем из 10 строк и записать в него информацию

           */

 

 

           record(n,f1); // запись строк в файл f1

           show(f1,text); // показ

 

           // 2. Выполнить задание.

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

           //                        кроме тех, что начинаются на букву А.

cout << endl;

           copy(f1,f2,text); // копирование по заданию

           show2(f2,text); // показ

           //                        2)       Подсчитать количество символов в первом слове F2.

           amount(f2,text);// подсчет кол-ва

 

 

           getch();

           return 0;

}

void record(int n, FILE *f1)

{

           char *str = new char [n];

           f1 = fopen("f1.txt", "w"); // открываем файл f1 для записи

           cin.get(str,n,'*'); // ввод до тех пор, пока не введем *

           fputs(str,f1); // запись в файл

           fclose(f1); // закрываем

}

void show(FILE *f1, char *text)

{

           clrscr();

           // ф-ия показ

           int i=0; // счетчик строк

           char *real_tail;

           f1 = fopen("f1.txt", "r"); // файл для чтения

           if (f1 == NULL)

                          {

                          perror(rus("Создайте файл f1.txt"));

                          }

           while(fgets(text,2550,f1)) // считываем файл построчно

 

           {

           real_tail="";

           printf(rus("Строка %d: "),++i);// покажем номер строки

 

           if(text[strlen(text)-1] == '\n')//проверяем является ли последний элемент

                                                                                                                                        //        в строке символом ее окончания

                                                                                                                                        // strlen-1 т.к последний символ - это \n

           { // если является, то

 

           text[strlen(text)-1]='\0'; // конец строки

           }// эта часть кода добавлена лишь для

           // отображения символа конца строки в консоль без перевода на новую строку

 

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

 

           };

 

           fclose(f1); // закрываем

 

}

void copy(FILE *f1, FILE *f2, char *text)

{ //1) Скопировать из файла F1 в файл F2 все строки,

//     кроме тех, что начинаются на букву А.

           f1 = fopen("f1.txt", "r"); // для считывания файл 1

           if (f1 == NULL)

                          {

                          perror(rus("Создайте файл f1.txt"));

                          }

           f2 = fopen("f2.txt", "w"); // для записи файл 2

           if (f2 == NULL)

                          {

                          perror(rus("Создайте файл f2.txt"));

                          }

 

           char *real_tail; // опять хвостик

           while(fgets(text,2550,f1)) // считываем строки

           {

           int key = text[0]; // это нужно для сравнения

           if((key == -96)||(key == -128))//проверяем является ли первый элемент в строке

                                                                                                                                        // символом А

           {

           text[0]='\0'; // если является, то это конец строки

                          // и переходим к следующей

           }

           else fputs(text,f2); // иначе вставляем в файл 2

           };

 

           fclose(f1); // закрываем

           fclose(f2); // закрываем

}

void show2(FILE *f2, char *text)

{

           // все аналогично как в show

           int i=0;

           char *real_tail;

           f2 = fopen("f2.txt", "r");

           if (f2 == NULL)

                          {

                          perror(rus("Создайте файл f2.txt"));

                          }

           while(fgets(text,2550,f2))

           {

           real_tail="";

           printf(rus("Строка %d: "),++i,strlen(text));

 

           if(text[strlen(text)-1] == '\n')//проверяем является ли последний элемент

                                                                                                                                        //        в строке символом ее окончания

           {

           text[strlen(text)-1]='\0';

           }// эта часть кода добавлена лишь для

           // отображения символа конца строки в консоль без перевода на новую строку

 

           printf("%s%s\n",text,real_tail);

 

           };

 

           fclose(f2); // закрываем

 

}

void amount(FILE *f2, char *text)

{

           f2 = fopen("f2.txt","r"); // открываем для считывания

           if (f2 == NULL)

                          {

                          perror(rus("Создайте файл f1.txt"));

                          }

           int chislo=0; // число символов в 1 слове

           int chislo2 = 0; // для регулирования подсчета символов

 

           fgets(text,2550,f2);// считываем первую строку

 

           for (int i = 0; i < strlen(text); i++) // идем по строке

           {

 

           if (chislo2 == 1) break; // если число2 = 1, то выход. значит подсчитали

                                                                                                                        // число симвовол

           else // иначе считаем число символов в 1 слове 1 строки

                          {

                          if ((text[i] != ' ')&&(text[i] != ',')&&(text[i] != '!')&&(text[i] != '\n')

                                          &&(text[i] != '\0'))

                          {

                          // после первого слова будут символы выше, до появления этих символов

                          // считаем их количество

                          chislo++;

                          }

                          else chislo2++; // если попали на тот символ, то число2 = 1, а значит

                                                                                         // первое слово закончилось

                          }

           }

 

           // выводим это количество!

           cout << endl <<rus("Кол-во символов в 1 слове 1 строки: ")<<chislo;

           fclose(f2);

}

char bufrus[256];

char* rus(const char* text)

   {

           CharToOem(text,bufrus);

           return bufrus;

   }

 

//---------------------------------------------------------------------------

Результат работы программы


Дата добавления: 2018-05-13; просмотров: 292; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!