Скачиваний:
16
Добавлен:
15.03.2015
Размер:
25.09 Кб
Скачать

Санкт-Петербургский Университет

телекоммуникаций имени проф. Бонч-Бруевича

ПРОГРАММИРОВАНИЕ НА ЯЗЫКАХ ВЫСОКОГО УРОВНЯ

Лабораторная работа №10

Работа со структурами

Студент группы СУ-01

Соловьёв Константин

Вариант № 15

2011 г.

      1. Постановка задачи

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

Задание:

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

Main файл:

Является главным связующим звеном в выполнении поставленной задачи. Его основная цель - это предоставление пользователю желаемый выбор выполнения операций с массивами и вызов функций для решения поставленных задач.

Код main.c файла:

#include "head10.h"

nt main(void) {

int n;

printf("Enter n = ");

scanf("%d%*c", &n);

input_kafedra(n, arr);

output_kafedra(n, arr, out);

}

Функция input_kafedra(предназначена для заполнения базы с клавиатуры):

void input_kafedra(int n, struct kafedra arr[]) {

int prep, pot;

char buf[MLEN];

char* simvol = NULL;

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

printf("-----------------------------------\n");

printf("Kafedra - ");

fgets(buf, MLEN, stdin);

simvol = strchr(buf, '\n');

if (simvol != NULL)

*simvol = '\0';

strcpy(arr[i].name, buf);

printf("Zav Kafedri - ");

fgets(buf, MLEN, stdin);

simvol = strchr(buf, '\n');

if (simvol != NULL)

*simvol = '\0';

strcpy(arr[i].zavkav, buf);

printf("Prepodavateli - ");

scanf("%d%*c", &prep);

arr[i].teachers = prep;

printf("Potoki - ");

scanf("%d%*c", &pot);

arr[i].threads = pot;

}

}

Функция output_kafedra(предназначена для вывода на экран кафедры,чей штатный состав >k):

void output_kafedra(int n, struct kafedra arr[], struct kafedra out[]) {

int k;

printf("-----------------------------------\n");

printf("K= ");

scanf("%d", &k);

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

if (arr[i].teachers > k) {

strcpy(out[i].name, arr[i].name);

strcpy(out[i].zavkav, arr[i].zavkav);

out[i].teachers = arr[i].teachers;

out[i].threads = arr[i].threads;

printf("-----------------------------------\n");

printf("Kafedra:");

puts(out[i].name);

printf("Zavkav:");

puts(out[i].zavkav);

printf("Prepodi:%d \n", out[i].teachers);

printf("Potoki: %d \n", out[i].threads);

}

}

}

Заголовочный файл head10.h:

#define MLEN 50

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#include <string.h>

#define MCAF 20

struct kafedra {

char name[MLEN];

char zavkav[MLEN];

int teachers;

int threads;

}arr[MCAF],out[MCAF];

void input_kafedra(int n, struct kafedra arr[]);

void output_kafedra(int n,struct kafedra arr[],struct kafedra out[]);

Тестирование программы:

-----------------------------------

Kafedra - OTC

Zav Kafedri - Ivanov Ivan Ivanovi4

Prepodavateli - 20

Potoki - 4

-----------------------------------

Kafedra - Fizika

Zav Kafedri - Petrov Sergey Nikolaevi4

Prepodavateli - 15

Potoki - 5

-----------------------------------

Kafedra - Istoria

Zav Kafedri - Sidorov Pavel Sergeevi4

Prepodavateli - 10

Potoki - 3

-----------------------------------

K= 10

-----------------------------------

Kafedra:OTC

Zavkav:Ivanov Ivan Ivanovi4

Prepodi:20

Potoki: 4

-----------------------------------

Kafedra:Fizika

Zavkav:Petrov Sergey Nikolaevi4

Prepodi:15

Potoki: 5

Соседние файлы в предмете Программирование на языках высокого уровня