Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






  • Краткие теоретические сведения. Структура – это структурированный тип данных, представляющий собой поименованную совокупность разнотипных элементов






    Структура – это структурированный тип данных, представляющий собой поименованную совокупность разнотипных элементов. Тип структура обычно используется при разработке информационных систем, баз данных.

    Формат описания структурного типа следующий:

    struct имя_типа

    {определения_элементов};

    В конце обязательно ставится точка с запятой (это оператор). Элементы структуры называются полями. Каждому полю должно быть поставлено в соответствие имя и тип.

    Например, сведения о выплате студентам стипендии требуется организовать в виде:

    |

    struct student {char fam[30];

    int kurs;

    char grup[5];

    float stip; };

    После этого student становится именем структурного типа, который может быть назначен некоторым переменным. В соответствии со стандартом СИ это нужно делать так:

    struct student stud1, stud2;

    Здесь stud1 и stud2 – переменные структурного типа.

    Допускается и другой вариант описания структурных переменных, когда можно вообще не задавать имя типа, а описывать сразу переменные:

    struct {char fam[30];

    int kurs;

    char grup[5];

    float stip;

    } stud1, stud2, *pst;

    В этом примере кроме двух переменных структурного типа объявлен указатель pst на такую структуру.

    Обращение к полям структурной величины производится с помощью уточненного имени следующего формата:

    имя_структуры. имя_элемента

    Примеры уточненных имен для описанных выше переменных:

    stud1.fam; stud1.stip;

    Значения элементов структуры могут определяться вводом, присваиванием, инициализацией. Пример инициализации в описании:

    student stud1={“Кротов”, 3, “ПО313”, 350};

    Пусть в программе определен указатель на структуру

    student *pst, stud1;

    Тогда после выполнения оператора присваивания

    pst=& stud1;

    к каждому элементу структурной переменной stud1 можно обращаться тремя способами. Например, для поля fam

    stud1.fam или (*pst).fam или pst-> fam

    В последнем варианте используется знак операции доступа к элементу структуры: ->. Аналогично можно обращаться и к другим элементам этой переменной.

    Допускается использование массивов структур. Например, сведения о 100 студентах могут храниться в массиве, описанном следующим образом:

    student stud[100];

    Тогда сведения об отдельных студентах будут обозначаться, например, так: stud[1].fam, stud[5].kurs и т.п. Если нужно взять первую букву фамилии 25-го студента, то следует писать: stud[25].fam[0].

    Пример 1. Ввести сведения об N студентах. Определить фамилии студентов, получающих самую высокую стипендию.

    # include < stdio.h>

    # include < conio.h>

    void main()

    { const N=30; int i; long maxs;

    struct student {char fam[15];

    int kurs;

    char grup[3];

    long stip; };

    student stud[N];

    clrscr();

    for (i=0; i< N; i++)

    { printf(“%d-й студент”, i);

    printf(“\n”Фамилия: ”); scanf(“%s”, & stud[i].fam);

    printf(“Курс: ”); scanf(“%d”, & stud[i].kurs);

    printf(“Группа: ”); scanf(“%s”, & stud[i].grup);

    printf(“Стипендия: ”); scanf(“%ld”, & stud[i].stip); }

    maxs=0;

    for (i=0; i< N; i++)

    if (stud[i].stip> maxs) maxs=stud[i].stip;

    printf(“\n Студенты, получающие макс. стипендию %ld руб.”, maxs);

    for (i=0; i< N; i++)

    if (stud[i].stip==maxs) printf(“\n%s”, stud[i].fam); }

     






    © 2023 :: MyLektsii.ru :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.