Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Подготовка к экзамену ПЯВУ осень 2010.RTF
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
127 Кб
Скачать
☆

Оформление решений

Для подготовки к экзамену студенту предоставляются примеры решения типовых задач подобных экзаменационным задачам, в том числе в электронном виде, как требуется на экзамене, вместе с соответствующей библиотекой подпрограмм. Эти примеры вместе с библиотекой подпрограмм, будут доступны и на экзамене.

Задачи на составление программы - вопрос 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 - список пуст.