Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Отчет по лабораторной работе №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 не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |