Использование глобальных данных


При самостоятельном желании понять тему " Использование глобальных данных " вам поможет наш ресурс. Для вас наши специалисты подготовили материал, изучив который вы будете разбираться в ней уровне профессионала. А если у вас останутся вопросы, то задать их вы сможете прямо на сайте написав в чат онлайн-консультанта.

оформить заявку

Слишком сложно? Тогда запросите консультацию специалиста!

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

ознакомиться с условиями

Другая часто используемая возможность для передачи и/или возврата структурных переменных – использование внешних (глобальных) переменных, видимых как в точке вызова функции, так и в вызываемой функции.

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

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

Программа:

#include<stdio.h>

#include<conio.h>

#include<alloc.h> /* для динамического выделения памяти */

#define kstud 30 /* максимальное количество студентов в группе */

#define kball 6 /* максимальное количество баллов в сессию */

typedef struct { /* определение типа структуры */

char *name; /* фамилия И. О. студента */

int ball [kball]; /* оценки в сессию */

float sb; /* средний балл */

} STUDENT; /* имя типа структуры */

STUDENT /* описание глобальных объектов */

gr [kstud], /* массив структур данных студентов */

*pgr [kstud ]; /* массив указателей */

int kst, kb; /* количество студентов и баллов */

void INDATA (); /* прототипы функций, */

void SRBALL (); /* которые обрабатывают */

void SORTBALL (); /* глобальные объекты */

void OUTDATA (); /* данных */

void main() /* главная функция */

{

clrscr(); /* очистка экрана */

printf (”Введите количество студентов в группе: ”);

scanf (”%d”, &kst);

printf (”Введите количество баллов в сессию: ”);

scanf (”%d”, &ks);

printf (”Ввод данных группы из %d студентов: ”, kst );

INDATA (); /* вызов функции ввода данных */

SRBALL (); /* вычисление среднего балла */

puts (”Сортировка студентов по среднему балу (через массив “
“ указателей).”);

SORTBALL (); /* сортировка по среднему баллу */

OUTDATA (); /* вывод упорядоченного списка */

} /* конец главной функции */

void INDATA () /* функция ввода данных */

{ int i, j; /* параметры циклов */

for (i=0; i < kst; i++) /* цикл по студентам */

{ printf (”%2d. ”, i+1); /* ввод номера студента */

fflush (stdin); /* очистка буфера ввода */

(gr+1)->name = (char*)malloc(30); /* выделение динамич. памяти */

gets ((gr+i)->name); /* ввод фамилии И. О. */

printf (”Введите %d оценки (целые числа от 3 до 5): ”, kb);

for (j=0; j<kb; j++) /* цикл по баллам */

scanf (”%d”, &(gr+i)->ball[j]); /* ввод оценок */




pgr [i] = gr+i; /* запись указателей в массив указателей */

}

puts (“Конец ввода исходных данных”);

} /* конец функции INDATA */

void SRBALL () /* функция вычисления среднего балла */

{ int i, j; /* параметры циклов */

float sum; /* сумматор */

for (i=0; i < kst; i++) /* цикл по студентам */

{ sum=0; /* очистка сумматора */

for (j=0; j < kb; j++) /* цикл по баллам */

sum += (gr+i)->ball [j]; /* вычисление суммы оценок */

(gr+i)->sb = sum / kb; /* вычисление среднего балла */

}

} /* конец функции SRBALL */

void SORTBALL () /* функция сортировки методом простого выбора */

{ int i, j, k ; /* параметры циклов */

STUDENT *pst; /* указатель типа STUDENT */

for (i=0; i < kst-1; i++) /* цикл по студентам */

{ k=i; /* начальное значение индекса */

for (j=i+1; j < kst; j++) /* цикл поиска max среднего балла */

if (pgr[j]->sb > pgr[k]->sb) k = j; /* индекс max среднего балла */

if ( k != i) /* если индекс k изменился, то */

{ pst = pgr[i]; /* перестановка указателей */

pgr[i] = pgr[k]; /* в массиве указателей через */

pgr[k] = pst; /* указатель pst */

}

}

} /* конец функции SORTBALL */

void OUTDATA () /* функция вывода списка студентов */

{ int i ; /* параметр цикла */

puts(”Студент: Средний балл:”);

for (i=0; i < kst; i++) /* цикл по студентам */

{ printf (” %u. %-20s %6.3f ”, i+1, pgr[i]->name, pgr[i]->sb);

free (pgr[i]->name); /* очистка динамической памяти */

}

getch(); /* задержка экрана результатов */

} /* конец функции OUTDATA */


Хм, так же просматривали

Заказ

ФОРМА ЗАКАЗА

Бесплатная консультация

Наша компания занимается написанием студенческих работ. Мы выполняем: дипломные, курсовые, контрольные, задачи, рефераты, диссертации, отчеты по практике, решаем тесты и задачи, и многие другие виды заданий. Чтобы узнать стоимость, а так же условия выполнения работы заполните заявку на этой странице. Как только менеджер увидит ваше сообщение, он сразу же свяжется с вами.

Этапность

СОПРОВОЖДЕНИЕ КЛИЕНТА

Получить работу можно всего за 4 шага

01
Оставляете запрос

Оформляете заказ работы, заполняя форму на сайте.

02
Узнаете стоимость

Менеджер оценивает сложность. Узнаете точную цену.

03
Работа пишется

Оплачиваете и автор приступает к выполнению задания.

04
Забираете заказ

Получаете работу в электронном виде на вашу почту.

Услуги

НАШ СЕРВИС

Что мы еще делаем?

icon
Курсовые работы

от 1800 рублей

ПОДРОБНЕЕ
icon
Аттестационные работы

от 1780 рублей

ПОДРОБНЕЕ
icon
Проектные работы

от 3300 рублей

ПОДРОБНЕЕ
icon
Сочинения

от 280 рублей

ПОДРОБНЕЕ
icon
Решение задач

от 180 рублей

ПОДРОБНЕЕ
icon
Студенческие работы

от 80 рублей

ПОДРОБНЕЕ