Читайте также:
|
|
{ int a:3; // В данном примере 3 описанных подряд битовых
int b:3; // поля будут помещены в один байт
int d:2; };
Пример работы со структурой:
#include <iostream.h>
#include <string.h>
//Описание структуры «человек»
struct man { char fam[15];//фамилия
char name[10];//имя
int vozr;//возраст
int wes;//вес
int rost;//рост
};
//Функция ввода компонентов структуры «человек»
// x- указатель на структуру «человек», n- кол-во человек
void vvod(man* x, int n)
{int i;
for(i=0;i<=n-1;i++)
{cout<<" Номер студента "<<i+1;
cout<<" Фамилия "; cin>>(x+i)->fam;
cout<<" Имя "; cin>>(x+i)->name;
cout<<" Возраст "; cin>>(x+i)->vozr;
cout<<" Рост "; cin>>(x+i)->rost;
cout<<" Вес "; cin>>(x+i)->wes;
} return;
}
//Функция вывода компонентов структуры «человек»
// x- указатель на структуру «человек», n- кол-во человек
void vivod(man* x, int n)
{int i;
for(i=0;i<=n-1;i++)
{cout<<" Номер студента "<<i+1;
cout<<" Фамилия "<<(x+i)->fam;
cout<<" Имя "<<(x+i)->name;
cout<<" Возраст "<<(x+i)->vozr;
cout<<" Рост "<<(x+i)->rost;
cout<<" Вес "<<(x+i)->wes<<'\n';
} return;
}
//Функция вывода компонентов структуры «человек»
// x- указатель на структуру «» человек, i- номер человека
void vivod1(man* x, int i)
{cout<<" Номер студента "<<i+1;
cout<<" Фамилия "<<(x+i)->fam;
cout<<" Имя "<<(x+i)->name;
cout<<" Возраст "<<(x+i)->vozr;
cout<<" Рост "<<(x+i)->rost;
cout<<" Вес "<<(x+i)->wes<<'\n';
return;
}
//Функция поиска человека по заданной фамилии
// x- указатель на структуру «человек», n- кол-во человек
// st- искомая фамилия
int Findfam(man* x, int n, char* st)
{int i, flag=0;
for(i=0;i<=n-1;i++)
if(strcmp((x+i)->fam,st)==0)// если человек с такой фамилией есть
{ flag=1; return i;} // возвращаем его номер
if (flag==0)
{cout<<"Человека с такой фамилией нет!"<<’\n’; return -1;}
}
//Функция поиска людей ростом выше заданного
// x- указатель на структуру «человек», n- кол-во человек
// trost- сравниваемый рост
void Findlong(man* x, int n, int trost)
{int i, flag=0;
for(i=0;i<=n-1;i++)
if((x+i)->rost>trost) // если есть человек ростом выше заданного
{flag=1; vivod1(x,i); }// производим вывод этого человека
if (flag==0)
cout<<" Людей ростом выше, чем "<<trost<<" нет!"<<’\n’;
return;
}
void main()
{int i, k, tr;
char tempfam[20];// некоторая фамилия
man* a;// указатель на массив структур
cout<<"Кол-во студентов: "<<’\n’;
cin>>i;
a=new man[i]; // выделение памяти под массив из i структур
if (a!=0)// если есть память
{vvod(a,i); vivod(a,i);//вызов функций ввода и вывода
cout<<"Введите фамилию студента, которого будем искать: "<<’\n’;
cin>>tempfam;
k=Findfam(a,i,tempfam);//номер студента с искомой фамилией
if(k!=-1) vivod1(a,k);
cout<<"Введите рост, c которым будем сравнивать студентов:"<<’\n’;
cin>>tr;
Findlong(a,i,tr);//вызов функции поиска людей по росту
delete a;//освобождение выделенной памяти
} else cout<<”Памяти нет!”
Файлы
Поддерживается два типа файлов текстовые и бинарные. Текстовые файлы можно просмотреть и изменить любым редактором. Информация в бинарных файлах записана в том же виде, что и в оперативной памяти компьютера, т.е. программа чтения такого файла, “знает” последовательность и типы записанных данных. Работа с этим видом файлов происходит немного быстрее, т.к. не надо форматировать данные, однако они хуже переносимы.
Дата добавления: 2015-07-08; просмотров: 163 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Шаблоны функций | | | Функции форматного ввода и вывода данных |