Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
visual с++.doc
Скачиваний:
28
Добавлен:
18.08.2019
Размер:
10.99 Mб
Скачать

1. Индивидуальное задание №1:

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

Написать программу, которая считывает текст из файла и выводит на экран толь­ко предложения, содержащие запятые.

1.2. UML-диаграмма:

1.3. Листинг программы:

// Лабораторная работа №8

// Индивидуальное задание №1

#include "stdafx.h"

#include <iostream>

#include <fstream>

#include "stdio.h"

#include "stdlib.h"

#include "conio.h"

#include "string.h"

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

setlocale( LC_ALL, "Russian" );

cout << "Лабораторная работа № 8\n"

<< "\nГорошко А.А., БАС-051\n"

<< "\nВариант № 6\n"

<< "\n\nИндивидуальное задание № 1:\n"

<< "\nНаписать программу, которая считывает текст из файла и\n"

<< "\nвыводит на экран только предложения, содержащие запятые.\n"

<< "\n\nРабота программы:\n";

int n, i;

bool flag = false;

char ch;

string str = "";

ifstream input("text.txt");

if (! input)

{

cout << "Ошибка открытия файла" << endl;

return 1;

}

input.seekg(0,ios::end);

long unsigned int len = input.tellg();

input.seekg(0, ios :: beg);

for (i = 0; i < len; i++)

{

ch = input.get();

if (ch==',') flag = true;

if (ch=='.')

{

if (flag) cout << str.c_str();

str = "";

flag = false;

}

else

str+=ch;

};

getch();

return 0;

}

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

Лабораторная работа №9. Структуры в языке C++

Цель работы и содержание: закрепление знаний о структурах, составление программ со структурами.

Ход работы

Основные сведения о структурах в языке С++. Структуры в C++ обладают практически теми же возможностями, что и классы, но чаще их применяют просто для логического объединения связанных между со­бой данных. В структуру, в противоположность массиву, можно объединять дан­ные различных типов.

Например, требуется обрабатывать информацию о расписании работы конференц-зала, и для каждого мероприятия надо знать время, тему, фамилию организатора и количество участников. Поскольку вся эта информация относится к одному собы­тию, логично дать ему имя, чтобы впоследствии можно было к нему обращаться. Для этого описывается новый тип данных:

struct Event

{

int hour, min;

char theme[100], name[100];

int num;

}

Имя этого типа данных - Event. Можно описать переменные этого типа точно так же, как переменные встроенных типов, например:

Event el. e2[10]; // структура и массив структур

Если структура используется только в одном месте программы, можно совместить описание типа с описанием переменных, при этом имя типа можно не указывать:

struct

{

int hour, min;

char theme[100]. name[100];

int num;

}

el, e2[10];

Переменные структурного типа можно размещать и в динамической области па­мяти, для этого надо описать указатель на структуру и выделить под нее место:

Event *pe = new Event; //структура

Event *pm = new Event[m]; //массив стуктур

Элементы структуры называются полями. Поля могут быть любого основного типа, массивом, указателем, объединением или структурой. Для обращения к полю ис­пользуется операция выбора («точка» для переменной и -> для указателя), на­пример:

el.hour = 12; el.min = 30;

strncpy(e2[0]).theme. "Выращивание кактусов в условиях Крайнего Севера". 99);

pe->num = 30; // или (*pe).num = 30;

pm[2].hour = 14; // или (*(pm + 2)).hour = 14;

Структуры одного типа можно присваивать друг другу:

*ре = el: pm[l] » el: pm[4] = e2[0];

Но присваивание - это и все, что можно делать со структурами целиком. Другие операции, например сравнение на равенство или вывод, не определены. Впрочем, пользователь может задать их самостоятельно, поскольку структура является ви­дом класса, а в классах можно определять собственные операции.

Ввод/вывод структур, как и массивов, выполняется поэлементно. Вот, например, как выглядит ввод и вывод описанной выше структуры el с использованием клас­сов ввода-вывода (<iostream.h>):

cin » el.hour » el.min;

cin.getline(el.theme. 100);

cout « el.hour «' '« el.min «' '« el.theme « endl;

Вариант с использованием ввода-вывода в стиле С (подключается заголовоч­ный файл <stdio.h>):

scanfC'MM", Sel.hour, Sel.min); gets (el. theme);

printf("&d %d %s". el.hour, el.min. el.theme);

Структуры (но, конечно, не динамические) можно инициализировать перечисле­нием значений их элементов:

Event еЗ - {12. 30. "Выращивание кактусов в условиях Крайнего Севера", 25};

Пример 9.1. Поиск в массиве структур

В текстовом файле хранится база отдела кадров предприятия. На предприятии 100 сотрудников. Каждая строка файла содержит запись об одном сотруднике. Фор­мат записи: фамилия и инициалы (30 поз., фамилия должна начинаться с первой позиции), год рождения (5 поз.), оклад (10 поз.). Написать программу, которая по заданной фамилии выводит на экран сведения о сотруднике, подсчитывая средний оклад всех запрошенных сотрудников.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]