- •Лабораторный практикум основы программирования
- •Содержание
- •Предисловие
- •Лабораторная работа №1. Интегрированная среда разработки Microsoft Visual Studio. Программирование алгоритмов линейной структуры
- •1. Формулировка индивидуального задания:
- •2. Листинг программы:
- •3. Результаты работы программы:
- •1. Индивидуальное задание №1:
- •1.1. Постановка задачи:
- •1.3. Листинг программы:
- •3.4. Результаты работы программы:
- •1. Индивидуальное задание №1:
- •1.1. Постановка задачи:
- •1.3. Листинг программы:
- •4.4. Результаты работы программы:
- •1. Индивидуальное задание №1:
- •1.1. Постановка задачи:
- •1.3. Листинг программы:
- •2.4. Результаты работы программы:
- •2. Индивидуальное задание №2:
- •2.1. Постановка задачи:
- •2.3. Листинг программы:
- •2.4. Результаты работы программы:
- •1. Присваивание указателю адреса существующего объекта:
- •2. Присваивание указателю адреса области памяти в явном виде:
- •3.Присваивание пустого значения:
- •4. Выделение участка динамической памяти и присваивание ее адреса указателю:
- •1. Индивидуальное задание №1:
- •1.1. Постановка задачи:
- •1.3. Листинг программы:
- •1.4. Результаты работы программы:
- •2. Индивидуальное задание №2:
- •2.1. Постановка задачи:
- •2.3. Листинг программы:
- •2.4. Результаты работы программы:
- •I. Исходные данные, результаты и промежуточные величины.
- •1. Индивидуальное задание №1:
- •1.1. Постановка задачи:
- •1.3. Листинг программы:
- •2.4. Результаты работы программы:
- •1. Индивидуальное задание №1:
- •1.1. Постановка задачи:
- •1.3. Листинг программы:
- •4. Индивидуальное задание №4:
- •4.1. Постановка задачи:
- •4.4. Листинг программы:
- •4.5. Результаты работы программы:
- •I. Исходные данные и результаты
- •II. Алгоритм решения задачи
- •III. Программа и тестовые примеры
- •I. Исходные данные и результаты
- •II. Алгоритм решения задачи
- •III. Программа и тестовые примеры
- •I. Исходные данные и результаты
- •III. Программа и тестовые примеры
- •1. Индивидуальное задание №1:
- •1.1. Постановка задачи:
- •1.3. Листинг программы:
- •1.4. Результаты работы программы:
- •I. Исходные данные, результаты и промежуточные величины
- •Программа и тестовые примеры
- •1. Индивидуальное задание №1:
- •1.1. Постановка задачи:
- •1.3. Листинг программы:
- •2.4. Результаты работы программы:
- •Список рекомендуемой литературы
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 поз.). Написать программу, которая по заданной фамилии выводит на экран сведения о сотруднике, подсчитывая средний оклад всех запрошенных сотрудников.