![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Теоретические сведения. Структура – это упорядоченный самим программистом набор данных, принадлежащих к разным типам, с произвольным доступом к каждому элементу.Стр 1 из 7Следующая ⇒
Структура – это упорядоченный самим программистом набор данных, принадлежащих к разным типам, с произвольным доступом к каждому элементу. Структура определяется следующим образом: struct [имя_типа]{ тип_1 элемент_1; тип_2 элемент_2; … тип_n элемент_n; } [список_описателей] Пример структуры - учётная карточка сотрудника, в которой содержится Ф.И.О., адрес, должность, год поступления на работу и т.д. Некоторые из этих атрибутов сами могут оказаться структурами. Так, Ф.И.О. имеет три компоненты, адрес - также несколько компонент. Введем новые типы FIO и sotrudnik: struct FIO { char familia [39], FIO name; }; Здесь заданы два новых типа структурных переменных и имена этих типов - FIO, sotrudnik. Заметим, что наличие "; " после фигурных скобок здесь обязательно. Теперь можно объявить структурные переменные типа FIO или sotrudnik обычным образом: FIO name1, name2, name3; Теперь компилятором будет выделена память под переменные name1, name2, name3, s1, s2 и под массив s из пятидесяти структур. Отметим, что число байтов, выделяемое под структурную переменную, не всегда равно сумме длин отдельных членов структуры из-за эффекта выравнивания, производимого компилятором. Чтобы определить выделенное число байтов, надо воспользоваться операцией sizeof, например, так: int nf=sizeof (FIO), ns=sizeof (sotrudnik); Заметим также, что объявить структурные переменные можно одновременно с определением тега структуры: struct DATE { } d1, d2, d3; Здесь объявлены три переменных d1, d2, d3, которые имеют тип структуры DATE. Можно объявить структурную переменную и без введения имени (тега) структуры: struct { int price; } a, b, c, d; После того, как определены структурные переменные, доступ к их членам осуществляется с помощью операции извлечения '.': a.price c.length d1.day d3.mon_name s[25].oklad s[0].name.familia. Пример Описать структуру Student, содержащую следующие поля: name-имя, group-группа, ses-успеваемость. Необходимо ввести данные в массив stud1, состоящий из 30 структур типа Student. Вычислить средний балл и вывести на печать только студентов, имеющих средний балл > =4. #include < iostream.h> #include < conio.h> void main() { clrscr; int i; const int n=30, m=4; //n-количество студентов, m-число оценок за сессию struct student { char name[100]; unsigned short int group; unsigned short int ses[m]; }; student stud1[n]; for (i=0; i< n; i++)//цикл по студентам { cout< < " \nВведите студента " < < i+1; cout< < " \nВведите фамилию и инициалы "; cin> > stud1[i].name; cout< < " \nВведите группу "; cin> > stud1[i].group; cout< < " \nВведите оценки "; for (int j=0; j< m; j++)//цикл по оценкам cin> > stud1[i].ses[j]; } for (i=0; i< n; i++)//цикл по студентам для определения среднего балла каждого { int s=0; for (int j=0; j< m; j++) s+= stud1[i].ses[j]; s/=m; //расчет среднего балла студента if (s> =4) cout< < stud1[i].name< < " \n"; //и вывод его на печать } }
|