Студопедия

КАТЕГОРИИ:

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

Методика и порядок выполнения работы




Лабораторная работа 6

РАБОТЫ СО СТРУКТУРАМИ

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

Теоретическое обоснование

Работа со строками

Строки в языке С++ представляются массивами символов. Признаком конца строки является ноль.

Для объявления строки длиной N символов, необходимо объявить массив char размером N+1 символ, т. к. последний символ строки является нулем:

char[5]=”word”; //правильно, 4 буквы, последний символ 0.

char[5]=”слово”; //неправильно, последний символ лишний.

Для работы со строками в языке С++ используются стандартные функции, которые описаны в библиотечном файле string.h. Рассмотрим эти функции.

Функция определения длины строки strlen (s).Определяет длину строки s.

Функция копирование строки strcpy (s1, s2).Копирует содержимое строки s2 в строку s1. Массив s1 должен быть достаточно вместительным. Если при копировании места не хватает, то компилятор не выдает сообщение об ошибке и программа может работать, но неправильно.

Функция сцепления строк strcat (s1, s2).Присоединяет строку s2 к строке s1 и помещает новую строку s1. Строка s2 не изменяется. При этом, как и в предшествующем случае, нет никакого контроля. Нулевой байт строки s1 заменяется первым символом строки s2. Новая строка автоматически завершается нулевым байтом.

Функция сравнения строк strcmp (s1, s2).Результат: минус 1 –первая строка меньше второй; 1 – первая строка больше второй; 0 – строки равны.

Функция поиска подстроки в строке strstr (s1, s2). Поиск в строке s1 строки s2. Результат: 0 – строка не найдена; не 0 – номер позиции с которой строка s2 входит в строку s1.

Функция поиска символа в строке strchr (s, smb).Поиск символа smb в строке s.     Результат: 0 – символ не найден; не 0 – номер позиции найденного символа в строке.

Функция strupr (s) делает все буквы строки s прописными (заглавными).

Функция strlwr (s)  делает все буквы строки s строчными.

Пример 6.1. Программа, в которой к одной строке прибавляется другая строка, а потом в конец второй строки ставит восклицательный знак.

#include <string.h>

#include <iostream.h>

int main(){

char one[4]="ura";   //описание первой строки

char two[6]="";        // описание второй пустой строки

strcat(two,one); //добавление ко второй строке первой

cout<<two<<"\n";

strcat(two,"!"); // добавление ко к второй строке восклицательного знака

cout<<two<<"\n";

return 0;}

 

Пример 5.2. Дан массив из трех строк. Программа выводит на экран строки из массива в которых есть буква «а».

#include <string.h>

#include <iostream.h>

int main(){

char s[3][5]={"ghaj","rtrd","fgah"}; //описание массива из трех строк

for (int n=0;n<3;n++) //задаем цикл по строкам

if(strchr(s[n],'a')) //проверка наличия символа «а» в текущей строке

                  cout<<s[n]<<"\n";        

return 0;}

Структуры

В массивах все элементы имеют одинаковый тип, если необходимо использовать составной тип данных, содержащий элементы различных типов используют структурированный тип данных.

Структура в языке Си++ состоит из фиксированного числа элементов одного или нескольких типов. Формат описания структуры:

struct имя_структуры

{ тип_поля_1 имя_поля_1;

тип_поля_2 имя_поля_2;

                                 …

                                   тип_поля_N имя_ поля_N;};

Элементами или полями структуры могут быть переменные, массивы, ранее определенные структуры. Обращения к какому-либо элементу структуры имеет следующий формат: имя_структуры. имя_поля.

Пример 6.3. Структура содержит сведения о студентах: ФИО студента, курс, возраст.

struct student

{ char name[50];

int kurs;

int age; };

Чтобы использовать структуру необходимо объявить переменные типа struct student:

struct student s1, s2;

Переменные s1 и s2 являются переменными типа struct student. Компилятор автоматически выделит память под эти переменные. Обращение к полям структуры:

s1.kurs=3;

s1.age=20;

Для переменных s1 и s2 возможно присваивание s1=s2.

Структуры могут быть объединены в массивы структур. Объявление массива структур делается аналогично объявлению массива переменных. Например, если нужно хранить информацию о 10 студентах, то объявление массива будет следующим

struct student stud1[10];

Здесь stud1 – имя массива структур, а stud1[0] – это первая структура, stud1[1] – вторая... stud1[9] – десятая структура. Чтобы получить доступ к полю age пятой структуры нужно написать

stud1[4].age

Чтобы получить доступ к полю kurs первой структуры нужно написать

stud1[0].kurs

//struct.c работа со структурами

 #include <iostream.h>

struct tovar{char name[20]; int kol; float cena;} t[5];

 int SumKol, N=5; //суммарное количество товаров

 int main() {

 for (i=0; i<N; i++){

 cout<< "\n Введите наименование товара ";

 cin >> t[i].name;

 cout<< "\n Введите количество товара, шт";

 cin >> t[i].kol);

 cout<< "\n Введите цену товара, руб/кг ");

 cin >> t[i].cena);}

 SumKol=0;

 for (i=0; i<N; i++) SumKol+= t[i].kol;

 cout<< "\n Суммарное количество товара =”<< SumKol <<"  шт ");

return 0;}

 

Методика и порядок выполнения работы

1. Изучите теоретическое обоснование.

2. Проанализируйте, введите и выполните примеры 6.1 и 6.2.

3. Составьте блок-схемы и выполните программы работы со строками согласно вариантам (таблица 6.1), введите исходные данные, проанализируйте полученные результаты.

4. Проанализируйте, введите и выполните приведенный пример.

Дана информация о пяти товарах. Структура tovar содержит поля: наименование товара namе[20]; количество товара kol; цена товара cena. Определить суммарное количество товара.

//struct.c работа со структурами

 #include <iostream.h>

struct tovar{char name[20]; int kol; float cena;} t;

 int SumKol, N=5; //суммарное количество товаров

 int main() {

SumKol=0;

for (i=0; i<N; i++){

 cout<< "\n Введите наименование товара ";

 cin >> t.name;

 cout<< "\n Введите количество товара, шт";

 cin >> t.kol);

 cout<< "\n Введите цену товара, руб/кг ");

 cin >> t.cena);

SumKol+= t.kol ;}

cout<< "\n Суммарное количество товара " << SumKol << " шт ");

return 0;}

5. Составьте блок-схему и выполните программу работы со структурами согласно вариантам (таблица 6.2), введите исходные данные, проанализируйте полученный результат.

Таблица 6.1– Варианты заданий










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

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