- •Экзамен по пяву Структура билета
- •Оформление решений
- •Задачи на составление программы - вопрос 3 билета
- •Задачи на составление подпрограмм (функций) - вопрос 4 билета
- •Задачи на определение объема памяти - вопрос 2 билета
- •Inf_type rez; // Результат - значение k-го элемента
- •Int k; // Номер искомого элемента
- •Int inf_1_el (inf_type *X, struct list *s)
- •Int kz; // Код завершения функции: 0 - успех, 1 - неудача
- •Inf_type rez; // Результат - значение 1-го элемента
- •Int inf_k_el (inf_type *X, int k, struct list *p)
- •Int inf_k_el (inf_type *x1, inf_type *x2, int k, struct list2 *p)
- •Inf_type rez1, rez2; // Вставить описания необходимых величин
- •Int k; // Номер искомого элемента
- •Int inf_k_el (inf_type *X, int k, struct list *p)
- •Inf_type rez; // Вставить описания необходимых величин
Оформление решений
Для подготовки к экзамену студенту предоставляются примеры решения типовых задач подобных экзаменационным задачам, в том числе в электронном виде, как требуется на экзамене, вместе с соответствующей библиотекой подпрограмм. Эти примеры вместе с библиотекой подпрограмм, будут доступны и на экзамене.
Задачи на составление программы - вопрос 3 билета
При автоматическом тестировании - проверке программ формат входных и выходных данных программы должен строго соответствовать условию задачи, включая допустимый диапазон значений всех величин, порядок их ввода и вывода.
Если не оговорено иное, целые числа, включая результаты операций, не выходят из диапазона значений типа int, а вещественные – типа float.
Не допускается очистка экрана и вывод не оговоренной в задаче информации, например, приглашений типа "Введите данные" или пояснений типа "результат =" и т. п.
Задачи на составление подпрограмм (функций) - вопрос 4 билета
Для задач на составление подпрограмм (функций) предоставляется готовый шаблон или варианты шаблона, то есть заготовки или варианты описания типов данных и главной функции main.
Подпрограмма студента не должна что-то вводить или выводить, если это не оговорено в условии задачи. Ее данные и результаты передаются в виде входных и выходных параметров либо в виде значения функции (оператором return выражение;).
Ввод и вывод в соответствии с условием задачи организуется в функции main. Для этого используется предоставляемая студенту библиотека подпрограмм ввода и вывода вместе с их описанием. Эти подпрограммы рассчитаны на решаемые задачи, и необходимо только правильно ими воспользоваться. Для этого требуются лишь небольшие исправления заданной функции main.
Если задача не всегда имеет решение, то подпрограмма должна выдавать код завершения в виде выходного параметра, или значения функции (по усмотрению автора).
Если в условии задачи не оговорено иное, то следует считать, что код завершения, равный 0, означает успешное решение, а в случае неудачи код завершения равен 1 или номеру ошибки - причины неудачи (см., например, решение задачи 2.4 в [2]).
Задачи на определение объема памяти - вопрос 2 билета
Для большей точности, однозначности и возможности автоматической проверки ответ на вопрос 2 по объему памяти требуется давать в виде выражения (по правилам языка С) с использованием операции
sizeof(тип) или sizeof(тип*),
где тип является не составным, а скалярным - задается служебным словом (или словами):
char, int, short, long, unsigned, float, double, unsigned short, unsigned long, и т.п. без использования типов, определяемых программистом, или использования
sizeof(имя-величины).
Дополнительно можно указать возможное числовое значение этого объема (оценивается добавочным баллом). Только числовой ответ (без объяснения) не учитывается.
Пример. Определить объем памяти для данных:
struct S {
int x[10];
signed char c;
float *P[5];
};
typedef struct S T;
T z[20];
char *s[]= {"КГТУ","КГУ"};
Ответ:
20 * (10 * sizeof(int)+ sizeof(signed char) + 5 * sizeof(float*))
+ sizeof(char **) + 2 * sizeof(char *) + 9 * sizeof(char)
или подробнее:
20 * (10*sizeof(struct S) + sizeof(char **) + 2*sizeof(char *) + (4 + 1 + 3 + 1)*sizeof(char) =
= 20 * (10 * sizeof(int)+ sizeof(signed char) + 5 * sizeof(float*))
+ sizeof(char **) + 2 * sizeof(char *) + 9 * sizeof(char)
В дополнение, можно привести и возможный числовой результат, например:
= 20 * (10 * 2 + 1 + 5 * 4) + 2 + 2 * 2 + 9 * 1 = 814 байт = 814 * 8 бит = 6512 бит
Нельзя отвечать: 20*sizeof(T) + sizeof(s) или
20*sizeof(struct S) + sizeof(char **) + 2*sizeof(char *) + 9*sizeof(char)
Однако для данных T *P[20];
ответ: 20*sizeof(struct S *), т. к. sizeof(struct S *) не зависит от sizeof(struct S).
// P00_4.C Пример решения задачи (вместе с файлом ListNE.C)
// Задача 00.4. Составить функцию получения значения 1-го элемента
// заданного списка из целых чисел.
#include <stdio.h>
#include <stdlib.h>
// РЕШЕНИЕ ЗАДАЧИ 00.4: описание данных и функция INF_1_EL
#define INF_TYPE int // ТИП информации ВЫБРАТЬ: int char float char*
#define F_ "%d" // ФОРМАТ информации ВЫБРАТЬ: %d %c %f %s
#define INF_ Z // ИМЯ информации Z можно оставить или заменить
struct LIST // элемент списка
{ INF_TYPE INF_; // информация элемента списка
struct LIST *next; // ссылка на следующий элемент
};
FILE *fin, *fout; // Входной и выходной файлы
#include "listNE.c" // Функции создания и вывода списка
// Получение Х - значения 1-го элемента списка s
// Код завершения: 0 - есть 1-й элемент, 1 - список пуст.
