Массивы структур

Массив структур – это массив, каждый элемент которого является структурой. В памяти элементы массива структур размещаются последовательно.

Массивы структур широко используются для структурной организации данных в прикладных программах и системном программном обеспечении.

Из элементов структурного типа можно организовать массивы также как из элементов стандартного типа. Для объявления массива структур следует сначала определить структуру, а затем объявить массив переменных данного типа. Как и массивы переменных, массивы структур индексируются с нуля.

Например:

#include <iostream.h>

void main(){

struct Student {

char name[30];

char group[10];

float rating;

};

Student mas[35]; //массив структур

 

//ввод значений массива

for(int i=0;i<35;i++){

cout << "\nВведите имя: ";cin >> mas[i].name;

cout << "\nВведите группу: ";cin >> mas[i].group;

cout << "\nВведите рейтинг: ";cin >> mas[i].rating;

}

//вывод студентов, у которых рейтинг меньше 3

cout << "Рейтинг < 3: ";

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

if(mas[i].rating <3)

cout << "\n" << mas[i].name;

}

Пример 4. Программа определяет и печатает название самой высокой вершины из списка

#include <stdio.h>

struct peak {

char name[15];//название вершины

int height; //высота вершины

} list[30]; //массив структурного типа peak

int N;

 

void InputDate();

void PrintMaxPic();

 

void main() {

InputDate();

printf("\n");

PrintMaxPic();

}

 

void InputDate() {

int i;

printf("Введите количество вершин: "); scanf("%d",&N);

printf("\n");

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

printf("Название: ");

scanf("%s",&list[i].name);

printf("Вершина: ");

scanf("%d",&list[i].height);

}

}

 

void PrintMaxPic(){

int i,max=list[0].height,num=0;

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

if (list[i].height>max) {

max=list[i].height;

num=i;

}

printf("Самая высокая вершина - %s, она равна ­ %d",

list[num].name,max);

}

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

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <time.h>

#define num 5

 

struct {

char name[15];

int grade;

} x[num];

 

void init(void);

int sorts(const void *p1, const void *p2);

void print(void);

 

void main(){

printf("\n Введите имена:\n");

init();

printf("\n Первоначальный массив\n");

print();

printf("\n Отсортированный массив\n");

qsort((void *)x, num, sizeof(x[0]), sorts);

print();

}

 

void init(void){

int i, a=-10, b=10;

srand(time(NULL)*1000);

for (i=0; i!=num; i++){

gets(x[i].name);

x[i].grade =(rand()*1.0/(RAND_MAX)*(b-a)+a);

}

}

 

int sorts(const void *p1, const void *p2){

return( strcmp((char *)p1,(char *)p2));

}

 

void print(void){

int t;

for (t = 0; t != num; t++)

printf("%s\t\t%d\n", x[t].name, x[t].grade);

}

Задания

1.Наберите коды программ из Примера 1 и 4. Выполните компиляцию и запуск программ.

2.Описать переменную «студент», содержащую: имя, фамилию, отчество, название учебного заведения, номер группы. Создать список студентов (N>10). Определить и распечатать фамилии студентов, учащихся заданной группы и заданного учебного заведения.

3.Задана следующая структура:

struct point {

float x,y;

} A, B;

Описать переменную d, равную расстоянию между точками A и B.

 

Домашние задания

1.Наберите коды программ из Примеров 2, 3 и 5. Выполните компиляцию и запуск программ.

2.Описать переменную «круг», в которой содержатся все данные для построения круга на плоскости в декартовой системе координат. Определить площадь круга и длину окружности, ограничивающей круг.

3.Задана следующая структура:

struct card {

// масть карт

enum {spades, clubs, diamonds, hearts} suit;

// достоинство карт

enum{six, seven, eight, nine, ten, jack, queen, king, ace} value;

} c1, c2;

Описать логическую функцию Kick(с1, с2, сs), проверяющую, бьёт ли карта с1 карту с2, с учётом того, что масть cs является козырной.

4.Описать переменную «адрес», содержащую: название города, название улицы, номер дома, корпус, номер квартиры. Создать массив адресов. Поменять местами номер дома в N-ом адресе и номер квартиры в M-ом адресе.

 









Дата добавления: 2015-02-16; просмотров: 1511;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.01 сек.