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