Слайд 2Основные концепции
Структуры позволяют вашим программам группировать в одной переменной связанные данные, типы
которых могут различаться.
Структура состоит из одной или нескольких частей данных, называемых элементами.
Для определения структуры внутри программы следует указать имя структуры и ее элементы.
Каждый элемент структуры имеет тип, например char, int и float, и имя каждого элемента должно быть уникальным.
После того как ваша программа определит структуру, она может объявить переменные типа этой структуры.
Для изменения элементов структуры внутри функции ваши программы должны передать структуру в функцию с помощью адреса.
Структура определяет шаблон, с помощью которого ваша программа может позднее объявить одну или несколько переменных.
Слайд 3Структура объявляется следующим образом:
struct имя структуры
{
поля структуры
}
В данном случае определение не
объявляет какие-либо переменные типа этой структуры. После того как вы определите структуру, ваша программа может объявить переменные типа этой структуры, используя имя структуры (иногда называемое структурным тэгом).
Структура позволяет вашим программам группировать информацию, называемую элементами, в одной переменной. Чтобы присвоить значение элементу или обратиться к значению элемента, используйте оператор C++ точку (.).
Слайд 4СТРУКТУРЫ И ФУНКЦИИ
Если функция не изменяет структуру, вы можете передать структуру в
функцию по имени.
Как вы знаете, если функция изменяет параметр, вам следует передавать этот параметр в функцию с помощью адреса. Если функция изменяет элемент структуры, вы должны передавать эту структуру в функцию с помощью адреса, Для передачи переменной типа структуры с помощью адреса вы просто предваряете имя переменной оператором адреса C++ (&), как показано ниже:
some_function(&worker);
Внутри функции, которая изменяет один или несколько элементов, вам следует работать с указателем. Если вы используете указатель на структуру, легче всего обращаться к элементам структуры, используя следующий синтаксис:
pointer_variable->member = some_value;
Слайд 5Пример.
Задание. Разработать программу со следующими функциями:
ввод данных структуры;
сохранения данных в файл;
чтение данных
из файла;
вывод на экран таблицы с данными;
Справочник пропусков студентов.
ФИО студента.
Группа.
Количество пропусков.
Количество неаттестаций.
Слайд 10// prim1_lek8.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include "stdafx.h"
#include
#include
#include
#include
#include
using namespace
std;
struct stud
{
char fio[25];
char gruppa[25];
int kol_p;
int kol_na;
};
stud a[100];
int n=0;
void vivod()
{
for (int i=0;i cout<}
void add (int i)
{
cout<<"FIO=";
cin>>a[i].fio;
cout<<"Gruppa=";
cin>>a[i].gruppa;
cout<<"Kol-vo prop.=";
cin>>a[i].kol_p;
cout<<"kol-vo ne at.=";
cin>>a[i].kol_na;
}
Слайд 11void vvod()
{int i=0;
int ex=1;
while (ex==1)
{
cout<<"Vvedite zapis"<add(i);
i++;
cout<<"Continue? YES-1 No-0";
cin>>ex;
}
n=i;
}
void zap()
{
const char *FName="c:\\1.txt";
//Путь к файлу. Вписывайте свой.
// открываем файл для записи
ofstream f(FName,ios::binary|ios::out);
for (int i=0;i f.write((char*)&a[i],sizeof a[i]); //Записали всю структуру целиком
f.close();
}
Слайд 12void ct()
{
const char *FName="c:\\1.txt"; //Путь к файлу. Вписывайте свой.
//открываем файл для
чтения
ifstream in(FName,ios::binary|ios::in);
for (int i=0;i in.read((char*)&a[i],sizeof a[i]); //Читаем структуру целиком сразу
in.close();
}
int _tmain(int argc, _TCHAR* argv[])
{
vvod();
vivod();
zap();
ct();
vivod();
_getch();
return 0;
}