Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Отчет по лабораторной работе №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;

   }

 

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

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



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

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

Написать программу, в которой создаются динамические массивы и выполнить их обработку в соответствии со своим вариантом.

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

Сформировать двумерный массив. Удалить из него столбец с заданным номером;

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

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

 

#include <vcl.h>

#pragma hdrstop

#include <iostream.h>

#include <conio.h>

#include <windows.h>

#include <stdlib.h>

#include <stdio.h>

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

 

#pragma argsused

char* rus(const char* text); //создать вначале прграммы

int** create(int **, int &, int &);

void show(int **, int &, int & );

int** del(int **, int &, int &, int);

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

{

           /*

                          7.       Сформировать двумерный массив.

                                          Удалить из него столбец с заданным номером;

           */

           randomize(); // случайные числа

           int x,y,temp2;

           printf(rus("Введите размерности двумерного массива: \n"));

           printf(rus("Строки: ")); scanf("%d", &x); // кол-во строк

           printf(rus("Столбцы: ")); scanf("%d", &y); // кол-во столбцов

 

           int **mas = new int *[x]; // указатель на указатель

           create(mas,x,y); // ф-ия создания двумерного динамического массива

           show(mas,x,y); // ф-ия показывающая массив

 

 

           printf(rus("Введите столбец который вы хотите удалить: "));

           scanf("%d",&temp2); // вводим столбец который хотим удалить

           del(mas,x,y,temp2); // ф-ия по удалению нужного нам столбца

 

           show(mas,x,y); // аналогично

 

 

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

                          delete mas[i]; // освобождаем память

 

           delete []mas;

           getch();

           return 0;

}

int** create(int **mas, int& x, int& y)

{ // ф-ия по созданию двумерного динамического массива

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

           {

                          int *temp = new int [y]; // создаем столбцы

 

                          for (int j = 0; j < y; j++)

                          {

                          temp[j] = random(10); // заполняем элементы рандомно

                          }

                          mas[i] = temp;

           }

 

}

void show(int **mas, int &x, int &y)

{ // ф-ия показа массива

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

           {

 

                          for (int j = 0; j < y; j++)

                          {

                          printf("%d       " ,mas[i][j]);

                          }

                          cout << endl;

           }

}

int** del(int **mas, int &x, int &y, int temp2)

{

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

           {

                          for (int j = 0; j < y-1; j++)

                          {  // идем по строкам и столбцам

                          // если попали на элемент ненужного нам столбца и дальше, то копируем в него

                          // все последующие элементы, и так по всем столбцам и строкам

                                          if (j >= temp2-1)

                                          {

                                                          mas[i][j] = mas[i][j+1];

                                          }

                          }

           }

 

           y--; // удаляем столбец крайний

}

 

 

char bufrus[256];

char* rus(const char* text)

                          {

                                                          CharToOem(text,bufrus);

                                                          return bufrus;

                          }

 

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

 

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










Последнее изменение этой страницы: 2018-05-29; просмотров: 178.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...