- •Информатика основы
- •Предисловие
- •Введение
- •Программы
- •1.1. Элементы языка
- •Список основных ключевых слов
- •Типы числовых данных
- •Разделители
- •Основные бинарные операции
- •Математические функции
- •1.2. Структура программы
- •1.3. Выполнение программы
- •Контрольные вопросы
- •2.1. Загрузка и настройка системы программирования
- •2.2. Создание и работа с проектом
- •Условные графические обозначения основных блоков схем алгоритмов
- •Словесно-формульный алгоритм
- •Листинг 2.1. Lin_prog.Cpp
- •Результат выполнения программы
- •3.2. Логический тип данных и базовые логические операции
- •Операции сравнения
- •Логические операции
- •При решении задач с множеством логических условий программа существенно упрощается, если эти условия удается объединить с помощью операций и, или, не в более крупные выражения.
- •Словесно-формульный алгоритм
- •Результат выполнения программы
- •Результат выполнения программы
- •Упражнения
- •Варианты заданий
- •Области определения функции z (X,y)
- •Контрольные вопросы
- •4. Организация циклов
- •4.1. Организация программ с циклами
- •For (инициализация; условие; модификация) операторы
- •4.2. Инкремент, декремент и составные операции
- •Составные операции присваивания
- •Результат выполнения программы
- •Результат выполнения программы
- •Упражнения
- •Варианты заданий
- •Контрольные вопросы
- •5.Составление программ с массивами
- •5.1. Организация программ с массивами
- •Тип имя_массива [n];
- •Имя_массива [индекс]
- •Тип имя_массива [размер_1] [размер_2]
- •5.2. Манипуляторы и форматирование ввода-вывода
- •Манипуляторы
- •Результат выполнения программы
- •Результат выполнения программы
- •Контрольные вопросы
- •Дайте определение массива.
- •6. Составление программ с использованием функций
- •6.1. Описание, объявление и вызов функций
- •Механизм возврата из функции реализуется оператором
- •Тип имя_функции (тип размерность, тип имя_массива[ ]) ,
- •6.2. Глобальные и локальные переменные
- •Результат выполнения программы
- •6.3. Перегруженные функции
- •Результат выполнения программы
- •Упражнения
- •Варианты заданий
- •Контрольные вопросы
- •7. Программирование с использованием указателей
- •7.1. Общие сведения об указателях
- •7.2. Динамические массивы
- •Результат выполнения программы
- •Результат выполнения программы
- •7.3. Указатели и функции
- •Результат выполнения программы
- •Упражнения
- •Варианты заданий
- •Контрольные вопросы
- •8. Программирование с использованием структур
- •8.1. Определение структур
- •8.2. Организация программ с использованием структур
- •Имя_структуры . Имя_элемента_структуры
- •Список товаров
- •Результат выполнения программы
- •Упражнения
- •Варианты заданий
- •Контрольные вопросы
- •Библиографический список
- •Основные бинарные операции
- •Операции сравнения
- •Составные операции присваивания
- •Логические операции
- •Типы числовых данных
- •Константы, используемые в математических выражениях
- •Математические функции
- •Типовые сообщения об ошибках
- •Оглавление
8.2. Организация программ с использованием структур
Для обращения к полям структур используются расширенные (составные, уточненные) имена:
Имя_структуры . Имя_элемента_структуры
При этом с полями структур можно выполнять любые операции, применимые к типу этих полей.
Например:
XY.N[0]=37; //присваивание поляN[0] структурыXY
cin>>EE[3] .value; //ввод значения поля value структуры EE[3]
При определении структур возможна инициализация, т.е. задание начальных значений их элементов.
Например:
carddictionary=
{"Подбельский В.В.", "Язык Си ++", "М.",
"Финансы и статистика", 1999, 560};
При инициализации массивов структур каждый элемент массива заключается в фигурные скобки.
Например:
struct complex {float real, im;} comple [2] [3]=
{{{1,1}, {1,1}, {1,1}}, {{2,2}, {2,2}, {2,2}}};
Для структур одного и того же типа определена операция присваивания. При этом происходит поэлементное копирование полей структур.
Например:
XY=EE[3];//предполагается, что структура EE[3] уже
//инициализирована
XX=XY;
Структуру можно передавать в функцию и возвращать в качестве значения функции по правилам, определенным для работы с функциями.
Пример. Составить программу, которая позволяет организовывать список в виде массива структур, содержащий информацию о товарах (табл. 8.1), и сортировать этот список:
а) по алфавиту наименования товара;
б) по убыванию цены товара;
в) по убыванию числа единиц товара.
Вывести отсортированный список на печать (лист. 8.1).
Таблица 8.1
Список товаров
№ |
Наименование товара |
Цена |
Количество |
1 2 3 4 5 |
Карандаш Ручка Линейка Ластик Тетрадь |
1.50 3.40 0.85 1.00 1.20 |
12 20 10 25 30 |
Листинг 8.1. struktur.сpp
#include <iostream.h>
#include <string.h> //Подключает функцию сравнения строк strcmp
#include <iomanip.h>
//Определение структуры
struct tovar //tovar - глобальный тип структуры
{
char *name; //Наименование товара
float price; //Цена товара
short kol; //Количество товара
}sp[]={{"Карандаш",1.50,12}, //Инициализация массива структур sp[]
{"Ручка",3.40,20},
{"Линейка",0.85,10},
{"Ластик",1.00,25},
{"Тетрадь",1.20,30}};
void out_sp(int,tovar*); //Прототип функции вывода на печать
void sort(char,int,tovar*); //Прототип функции сортировки
void main()
{
int n=5;
cout<<"Исходный список товаров:"<<endl;
out_sp(n,sp); //Вызов функции вывода
sort('t',n,sp); //Сортировка по наименованию товара
cout<<"Сортировка по наименованию товара (по алфавиту):"<<endl;
out_sp(n,sp);
sort('p',n,sp); //Сортировка по убыванию цены товара
cout<<"Сортировка по убыванию цены товара:"<<endl;
out_sp(n,sp);
sort('k',n,sp); //Сортировка по убыванию количества товара
cout<<"Сортировка по убыванию количества товара:"<<endl;
out_sp(n,sp);
}
//Функция вывода списка на печать out_sp
void out_sp(int m,tovar *tabl)
{
for(int i=0;i<m;i++)
cout<<(i+1)<<". "
<<setw(8)<<tabl[i].name
<<setw(6)<<tabl[i].price
<<setw(4)<<tabl[i].kol<<endl;
}
/*Функция сортировки sort:
при ch='t' - по наименованию товара (по алфавиту)
при ch='p' - по цене товара
при ch='k' - по количеству товара*/
void sort(char ch,int m,tovar *lst)
{ tovar x;
for(int i=0;i<m-1;i++)
for(int j=i+1;j<m;j++)
if((ch=='t' && strcmp(lst[i].name,lst[j].name)>0)||
(ch=='p' && lst[i].price<lst[j].price)||
(ch=='k' && lst[i].kol<lst[j].kol))
{x=lst[i];lst[i]=lst[j];lst[j]=x;
}
}