WWW.DISS.SELUK.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА
(Авторефераты, диссертации, методички, учебные программы, монографии)

 

Белорусский государственный университет

ПРАКТИКУМ

ПО КУРСУ «ПРОГРАММИРОВАНИЕ»

В ДВУХ ЧАСТЯХ

ЧАСТЬ 1. ЯЗЫК ПРОГРАММИРОВАНИЯ СИ

Учебное пособие

Для студентов университетов

специальностей

«Информатика»,

«Прикладная математика», «Компьютерная безопасность», «Актуарная математика» и «Экономическая кибернетика Минск 2007 Авторы: С. П. Бондаренко, А. П. Побегайло Рецензенты: Л.Ф. Зимянин, Н.А. Разоренов В практикум включены шесть лабораторных работ по языку программирования Си. Каждая из них содержит необходимые теоретические сведения, примеры и задания для самостоятельной работы.

Приведены также индивидуальные задания, которые охватывают весь учебный материал.

Лабораторный практикум предназначен для студентов ВУЗов, специальностей «Информатика», «Прикладная математика», «Компьютерная безопасность», «Актуарная математика» и «Экономическая кибернетика.

Предисловие В практикуме изложены основы языка программирования Си, который был разработан в начале семидесятых годов американскими программистами Брайаном Керниганом и Деннисом Ритчи для кодирования операционной системы Unix, что позволило бы сделать эту операционную систему переносимой на различные аппаратные платформы. Поэтому в языке программирования Си так много средств, позволяющих программировать на «низком уровне». Можно сказать, что язык программирования Си разрабатывался как язык ассемблера высоко уровня. Эту особенность языка программирования Си нужно учитывать при его изучении.

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

Практикум предназначен для студентов всех специальностей факультета прикладной математики и информатики Белорусского государственного университета. Доступное изложение материала позволяет рекомендовать данное учебное пособие также для самостоятельного изучения основ программирования на языке Си.

Лабораторная работа Тема. Работа с целыми и действительными числами. Форматированный ввод-вывод чисел. Управляющие инструкции. Использование стандартных математических функций.

1.1. Типы данных и переменные Данными называется информация, хранящаяся в памяти компьютера.

Единица этой информации называется значением данных или просто значением. Тип данных определяет множество значений и множество операций, допустимых над этими значениями. Данные делятся на переменные и константы. Переменными называются данные, значения которых могут быть изменены в процессе выполнения программы. Константами называются данные, значения которых изменить нельзя.

Значение переменной или константы хранится в области памяти компьютера, которая имеет свой адрес и длину. Причем длина этой области памяти зависит от типа данных переменной или константы. В языках программирования высокого уровня адрес значения переменной представляется символическим именем, которое называется именем переменной или просто переменной. Адрес значения константы может иметь символическое имя, а может и не иметь такого имени. В первом случае константа называется именованной константой, а во втором – литералом.

1.2. Числовые типы данных К числовым типам данных относятся типы, которые предназначены для работы с числовыми данными. В языке программирования Си определены следующие числовые типы данных:

int целочисленный тип данных;

char символьный тип данных;

float тип чисел с плавающей точкой;

double – тип чисел с плавающей точкой двойной точности.

Целочисленные переменные имеют тип int и объявляются следующим образом:

int x;

int i, j, k;

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

В языке программирования Си для хранения символов используются переменные типа char. Объявляются переменные этого типа следующим образом:

char x;

Тип char также считается числовым типом данных. Над данными этого типа разрешены те же операции, что и над данными типа int.

В языке программирования Си для работы с действительными числами используются типы float или double. Переменные типа double имеют в два раза больший диапазон значений, чем переменные типа float. Переменные этого типа объявляются следующим образом:

float x;

double y, z;

При объявлении переменные могут инициализироваться. Для этого используется операция присваивания переменной некоторого значения.

В следующих примерах показаны возможные варианты инициализации переменных.

char x = ‘a’;

float x = 1.2f; /* f обозначает float */ double y = 2.3;

Здесь переменные x и y инициализируются числовыми литералами соответствующего типа.



Объявление именованной константы отличается от объявления переменной только тем, что начинается с ключевого слова const. Ниже приведены несколько примеров объявления числовых констант:

const char a = ‘a’;

const float a = 1.2f;

const double b = 2.3;

Как видим, именованные числовые константы инициализируются только числовыми литералами.

Отметим, что в программе все переменные и именованные константы должны иметь различные имена.

1.3. Арифметические операции над числами Над целочисленными данными разрешается выполнять следующие арифметические операции:

% деление по модулю.

В языке программирования Си символические обозначения этих операций называются операторами. В следующем примере показано различие между операторами ‘/’ и ‘%’.

Над данными типа float и double разрешается выполнять следующие операции:

Операторы ‘+’ и ‘-’ являются как бинарными, так и унарными, т. е.

могут применяться как к одному, так и к двум операндам. Кроме того, числовые переменные могут быть операндами следующих унарных операторов:

++ инкремент, т. е. увеличение значения операнда на единицу, -- декремент, т. е. уменьшение значения операнда на единицу.

Эти операторы могут быть как префиксными, так и постфиксными, т.

е. записываться как перед операндом, так и после него. Следующий пример демонстрирует различие между префиксными и постфиксными операциями инкремента и декремента:

т. е. значение префиксной операции вычисляется перед вычислением значения выражения, а значение постфиксной операции вычисляется после вычисления значения выражения.

Если результат арифметической операции над числами необходимо поместить в первый операнд этой операции, то для этих целей используются следующие сокращенные обозначения арифметических операций:

+=, -=, *=, /=, %=. Например, увеличение значения переменной x на некоторое значение может быть записано следующим образом:

1.4. Форматированный ввод и вывод чисел Для форматированного ввода данных с консоли используется функция scanf. Для форматированного вывода данных на консоль используется функция printf. Прототипы этих функций описаны в заголовочном файле stdio.h. О заголовочных файлах и стандартных библиотеках будет рассказано позже. Пока же рассмотрим пример программы, в котором с консоли вводятся два целых числа, а затем на консоль выводится их сумма.

#include int main() /* выводим текстовое сообщение */ printf("Input two integers: ");

/* вводим два целых числа */ scanf("%d %d", &x, &y);

/* выводим сумму этих чисел */ printf("x + y = %d\n", x + y);

return 0;

Немного поясним работу функций scanf и printf. Первым параметром этих функций является строка, которая будет форматироваться при вводе или выводе данных. Если в каком-то месте этой строки нужно вставить символьное представление целого числа, то на это место ставится спецификация ввода или вывода целого числа, которая в обоих случаях имеет вид %d. Следующие за строкой параметры функции scanf представляют собой адреса переменных, в которые нужно ввести целое число. Заметим, что операция взятия адреса переменной обозначается символом ‘&’. В свою очередь следующие за строкой параметры функции printf представляют собой просто целочисленные переменные или литералы, которые нужно вставить в строку для вывода на консоль.

В связи с этим примером также заметим, что управляющий символ ‘\n’ в форматируемой строке функции printf используется для перевода курсора в первую позицию на следующей строке консоли.

Подобным образом выполняется и ввод-вывод чисел с плавающей точкой. Только для чисел типа double используются следующие спецификации: %lf – для ввода с консоли и %f – для вывода на консоль.

Следующий пример демонстрирует форматированный ввод и вывод чисел с плавающей точкой двойной точности.

#include int main() /* выводим текстовое сообщение */ printf("Input two real numbers: ");

/* вводим два действительных числа */ scanf("%lf %lf", &x, &y);

/* выводим сумму этих чисел */ printf("x + y = %f\n", x + y);

return 0;

Сделаем следующее замечание относительно этих программ. Каждая программа на языке программирования Си должна содержать функцию main, которая возвращает целочисленное значение. При запуске приложения операционной системой управление всегда передается функции main. Более подробно работа с функциями будет рассмотрена в одной из следующих лабораторных работ.

1.5. Логические операторы и операторы сравнения В языке программирования Си определены следующие логические операторы:

логическое отрицание, логическая операция «и», логическая операция «или».

Отметим, что операндами логических операций могут быть значения любого типа. При этом считается, что нулевому значению соответствует логическое значение «ложь», а любое другое значение соответствует логическому значению «истина».

Для сравнения числовых значений используются следующие операторы сравнения:

1.6. Условные инструкции if и if-else Для управления ходом выполнения программы в языке программирования Си используются управляющие инструкции, которые рассмотрены в этом и следующих трех параграфах.

Для проверки истинности некоторого условия используется управляющая инструкция if (выражение) инструкция которая работает следующим образом. Если значение выражения истинно, то выполняется инструкция, следующая за выражением. Иначе, ничего не выполняется. Например, следующая инструкция увеличивает значение переменной a на единицу только в том случае, если это значение меньше нуля.

Если необходимо выбрать одно из действий в зависимости от значения логического выражения, то для этой цели используется управляющая инструкция if (выражение) инструкция else инструкция В следующем примере значение переменной a увеличивается на единицу, если оно меньше нуля, и уменьшается на единицу в противном случае.

else 1.7. Инструкции цикла while и do-while Для выполнения инструкции в цикле до тех пор, пока значение некоторого логического выражения остается истинным, используются управляющие инструкции while (выражение) инструкция инструкция while (выражение) В этих случаях логическое выражение после ключевого слова while также называется условием продолжения цикла. В первом случае условие продолжения цикла проверяется перед выполнением инструкции, а во втором случае – после выполнения инструкции. Использование инструкций цикла while и do-while показано в следующих примерах:

или Для принудительного выхода из циклов while и do-while используется инструкция break. Например:

/* если a > b, то выход из цикла while */ Для перехода на исполнение следующего цикла, не ожидая завершения исполнения текущего цикла, используется инструкция continue.

Например:

/* если a > b, то переход на начало цикла while */ Как видно из этих определений, возможно вложение управляющих инструкций друг в друга.

1.8. Инструкция цикла for Для выполнения циклических действий с автоматическим изменением значений некоторых переменных удобно использовать управляющую инструкцию for (выражение_1; выражение_2; выражение_3) инструкция;

где выражения имеют следующее назначение:

«выражение_1» описывает инициализацию цикла и вычисляется только один раз перед началом цикла;

«выражение_2» описывает условие, которое проверяется каждый раз перед выполнением инструкции; если значение этого выражения истинно, то инструкция выполняется, в противном случае цикл заканчивается;

«выражение_3» вычисляется после каждой итерации цикла.

Например, программа #include int main() printf("i = %d\n", i);

printf("\n");

return 0;

выводит на консоль последовательные значения целочисленной переменной.

Для принудительного выхода или продолжения цикла for используются инструкции break и continue соответственно.

1.9. Инструкция выбора switch Инструкция выбора switch передает управление другой инструкции в зависимости от значения некоторого выражения. В общем случае инструкция switch имеет вид switch (выражение) case константа_1: инструкции case константа_2: инструкции default: инструкции и работает следующим образом. Сначала вычисляется значение выражения. Затем это значение сравнивается с константами. Управление передается на метку, для которой это сравнение дает значение «истина». Если значение выражения не совпадает ни с одной из констант, то управление передается инструкции с меткой default. А если этой метки нет, то происходит выход из блока switch. Для принудительного выхода из блока switch используется инструкция break.

В следующей программе приведен пример использования инструкции switch.

#include int main() printf("Input any char 'a' or 'b': ");

scanf("%c", &c);

switch (c) printf("You input 'a'.\n");

printf("You input 'b'.\n");

printf("You input a different letter.\n");

return 0;

Сделаем некоторые важные замечания относительно использования инструкции switch. Во-первых, выражение и константы в инструкции switch должны иметь целочисленный тип. Во-вторых, никакие две константы не могут иметь одинаковое значение.

1.10. Блоки Часто при программировании управляющих инструкций необходимо, чтобы при выполнении некоторого условия выполнялись сразу несколько других инструкций. Для этой цели инструкции объединяются в блок инструкций или просто блок. Начало и конец блока отмечаются соответственно символами ‘{’ и ‘}’. Особо отметим, что после окончания блока ставить точку с запятой не нужно. Например, блок внутри управляющей инструкции if может выглядеть следующим образом:

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

double acos(double x) double asin(double x) double atan(double x) atan2(double y, double x) возвращает арктангенс числа y/x double double cos(double x) double sin(double x) double tan(double x) экспоненциальные и логарифмические функции double cosh(double x) double exp(double x) double frexp(double x, int *а) /* вводим первую запись с консоли */ scanf("%d%s%lf", &s.code, &s.name, &s.salary);

while (!feof(stdin)) fwrite(&s, sizeof(struct emp), 1, out);

/* вводим следующие записи с консоли */ scanf("%d%s%lf", &s.code, &s.name, &s.salary);

/* закрываем выходной поток */ fclose(out);

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

/* чтение бинарного файла */ #include struct emp int code;

char name[20];

double salary;

int main() struct emp s; /* для записей файла */ unsigned i; /* номер записи */ /* открываем входной поток в бинарном режиме */ if(!(in = fopen("C:\\employee.bin", "rb"))) printf("Open file failed.\n");

printf("Press Ctrl+z to exit.\n");

/* читаем индекс */ printf("Input an index: ");

scanf("%u", &i);

while (!feof(stdin)) /* устанавливает указатель на нужную запись */ fseek(in, i*sizeof(struct emp), SEEK_SET);

if(!fread(&s, sizeof(struct emp), 1, in)) printf("The wrong index.\n");

/* выводим запись на консоль */ printf("\tcode = %d name = %s sal = %f\n", printf("Input an index: ");

/* закрываем входной поток */ fclose(in);

6.5. Символьный ввод-вывод Символьный ввод-вывод используется с текстовыми потоками.

1. Ввод-вывод символов. Для записи и чтения символов из текстового файла используются функции fputc, putc, fgetc, getc.

Функция int fputc(int c, FILE* stream);

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

Функция int putc(int c, FILE* stream);

работает так же, как и функция fputc, но может быть реализована как макрокоманда.

Функция int fgetc(FILE* stream);

читает символ из потока stream и продвигает индикатор позиции на следующий символ. В случае успешного завершения функция возвращает прочитанный символ. В случае достижения конца файла функция возвращает EOF и устанавливает индикатор конца файла. В случае ошибки функция возвращает EOF и устанавливает индикатор ошибки.

Функция int getc(FILE* stream);

работает так же, как и функция fgetc, но может быть реализована как макрокоманда.

Функция int ungetc(int c, FILE* stream);

записывает символ с в поток stream. Функции fseek, fsetpos и rewind игнорируют такие символы. Доступ к записанным символам выполняется по правилу FIFO. В случае успеха функция возвращает записанный символ, а в случае неудачи – EOF.

2. Ввод-вывод строк. Для записи и чтения строк из символьного потока используются символы fpus и fgets.

Функция int fputs(const char* str, FILE* stream);

записывает строку str в файл stream, не включая завершающий нулевой байт. В случае успешного завершения функция возвращает ненулевое число, а в случае неудачи – EOF.

Функция int fgets(char* str, int n, FILE* stream);

читает строку из потока stream в строку str. Останавливается функция в случае, если прочитан (n-1) символ, или встретился символ ‘\n’, или обнаружен конец файла. В любом из этих случаев в конец строки помещается символ ‘\n’. В случае успеха функция возвращает указатель str, а в случае неудачи – NULL. Строка str не изменяется, если не прочитан ни один символ и обнаружен конец файла.

3. Форматированный ввод-вывод. Для форматированного вводавывода в текстовые файлы используются функции fscanf и fprintf.

Функция int fprintf(FILE* stream, const char* format,...);

выполняет вывод в файл stream в соответствии с форматной строкой format. Работает эта функция так же, как и функция форматирования строк sprintf, которая была рассмотрена в лабораторной работе 4.

Функция int fscanf(FILE* stream, const char* format,...);

выполняет ввод из файла stream текста в соответствии с форматной строкой format. Работает эта функция так же, как и функция форматирования строк sscanf, которая была рассмотрена в лабораторной работе 4.

В следующей программе создается текстовый файл.

/* создание текстового файла */ #include int main() int code;

char name[80];

double salary;

FILE* out; /* выходной поток */ /* открываем выходной поток в текстовом режиме */ if(!(out = fopen("C:\\employee.txt", "w"))) printf("Open file failed.\n");

printf("Input code, name and salary.\n");

printf("Press Ctrl+z to exit.\n");

printf(">");

/* вводим первую запись с консоли */ scanf("%d%s%lf", &code, &name, &salary);

while (!feof(stdin)) /* пишем запись в файл */ fprintf(out, "%d %s %f ", code, name, salary);

printf(">");

/* вводим следующие записи с консоли */ scanf("%d%s%lf", &code, &name, &salary);

/* закрываем выходной поток */ fclose(out);

В следующей программе читается текстовый файл.

/* чтение текстового файла */ #include int main() int code;

char name[80];

double salary;

/* открываем входной поток в текстовом режиме */ if(!(in = fopen("C:\\employee.txt", "r"))) printf("Open file failed.\n");

/* читаем первую запись */ fscanf(in, "%d%s%lf", &code, name, &salary);

while (!feof(in)) /* выводим запись на консоль */ printf("code = %d name = %s sal = %f\n", /* читаем следующие записи */ fscanf(in, "%d%s%lf", &code, name, &salary);

/* закрываем входной поток */ fclose(in);

6.6. Работа с буферами Буфером называется область оперативной памяти, используемая потоком для временного хранения данных из файла. Для работы с буферами используются функции setvbuf, setbuf, fflush.

Функция int setvbuf(FILE* stream, char* buffer, int mode, size_t size);

определяет буфер ввода-вывода и режим работы с ним для потока stream. Вызывается эта функция после открытия файла, но перед доступом к нему. При успешном завершении функция возвращает значение 0, а в случае неудачи – ненулевое значение.

Параметр buffer указывает на блок памяти для буфера. Если этот параметр равен NULL, то функция setvbuf использует функцию malloc для захвата памяти под буфер.

Параметр mode определяет режим работы с буфером и может принимать следующие значения:

• _IOFBF – вывод данных из буфера во внешнюю память выполняется только при полной загрузке буфера или при закрытии файла;

• _IOLBF – вывод данных из буфера во внешнюю память выполняется при записи в буфер символа ‘\n’;

• _IONBF – нет буферизации, в этом случае параметры size и buffer игнорируются.

Параметр size определяет длину буфера в байтах.

Функция int setbuf(FILE* stream, char* buffer);

вызывает функцию setvbuf. Причем если значение параметра buffer не равно NULL, то функция setvbuf вызывается следующим образом:

setvbuf(stream, buffer, _IOFBF, BUFSIZE);

где константа BUFSIZE задает длину буфера по умолчанию. Эта константа описана в заголовочном файле stdio.h. В противном случае функция setvbuf вызывается следующим образом:

setvbuf(stream, 0, _IOFBF, BUFSIZE);

Т.е. в этом случае буферизация не используется.

Функция int fflush(FILE* stream);

записывает данные из буфера потока stream в соединенный с этим потоком файл. В случае успешного завершения функция возвращает значение 0, а в случае неудачи – EOF. Если значение параметра stream равно NULL, то освобождаются буферы всех потоков, которые работают в режиме вывода.

В следующей программе создается текстовый файл с буфером.

/* создание файла с буфером */ #include int main() int code;

char name[80];

double salary = 0.0;

FILE* out; /* выходной поток */ const unsigned size = 1024; /* размер буфера */ char buffer[size]; /* буфер потока */ /* открываем выходной поток в текстовом режиме */ if(!(out = fopen("C:\\employee.txt", "w"))) printf("Open file failed.\n");

/* устанавливаем буфер для потока */ if(setvbuf(out, buffer, _IOFBF, size)) printf("Set buffer failed.\n");

printf("Input code, name and salary.\n");

printf("Press Ctrl+z to exit.\n");

printf(">");

/* вводим первую запись с консоли */ scanf("%d%s%lf", &code, &name, &salary);

while (!feof(stdin)) /* пишем запись в файл */ fprintf(out, "%d %s %f ", code, name, salary);

printf(">");

/* вводим следующие записи с консоли */ scanf("%d%s%lf", &code, &name, &salary);

/* закрываем выходной поток */ fclose(out);

return 0;

В следующей программе создается текстовый файл без буфера.

/* создание файла без буфера */ #include int main() char name[80];

double salary;

FILE* out; /* выходной поток */ /* открываем выходной поток в текстовом режиме */ if(!(out = fopen("C:\\employee.txt", "w"))) printf("Open file failed.\n");

/* нет буферизации */ setbuf(out, NULL);

printf("Input code, name and salary.\n");

printf("Press Ctrl+z to exit.\n");

printf(">");

/* вводим первую запись с консоли */ scanf("%d%s%lf", &code, &name, &salary);

while (!feof(stdin)) fprintf(out, "%d %s %f ", code, name, salary);

/* вводим следующие записи с консоли */ scanf("%d%s%lf", &code, &name, &salary);

/* закрываем выходной поток */ fclose(out);

6.7. Стандартные потоки Каждой программе предоставляются три стандартных потока, которые по умолчанию соединены с консолью. Указатели на эти потоки возвращают макрокоманды stdin, stdout, stderr. Для работы со стандартными потоками предназначены рассмотренные ранее функции scanf, printf, а также следующие функции:

int putchar(int c); /* вывод символа в stdout */ int getchar(void); /* ввод символа из stdin */ int puts(const char* str); /* вывод строки в stdout */ char* gets(char* str); /* ввод строки из stdin */ void perror(const char* str); /* вывод сообщения об */ Работают эти функции так же, как и аналогичные функции для работы с файлами.

6.8. Служебные функции для работы с файлами В этом параграфе перечислим служебные функции для работы с файлами, которые не входят ни в одну из вышеперечисленных категорий. К ним относятся функции remove, rename, tmpfile, tmpname.

Функция int remove(const char* filename);

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

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

/* удаление файла */ #include int main() if(remove("C:\\employee.bin")) printf("There is no such a file.\n");

printf("The file was deleted.\n");

return 0;

Функция int rename(const char* old_filename, const char* new_filename);

переименовывает файл с именем old_filename в файл с именем new_filename. Если файл с именем new_filename уже существует, то работа функции зависит от реализации. В случае успешного завершения функция возвращает 0, а в случае неудачи – ненулевое значение.

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

/* переименование файла */ #include int main() if(rename("C:\\employee.txt", "C:\\emp.txt")) printf("There is no such a file.\n");

printf("The file was renamed.\n");

Функция FILE* tmpfile(void);

создает временный файл в режиме “w+b”. После закрытия потока файл удаляется. В случае успешного завершения функция возвращает указатель на файл, а в случае неудачи – NULL.

Функция char* tmpnam(char* str);

возвращает имя для временного файла. Максимальное количество имен равно TMP_MAX, а максимальная длина имени равна L_tmpnam. Если значение параметра str равно NULL, то функция возвращает указатель на свою строку, в противном случае возвращается указатель str.

Следующая программа показывает пример использования временного файла.

/* использование временного файла */ #include int main() int code;

char name[80];

double salary = 0.0;

FILE* temp; /* временный файл */ /* открываем временный файл */ if(!(temp = tmpfile())) printf("Create temp file failed.\n");

printf("Input code, name and salary.\n");

printf("Press Ctrl+z to exit.\n");

printf(">");

/* вводим первую запись с консоли */ scanf("%d%s%lf", &code, &name, &salary);

while (!feof(stdin)) /* пишем запись в файл во временный файл */ fprintf(temp, "%d %s %f ", code, name, salary);

/* вводим следующие записи с консоли */ scanf("%d%s%lf", &code, &name, &salary);

/* устанавливаем индикатор позиции на начало файла */ rewind(temp);

printf("\nRead records from the temporary file.\n");

/* читаем первую запись из временного файла */ fscanf(temp, "%d%s%lf", &code, name, &salary);

while (!feof(temp)) /* выводим запись на консоль */ printf("code = %d name = %s sal = %f\n", /* читаем следующие записи из временного файла */ fscanf(temp, "%d%s%lf", &code, name, &salary);

/* закрываем временный файл */ fclose(temp);

6.9. Задачи для самостоятельного решения 1. Написать программу, которая корректирует текстовый файл. Программа позволяет выполнить над текстовым файлом следующие функции:

a) Исключает из текста заданное слово. Слово, которое нужно исключить, вводится с консоли. Откорректированный текст выводится на b) Вставляет в текст новое слово после заданного слова. Новое и заданное слова вводятся с консоли. Откорректированный текст выводится на консоль.

c) Заменяет в тексте старое слово на новое. Старое и новое слова вводятся с консоли. Откорректированный текст выводится на консоль.

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

2. Заданы два бинарных файла с записями следующей структуры:

struct Student char name[10]; /* имя студента */ Разработать программу, которая выполняет над заданными файлами алгебраические операции объединения (), пересечения () и разности (). Результат выполнения этих операций записывается в третий файл.

Имена исходных и выходного файлов вводятся с консоли. Операции над файлами удовлетворяют следующим требованиям:

• операция объединения включает в результирующий файл только такие записи, которые находятся хотя бы в одном из двух входных файлах;

• операция пересечения включает в результирующий файл только такие записи, которые находятся одновременно в двух входных файлах;

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

Запросы на выполнение операций оформить в виде меню.

3. Разработать программу для сортировки бинарного файла, записи которого имеют структуру, описанную в задаче 2. Записи файла могут сортироваться в следующих порядках:

a) по возрастанию номеров зачеток;

b) по номерам групп, а внутри групп по фамилиям студентов.

Имя файла вводится с консоли. Запрос на вид сортировки оформить в виде меню. Перед выполнением сортировки вывести на консоль исходный файл. После завершения сортировки вывести на консоль отсортированный файл.

6.10. Дополнительные задачи 1. В заданном текстовом файле найти номер позиции, начиная с которого располагается заданный фрагмент текста.

2. В заданном текстовом файле найти и заменить по всему тексту один указанный фрагмент текста на другой.

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

4. Для заданного текстового файла найти повторяющийся фрагмент текста в этом файле.

5. Для заданного текстового файла выполнить шифрование хранящейся в нем информации путем выполнения операции “исключающее или” с 16(32)-разрядным ключом. Обеспечить возможность расшифровки файла.

6.11. Задачи для индивидуальной работы 1. Результаты соревнований. Задан текстовый файл, содержащий информацию о результатах соревнований спортсменов в троеборье: фамилия участника, результат в жиме, результат в прыжке, результат в беге на 100 м. За один просмотр файла получить фамилии трех лучших спортсменов по каждому из видов спорта и с указанием достигнутых ими результатов занести в текстовый файл.

2. Осадки. Задан текстовый файл, содержащий информацию о количестве осадков, выпавших в каждом месяце соответствующего года. Необходимо получить информацию:

• об общей сумме выпавших осадков в каждом году;

• о трех самых засушливых месяцах в каждом году;

• о выпавших поквартально количествах осадков в каждом году;

• о трех самых засушливых годах;

• о годе с самым засушливым летом.

3. Страны света. По имеющейся информации: название страны, часть света, занимаемая площадь, численность населения – создать бинарный файл и выполнить следующие действия:

• обновить сведения о количестве проживающего населения в указанной стране;

• по указанной части света вывести суммарное количество занимаемой площади и проживающего населения;

• определить страну с наименьшей плотностью населения;

• вывести список стран по указанной части света;

• вывести процентное распределение площадей, занимаемых странами;

• определить часть света, в которой проживает наибольшее количество человек;

• определить количество стран, входящих в каждую из частей света;

• определить часть света, в которой плотность населения максимальна;

• поменять в файле местами записи о странах с минимальным и максимальным населением.

Информация файла представлена в следующей таблице:

Все действия оформить в виде отдельных функций.

4. Зоопарк. По имеющейся информации: название животного, страна обитания, год поступления, стоимость – создать бинарный файл и выполнить следующие действия:

• обновить сведения о стоимости указанного животного;

• для указанного года определить, на какую сумму зоопарк приобрел • вывести информацию о самом дорогостоящем животном;

• получить процентное распределение затраченных сумм на покупку животных в разрезе стран обитания;

• определить, в каком году поступило наибольшее количество животных;

• определить страну, из которой поступило животных на самую большую сумму;

• определить, в каком году начал функционировать зоопарк;

• поменять местами в файле записи о животных из Африки;

• получить процентное распределение затраченных сумм на покупку животных по годам.

Информация файла представлена в следующей таблице:

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

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

Написать программу, в результате выполнения которой:

• выдается список моделей процессоров со стоимостью от 80 до • обновляется стоимость процессоров фирмы Intel на заданную величину;

• выдается список моделей процессоров с частотой > 1000 МГц и их общая стоимость;

• выдаются сведения о самой дешевой модели процессора;

• выдаются сведения о фирме, имеющей наименьшую суммарную цену выпускаемых ею процессоров;

• вычисляется процентное распределение общей стоимости процессоров в разрезе выпускающих их фирм;

• осуществляется упорядочение записей в бинарном файле по возрастанию стоимости процессоров;

• осуществляется удаление из файла информации о процессорах указанной модели.

Информация файла представлена в следующей таблице:

Все действия оформить в виде отдельных функций.

6. Соревнования. При проведении соревнований каждому спортсмену предоставляется несколько попыток для выполнения упражнений. Четырехзначный код спортсмена, начинающийся с цифры 9, и количество баллов, полученных за каждую попытку, заносятся в бинарный файл с целочисленным типом записи. Необходимо написать следующие процедуры: процедуру создания бинарного файла, записи которого формируются на основе аналогичной информации, хранящейся в текстовом файле; процедуру вывода информации, хранящейся в бинарном файле, причем код спортсмена и полученные им баллы должны быть выведены в одну строчку; процедуру формирования и вывода в новый текстовый файл среднего значения полученного спортсменом балла вместе с его кодом (при расчете среднего балла не учитываются максимальное и минимальное значения баллов, полученные спортсменом); процедуру, выполняющую обмен в файле минимального и максимального значений баллов для каждого спортсмена; процедуру, выводящую по указанному спортсмену его средний балл.

7. Банковская система. Реализовать систему, осуществляющую моделирование работы банковской системы по следующей схеме. При проведении банковской операции открытия нового счета для клиента заводится карточка, где указывается фамилия клиента, номер счета, заносимая сумма. При выполнении операций добавления или снятия денег со счета клиент указывает свою фамилию, после чего ему показывают список его счетов с имеющимся количеством денег на каждом счете и общую сумму денег. Клиент может снять или добавить деньги на указанный счет, а также снять сумму, не превышающую общей суммы. В последнем случае деньги снимаются последовательно, начиная со счета с максимальным количеством денег, затем со счета с максимальным количеством денег из оставшихся счетов и т. д. При попытке снятия суммы, превышающей общий итог, выдается соответствующее сообщение. Счет с нулевой суммой удаляется. Работа системы реализуется процедурами, выполняющими: добавление нового счета; снятие клиентом денег; добавление клиентом денег на указанный счет; вывод информации о наличии общей суммы денег у каждого из клиентов; закрытие счета. Информация хранится в бинарном файле.

8. Склад. Реализовать систему, осуществляющую моделирование работы склада по следующей схеме. Склад имеет определенное количество ячеек для хранения деталей различного типа. Емкость всех ячеек одинакова и задается в начале моделирования. Первоначальное состояние склада считывается из текстового файла. При поступлении новой детали на склад на нее заводится новая запись, в которой указывается название детали, количество поступивших деталей, номер ячейки хранения. Деталь такого же наименования может быть добавлена в уже имеющуюся ячейку или изъята из нее в указанных количествах. Если при добавлении детали будет превышена емкость ячейки, то превышаемое количество должно быть размещено в новой ячейке. Изъятие детали может осуществляться двумя способами: пропорциональным и последовательным. При пропорциональном изъятии заданное количество изымаемых деталей распределяется между ячейками, пропорционально хранящимся там количествам деталей. При последовательном снятии деталь сначала забирается из ячейки, хранящей максимальное количество деталей данного наименования, затем из ячейки с максимальным количеством деталей из оставшихся и т. д. При попытке изъятия количества деталей, превышающего общий итог, выдается соответствующее сообщение. При заполнении всех ячеек склада выдается соответствующее сообщение. Работа системы реализуется процедурами, выполняющими: создание модели склада, добавление новой детали; изъятие указанной детали по указанному способу; добавление детали имеющегося наименования; вывод информации о наличии общего количества хранящихся на складе деталей в разрезе наименований. Информация хранится в бинарном файле.

9. Комплекты. Реализовать систему, осуществляющую моделирование работы участка ОТК по следующей схеме. Участок ОТК хранит детали различных наименований, из которых осуществляется формирование комплектов. При поступлении новой детали на нее заводится карточка, где указывается наименование и количество поступления. При поступлении детали с уже имеющимся названием новое количество добавляется к уже имеющемуся количеству. На каждый комплект имеется карточка, в которой указывается название комплекта, название входящей в него детали, количество входящих в комплект деталей данного наименования. Отгрузка всегда осуществляется комплектами. Максимальное количество комплектов, которые можно отгрузить, определяется минимальным значением составляющей его детали, имеющейся в данный момент в секции ОТК. При отгрузке некоторого количества комплектов значения количеств хранящихся деталей должны быть уменьшены в пропорциональном к количеству входящих в комплект деталей отношении. Например, если в комплект К1 входит две детали Д1, то при отгрузке трех комплектов К1 количество деталей Д1 должно быть уменьшено на шесть деталей. Первоначальное состояние участка ОТК считывается из текстового файла. Работа системы реализуется процедурами, выполняющими: создание модели участка ОТК, добавление новой детали; добавление детали имеющегося наименования; отгрузка комплектов; вывод информации о наличии общего количества хранящихся на участке деталей в разрезе наименований, упорядоченной по убыванию; вывод информации об имеющихся на участке комплектах с указанием количества.

Информация хранится в бинарном файле.

10. Серии значений. Дан бинарный файл, содержащий серии значений показаний приборов – результатов проводимых экспериментов. Каждая серия значений отделяется от другой серии нулевым значением.

а) Определить:

• количество имеющихся значений показаний приборов в каждой • сумму значений показаний приборов в каждой серии;

• среднее значение показаний приборов в каждой серии;

• максимальное и минимальное значения показаний приборов для каждой серии;

• порядковый номер серии с максимальной суммой значений показаний приборов;

• среднее значение показаний приборов для каждой серии без учета максимального и минимального значений.

б) Отсортировать по возрастанию значения показаний приборов • в серии с указанным порядковым номером.

в) Поменять в каждой серии максимальное и минимальное значения показаний приборов местами.

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

д) Найти выраженное в процентах распределение сумм значений по каждой серии показаний приборов к общей сумме всех значений.

11. Автопарк. Автопарк осуществляет обслуживание заказов на перевозку грузов, используя для этой цели свой парк автомашин и своих водителей. Водитель, выполнивший заказ, получает 20 % от стоимости перевозки. Для получения сведений о результатах работы автопарка создать бинарный файл, содержащий следующую информацию: дата перевозки, номер машины, фамилия водителя, масса перевезенного груза, километраж, стоимость перевозки.

Написать программу, в результате выполнения которой:

• осуществляется обновление, добавление и удаление информации в файле;

• по указанному водителю выводится информация о выполненных заказах за указанный период;

• по указанной машине определяется общий пробег и общая масса перевезенных грузов;

• по каждому водителю выводится общее количество поездок, общая масса перевезенных грузов, сумма заработанных денег;

• по водителю, выполнившему наименьшее количество поездок, рассчитывается процент заработанных им денег по отношению к общему количеству денег;

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

Все действия оформить в виде отдельных функций.

12. Рыболовная флотилия. Флотилия рыболовных траулеров осуществляет поиск косяков рыбы и его отлов. С этой целью каждый траулер отправляется в рейс на некоторое количество суток и посещает ряд мелководных участков моря, называемых банками. Каждая банка имеет свое название. Выловленная рыба классифицируется своим названием, количеством и качеством. Для получения сведений о результатах работы рыболовной флотилии создать бинарный файл, содержащий следующую информацию: название траулера, дата выхода в море, дата возращения, название посещенной банки, название, качество и количество выловленной рыбы.

Написать программу, в результате выполнения которой:

• осуществляется обновление, добавление и удаление информации в файле;

• по указанному траулеру выводится список выполненных рейсов за указанный период с выдачей сведений об общем количестве выловленной рыбы;

• по указанной банке определяется перечень названий и количество выловленной рыбы;

• по банке, на которой было выловлено максимальное количество рыбы низкого качества, выдаются сведения о датах рейсов и траулерах, ее посещавших;

• по траулеру, выловившему наибольшее количество рыбы, выдаются сведения о посещенных траулером банках с указанием дат выхода и возвращения.

Все действия оформить в виде отдельных функций.

13. Воздушный извозчик. Отряд грузовых вертолетов осуществляет доставку грузов и людей в высокогорном районе. Каждый вертолет обслуживается экипажем из трех пилотов, постоянно закрепленных за ним.

Летчики получают по 5 % от стоимости обычного рейса (код – 0) и 10 % от стоимости спецрейса (код – 1). Для получения сведений о результатах работы отряда грузовых вертолетов создать бинарный файл, содержащий следующую информацию: дата рейса, номер вертолета, код рейса, масса груза, количество перевезенных людей, длительность полета, стоимость рейса, дата последнего капитального ремонта, ресурс летного времени до следующего капитального ремонта.

Написать программу, в результате выполнения которой:

• осуществляется обновление, добавление и удаление информации в файле;

• по каждому вертолету выводится общее количество часов, которые они налетали после капитального ремонта, и ресурс летного времени до следующего капитального ремонта;

• по каждому вертолету формируется и выводится перечень выполненных рейсов с указанием общей массы перевезенных грузов и количества человек за указанный период;

• по всем вертолетам, выполнявшим спецрейсы, определяется общее количество рейсов, общая масса перевезенных грузов, общая сумма стоимости рейсов;

• по вертолету, выполнившему максимальное количество рейсов, выводятся сведения о количестве выполненных рейсов и количестве заработанных экипажем денег;

• по экипажу, заработавшему максимальное количество денег, определяется средняя продолжительность рейса и средний заработок за один рейс.

Все действия оформить в виде отдельных функций.

14. Музыкальный салон. Постоянно работающий музыкальный салон продает компакт-диски с записями определенных исполнителей, поступающие от различных компаний-производителей. Для получения сведений о результатах работы музыкального салона создать бинарный файл, содержащий следующую информацию: дата операции, код операции (поступление или продажа), код компакта, количество экземпляров, цена одного компакта, название музыкального произведения, фамилия автора, фамилия исполнителя.

Написать программу, в результате выполнения которой:

• осуществляется обновление, добавление и удаление информации в файле;

• по всем компактам формируются и выводятся сведения о количестве проданных и оставшихся компактов одного вида по убыванию разницы;

• по указанному компакт-диску выдаются сведения об общем количестве и общей стоимости компактов, проданных за указанный период;

• по компакт-диску, купленному максимальное количество раз, выводятся все сведения о нем и о содержащихся на нем музыкальных произведениях;

• по наиболее популярному исполнителю выводятся сведения о количестве проданных компактов с исполняемыми им произведениями;

• по каждому автору определяются сведения о количестве проданных компактов с его записями и сумме полученных денег.

Все действия оформить в виде отдельных функций.

15. Охотничье хозяйство. Система охотничьего хозяйства включает сеть пунктов приема шкурок пушных зверей (соболь, куница, песец, росомаха и т. д.). Пункты обслуживают свободных охотников, принимая от них шкурки зверей по разной цене в зависимости от вида и сорта меха.

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

Написать программу, в результате выполнения которой:

• осуществляется обновление, добавление и удаление информации в файле;

• по фабрике, получившей пушнины на максимальную сумму, выводится перечень номеров пунктов и список охотников;

• по каждой меховой фабрике формируется общий перечень и количество полученной пушнины по видам и сортам;

• по каждому пункту определяются общее количество принятой пушнины, в том числе отдельно первого сорта, и сумма заработанных денег за указанный период;

• по пункту, на котором было принято максимальное количество шкурок низкого качества, выводятся все сведения о датах приема и фамилиях охотников;

• по самому молодому охотнику выдается перечень и количество сданной им пушнины по видам и сортам.

Все действия оформить в виде отдельных функций.

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

Написать программу, в результате выполнения которой:

• осуществляется обновление, добавление и удаление информации в файле;

• по звероферме, чей мех получил самую высокую цену, выводятся все сведения о ней;

• по каждой категории покупателей формируется общее количество купленных единиц меха, общая сумма уплаченных денег;

• по каждой звероферме рассчитывается прибыль от продажи пушнины;

• по всем зверофермам, которые продали шкурки по цене выше средней аукционной цены, выдаются все сведения о них;

• по звероферме, получившей максимальную прибыль, формируются все сведения о ней, количестве проданной пушнины и величине прибыли.

Все действия оформить в виде отдельных функций.

17. Цветочная оранжерея. Цветочная оранжерея выращивает различные виды цветов и продает на заказ составленные из них композиции. Каждая композиция имеет свое название и может состоять как из цветов одного вида, так и из цветов разного вида. Заказ обычно выполняется в течение нескольких дней. При выполнении заказа в течение суток дополнительно взимается плата в размере 25 %. При выполнении заказа в течение двух суток дополнительно взимается плата в размере 15 %.

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

Написать программу, в результате выполнения которой:

• осуществляется обновление, добавление и удаление информации в файле;

• по всем заказам рассчитывается сумма полученных денег за указанный период;

• по композиции, пользующейся максимальным спросом, выводятся все сведения о ней;

• по всем заказам формируются сведения о количестве выполненных заказов по срочности;

• по всем заказам определяются сведения о количестве использованных цветов по видам за указанный период;

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

Все действия оформить в виде отдельных функций.

18. Парфюмерный базар. Постоянно работающий парфюмерный базар характеризуется участием в ней оптовых фирм-поставщиков и оптовых фирм-покупателей, при этом все сделки заключаются через специальных маклеров, имеющих доступ ко всем товарам. Для получения сведений о результатах работы парфюмерного базара создать бинарный файл, содержащий следующую информацию: дата сделки, вид сделки (поставка или продажа), название товара, цена единицы товара, количество единиц, фамилия маклера, оптовая фирма (поставщик или покупатель).

Написать программу, в результате выполнения которой:

• осуществляется обновление, добавление и удаление информации в файле;

• по каждому названию товара формируются сведения о проданном количестве и общей стоимости за указанный период;

• по каждому названию товара выдается перечень фирмпокупателей с указанием сведений о количестве единиц и стоимости купленного ими товара;

• по товару, пользующемуся наибольшим спросом, рассчитываются данные о количестве и стоимости проданного товара по каждой фирмепокупателю;

• по маклеру, совершившему максимальное количество сделок, выводятся сведения о нем и фирмах-поставщиках;

• по каждой фирме-поставщику вывадается список маклеров с указанием сведений о количестве и стоимости проданного ими товара по каждому маклеру.

Все действия оформить в виде отдельных функций.

19. Туристическое бюро. Бюро путешествий осуществляет обслуживание экскурсионных маршрутов, используя для этой цели свои автобусы и экипажи, состоящие из трех человек, которые строго закреплены за своим автобусом. Экипаж, выполнивший заказ на обслуживание, получает 20 % от стоимости обслуживания. Стоимость билета договорная и зависит от длины туристической трассы и числа участников экскурсии.

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

Написать программу, в результате выполнения которой:

• осуществляется обновление, добавление и удаление информации в файле;

• по указанному автобусу выводится перечень выполненных рейсов с указанием названий маршрутов за указанный период;

• по указанному автобусу рассчитывается общее количество поездок, количество перевезенных пассажиров и полученных денег;

• по каждому экипажу определяется количество начисленных денег за указанный период;

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

Все действия оформить в виде отдельных функций.

20. Праздничная феерия. Магазин по продаже фруктов в предпраздничные дни формирует праздничные наборы из фруктов и орехов. Каждый набор имеет название. В наборы могут входить свежие фрукты, сухофрукты, засахаренные фрукты и орехи: миндальные, фундук, кешью и арахис. Заказ обычно выполняется в течение нескольких дней. При выполнении заказа в течение суток дополнительно взимается плата в размере 20 %. При выполнении заказа в течение двух суток дополнительно взимается плата в размере 10 %. Для получения сведений о результатах работы магазина создать бинарный файл, содержащий следующую информацию: дата принятия заказа, дата выполнения заказа, название набора, количество единиц, название ингредиента (входящего фрукта или орехов), вид, вес ингредиента, стоимость одного килограмма, заказчик;

Написать программу, в результате выполнения которой:

• осуществляется обновление, добавление и удаление информации в файле;

• по всем заказам определяется общее количество, общая стоимость и размер скидки за указанный период;

• по наборам, пользующимся максимальным спросом, выводятся все сведения о них;

• по всем заказам формируются и выводятся все сведения о количестве выполненных заказов по срочности;

• по всем заказам расситываются данные о количестве использованных ингредиентов по каждому виду;

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

Все действия оформить в виде отдельных функций.

21. Реклама на ТВ. Фирмы рекламируют свои товары на телевидении в различных передачах и на различных каналах. Известна цена минуты рекламного времени в той или иной передаче. Для получения сведений о результатах рекламирования товаров на телевидении создать бинарный файл, содержащий следующую информацию: дата, название передачи, время выхода в эфир, название фирмы, рекламируемый товар, длительность рекламы (мин), стоимость единицы рекламного времени.

Написать программу, в результате выполнения которой:

• осуществляется обновление, добавление и удаление информации в файле;

• по рекламируемым товарам определяется общее количество минут рекламного времени по каждой передаче;

• по каждой фирме выдается перечень рекламируемых товаров с указанием общего количества рекламного времени и затраченных денег;

• по каждой передаче формируется перечень фирм с указанием общего количества минут и общей стоимости рекламы по каждой фирме за указанный период;

• по наиболее рекламируемому товару выводится перечень передач с указанием суммарного времени и стоимости рекламы по каждой передаче;

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

Все действия оформить в виде отдельных функций.

22. Каменная сказка. Управление Ювелирторгом регулярно проводит ярмарки-продажи «Каменная сказка», где выставляются на продажу изделия ювелирных фирм. Изделия представляются по определенной цене, но в результате ярмарки они могут быть проданы по более высокой или низкой цене различным категориям покупателей. Для получения сведений о результатах работы ярмарки-продажи «Каменная сказка»

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

Написать программу, в результате выполнения которой:

• осуществляется обновление, добавление и удаление информации в файле;

• по каждой категории покупателей выводится общее количество купленных единиц, общая сумма уплаченных денег;

• по каждой фирме формируются сведения о выставленных и проданных изделиях;

• по всем фирмам, которые продали изделия по цене выше заявленной, выдаются все сведения о них;

• по фирме, чье изделие получило самую высокую цену, выводятся все сведения о ней и об изделии;

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

Все действия оформить в виде отдельных функций.

23. Морская полиция. Отряд морской полиции осуществляет патрулирование участков морской акватории. Ежедневно патруль, состоящий из двух человек, на катере должен посетить несколько участков, пользующихся особым вниманием браконьеров, и задержать их, если они будут заниматься незаконной добычей рыбы. Для получения сведений о результатах работы отряда морской полиции создать бинарный файл, содержащий следующую информацию: дата патрулирования, номер катера, фамилии патрульных, номер участка акватории, количество задержанных нарушителей.

Написать программу, в результате выполнения которой:

• осуществляется обновление, добавление и удаление информации в файле;

• по указанному катеру выводится перечень выполненных патрулирований за указанный период с указанием сведений об общем количестве задержанных браконьеров;

• по указанному участку акватории формируется и выводится перечень дат, номеров катеров, осуществлявших патрулирование, и количестве задержанных браконьеров;

• по участку, пользующемуся наибольшим вниманием браконьеров, выдаются сведения о количестве задержанных там нарушителей и общем количестве патрулирований за указанный период;

• по экипажу, задержавшему наибольшее количество нарушителей, выводятся сведения об экипаже и количестве выполненных патрулирований;

• по каждому катеру определяется количество выходов на дежурство с указанием количества проверенных участков.

Все действия оформить в виде отдельных функций.

Литература 1. Абрамов С.А., Гнездилова Г.Г., Капустина Е.Н., Селюн М.И. Задачи по программированию. – М.: Наука, 1988. – 224с.

2. Гуденко Д.А., Петроченко Д.В. Сборник задач по программированию.

– С-Пб.: Питер, 2003. – 188с.

3. Керниган Б., Ритчи Д. Язык программирования Си. – С-Пб.: Невский диалект, 2000. – 352с.

4. Котов В.М., Волков И.А., Лапо А.И. Информатика. Методы алгоритмизации. – Мн.: Народная Асвета, 2000. –302с.

5. Пильщиков В.Н. Сборник упражнений по языку Паскаль. – М.: Наука, 1989. –156с.

6. Прищепов М.А., Степанцов В.П., Севернева Е.В. Экзамен по информатике. Основы алгоритмизации и программирования. – Мн.: ТетраСистемс, 2001. – 192с.

7. Шилдт Г. Полный справочник по Си. – М.: Вильямс, 2002. – 704с.

1. 3. Арифметические операции над числами………………………… 1. 4. Форматированный ввод и вывод чисел………………………….. 1. 5. Логические операторы и операторы сравнения…………….…… 1. 6. Условные инструкции if и if-else…………………………….…… 1. 7. Инструкции цикла while и do-while………………………….…... 1. 8. Инструкция цикла for……………………………………………... 1. 9. Инструкция выбора switch………………………………………... 1.11. Стандартная библиотека математических функций…...……….. 1.12. Задачи для самостоятельного решения………..…….…………... 1.13. Дополнительные задачи…………..………………….…………... 1.14. Задачи для индивидуальной работы…………………………….. 2.3. Арифметические действия с указателями……………………….. 2.4. Динамическое распределение памяти……………………………. 2.5. Динамические массивы……………………….…………………… 2.6. Задачи для самостоятельного решения……………………….….. 2.7. Дополнительные задачи…………………….………………….….. 2.8. Задачи для индивидуальной работы……………………………… Лабораторная работа 3…………….………………………………………. 3.5. Передача аргументов через указатели…………………………... 3.6. Функции с переменным количеством параметров…………….... 3.8. Вызов стандартных функций сортировки и поиска…………….. 3.9. Задачи для самостоятельного решения………………………….. 3.10. Дополнительные задачи…………………………………………. 3.11. Задачи для индивидуальной работы……………………………. 4.1. Объявление и инициализация строк…………………………….. 4.3. Форматированный ввод-вывод…………………………………... 4.4. Форматирование строк………………………………………….... 4.5. Преобразование строк в числовые данные…………………….... 4.6. Стандартные функции для работы со строками……………….... 4.7. Функции для работы с памятью………………………………….. 4.8. Задачи для самостоятельного решения………………………….. 4.9. Дополнительные задачи…………………………………………... 4.10. Задачи для индивидуальной работы……………………………. 5.5. Передача структур в функции……………………………………. 5.6. Задачи для самостоятельного решения………………………….. 5.7. Дополнительные задачи………………………….……………….. 5.8. Задачи для индивидуальной работы…………….……………….. 6.2. Соединение и отсоединение потока от файла. Перенаправление потока…………………………………………….... 6.3. Работа с индикаторами ошибки, позиции и конца файла…….... 6.8. Служебные функции для работы с файлами……………………. 6.9. Задачи для самостоятельного решения………………………….. 6.11. Задачи для индивидуальной работы…………………………….



Похожие работы:

«М.К. САНИН       УПРАВЛЕНЧЕСКИЙ УЧЕТ Санкт-Петербург 2010 МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ, МЕХАНИКИ И ОПТИКИ М.К. Санин УПРАВЛЕНЧЕСКИЙ УЧЕТ Учебное пособие             Санкт-Петербург 2010 ББК 65.290я7 Санин М.К. Управленческий учет: Учебное пособие. — СПб : СПбГУ ИТМО, 2010. — 80 с. Материалы учебного пособия позволяют студентам получить необходимые знания об одной из важнейших операционных функций...»

«Федеральное агентство по образованию ГОУ ВПО Уральский государственный технический университет – УПИ имени первого Президента России Б.Н.Ельцина Нижнетагильский технологический институт (филиал) ОРГАНИЗАЦИЯ ПРОИЗВОДСТВА Методические рекомендации для решения задач по курсам Организация производства и менеджмент для студентов специальности 151001 - Технология машиностроения и Организация и планирование производства на предприятии для студентов специальности 190202 - Многоцелевые гусеничные и...»

«Негосударственное образовательное учреждение высшего профессионального образования Институт государственного администрирования (НОУ ВПО ИГА) Учебно-методический комплекс Бутенев В.И. Гражданское право Специальность 030501(65)-(021100) Юриспруденция Москва 2013 2 УДК Л Учебно-методический комплекс рассмотрен и одобрен на заседании кафедры юриспруденции 11 сентября 2013 г., протокол №1 Автор – Бутенев В.И., доцент Рецензент – Гаврилов Э.П., доктор юридических наук, профессор. Бутенев В.И. Л...»

«Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования Казанский государственный технологический университет В.И. Кимельблат, И.В. Волков ТЕХНИКА И ТЕХНОЛОГИЯ ПРОИЗВОДСТВА ПОЛИМЕРНЫХ ТРУБ И СОЕДИНИТЕЛЬНЫХ ДЕТАЛЕЙ УЧЕБНОЕ ПОСОБИЕ Казань КГТУ 2007 УДК 678.74.21 В.И. Кимельблат, И.В. Волков Техника и технология производства полимерных труб и соединительных деталей: учебное пособие/ сост.: В.И. Кимельблат, И.В. Волков. – Казань: Изд-во...»

«РОССИЙСКАЯ ФЕДЕРАЦИЯ МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ ТЮМЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ УТВЕРЖДАЮ: Проректор по учебной работе _ /Л.М. Волосникова/ _ 201г. ПРОИЗВОДСТВЕННАЯ ПРАКТИКА Учебно-методический комплекс для магистрантов программы Прикладная информатика в экономике очной формы обучения направления 230700.68 Прикладная информатика ПОДГОТОВЛЕНО К ИЗДАНИЮ: Автор работы _/ А.Г. Ивашко / _2011г. Рассмотрено...»

«Министерство образования и науки Российской Федерации Федеральное агентство по образованию _ САНКТ-ПЕТЕРБУРГСКАЯ ГОСУДАРСТВЕННАЯ ЛЕСОТЕХНИЧЕСКАЯ АКАДЕМИЯ ПРОДУКЦИЯ И ПРОЦЕССЫ ОБРАБОТКИ ДРЕВЕСИНЫ Методические указания по изучению дисциплины для студентов, обучающихся по направлению 250300 Санкт-Петербург 2007 Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com) Рассмотрены и рекомендованы к изданию методической комиссией факультета механической технологии...»

«ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ УЧРЕЖДЕНИЕ НАУКИ ТОМСКИЙ НАУЧНЫЙ ЦЕНТР СИБИРСКОГО ОТДЕЛЕНИЯ РОССИЙСКОЙ АКАДЕМИИ НАУК ( ТНЦ СО РАН ) Кафедра философии УТВЕРЖДАЮ Зав. кафедрой философии ТНЦ СО РАН В.А. Ладов 01 ноября 2013 г. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ОФОРМЛЕНИЕ РЕФЕРАТА ПО ДИСЦИПЛИНЕ ИСТОРИЯ И ФИЛОСОФИЯ НАУКИ Составители: Т.П. Минченко, Д.Л. Ситникова, В.А. Ладов Томск Оглавление 1 Общие требования 2 Структура реферата 3 Образец титульного листа 4 Образцы оглавлений 5 Оформление текстовой...»

«Московский гуманитарно- экономический институт Гуманитарный факультет Кафедра связей с общественностью и журналистики Рабочая программа учебной дисциплины Новостная журналистика по направлению подготовки 031300.62 - Журналистика профиль Теория и практики периодической печати квалификация (степень) бакалавр Москва 2012 Кандидат исторических наук, доцент Н.А. Костикова Рабочая программа учебной дисциплины Новостная журналистика Одобрено кафедрой связей с общественностью и журналистики. Протокол...»

«НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ФАКУЛЬТЕТ ЕСТЕСТВЕННЫХ НАУК Кафедра аналитической химии Научно-учебно-методический Центр Хроматография Курсовая работа Жидкостная хроматография антиоксидантов, производных 2,6-ди-трет-бутилфенола Работу выполнила: Метелёва Елизавета Сергеевна cтудентка 047 группы Научный руководитель: К.х.н. Кобрина Виолетта Николаевна Новосибирск - 2004 Содержание Литературный обзор. 1. Применение антиоксидантов 3 2. Определение антиоксидантов в различных объектах...»

«Уважаемые студенты и преподаватели факультета естествознания! Вашему вниманию предоставлена выставка научных и учебных изданий по химии, географии и экологии. Все книги вы можете получить на научном абонементе библиотеки, а также ознакомиться с ними в читальном зале. Учебные пособия по химии: Ступко Т. В. Химия неметаллов: методическое пособие / Т. В. Ступко, Е. А. Бочарова – Красноярск: КГПУ им. В. П. Астафьева, 2011. - 168 с. Содержится как теоретический, так и практический материал для...»

«ФОНДОВАЯ БИРЖА РТС А.Н. Балабушкин ОПЦИОНЫ и ФЬЮЧЕРСЫ Методическое пособие ПРЕДИСЛОВИЕ Данная книга содержит базовые сведения по фьючерсам и опционам, которые иллюстрируются конкретными примерами. Актуальность темы определяется наличием ликвидного и динамично растущего срочного рынка Фондовой биржи РТС (FORTS), на котором наряду с фьючерсами торгуются и опционы – инструменты, до этого практически отсутствовавшие на российском финансовом рынке. Однако содержание пособия не привязано...»

«СОДЕРЖАНИЕ РАЗДЕЛ 1. АНАЛИТИЧЕСКАЯ ЧАСТЬ 3 1. ОБЩИЕ СВЕДЕНИЯ 3 1.1. Организационно-правовое обеспечение образовательной 3 деятельности 1.2. Система управления университетом 6 1.3. Система управления качеством образования 13 2. ОБРАЗОВАТЕЛЬНАЯ ДЕЯТЕЛЬНОСТЬ 25 2.1. Структура подготовки обучающихся 25 2.1.1. Довузовская подготовка 25 2.1.2. Высшее образование 28 2.1.3. Среднее профессиональное образование 2.1.4. Подготовка кадров высшей квалификации 2.1.5. Профессиональная переподготовка и...»

«Московский Государственный Университет им. М.В. Ломоносова Химический факультет Кафедра неорганической химии Утверждено методической комиссией кафедры неорганической химии Розова М.Г., Шпанченко Р.В. Элементы структурной неорганической химии Учебно-методическое пособие для студентов 1-ого курса МОСКВА 2001 Настоящее пособие составлено в соответствии с программой Курс неорганической химии для Университетов (Мартыненко Л.И., Григорьев А.Н., под ред акад. Третьякова Ю.Д., М.: МГУ, 1998) и на...»

«ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ КАЗАНСКИЙ ГОСУДАРСТВЕННЫЙ ФИНАНСОВО-ЭКОНОМИЧЕСКИЙ ИНСТИТУТ Кафедра экономического анализа и аудита УЧЕБНЫЕ МАТЕРИАЛЫ ПО ДИСЦИПЛИНЕ ЭКОНОМИЧЕСКИЙ АНАЛИЗ В ОТРАСЛЯХ НАРОДНОГО ХОЗЯЙСТВА Для семинарских и практических занятий студентов, обучающихся по специальности 060500 Бухгалтерский учет, анализ и аудит Казань 2005 2 Обсуждена на заседании кафедры ( №2 от 21.10.05 ) Составители: Ушакова Т.В., к.э.н. старший преподаватель кафедры экономического анализа и...»

«Федеральное агентство по образованию Федеральное государственное образовательное учреждение Высшего профессионального образования Чувашский государственный университет им. И.Н. Ульянова Батыревский филиал Кафедра социально-экономических дисциплин БУХГАЛТЕРСКОЕ ДЕЛО Методические указания и контрольные задания к контрольной работе по учебной дисциплине для студентов заочной формы обучения Специальность 080109 “Бухгалтерский учет, анализ и аудит” Батырево 2008 1. ОБЩИЕ ПОЛОЖЕНИЯ 1.1. В...»

«Программа курса повышения квалификации Нормативная правовая база электроэнергетической отрасли 22 апреля – 26 июня 2013 г. Акад. Дистанционная часть курса часы 22 апреля – 12 мая 2013 г. Самостоятельное изучение учебных материалов 27 часов Учебное пособие Современная рыночная электроэнергетика РФ Учебно-методическое пособие Государственное ценовое регулирование рынков электрической энергии и мощности 13 – 20 мая 2013 г. 18 часов, Консультационные вебинары т.ч.: Организация и правовое...»

«СМОЛЕНСКИЙ ГУМАНИТАРНЫЙ УНИВЕРСИТЕТ Молчанова Н.В. ЮРИДИЧЕСКАЯ ПСИХОЛОГИЯ Учебно-методическое пособие (для студентов, обучающихся по специальности 021100 Юриспруденция - очная и заочная форма обучения) Смоленск, 2008 1 1. СОДЕРЖАНИЕ УЧЕБНОЙ ДИСЦИПЛИНЫ Раздел I. Предмет и система юридической психологии. Социальные нормы и формирование правосознания личности. Тема 1. ПРЕДМЕТ, МЕТОДЫ И СИСТЕМА ЮРИДИЧЕСКОЙ ПСИХОЛОГИИ. Предмет юридической психологии, ее место в системе психологической науки....»

«С.И.Дубинин М.В.Бондаренко А.Е.Тетеревёнков ГОТСКИЙ ЯЗЫК САМАРА 2006 ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ САМАРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ Кафедра немецкой филологии Кафедра английской филологии С.И. Дубинин, М.В. Бондаренко, А.Е. Тетеревёнков ГОТСКИЙ ЯЗЫК Фонология, морфология, синтаксис и лексика тексты и задания Издание второе, дополненное Рекомендовано Советом по филологии УМО по классическому...»

«МУНИЦИПАЛЬНОЕ БЮДЖЕТ НОЕ ОБЩЕОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ СРЕДНЯЯ ОБЩЕОБРАЗОВАТЕЛЬНАЯ ШКОЛ А №9 ЭКСПЕРИМЕНТАЛЬНАЯ РАБОТА в 2012 – 2015 г.г. МИЧУРИНСК 2012 Тема исследования: Формирование универсальных учебных действий младший школьников в рамках системы обучения с использованием коллективного способа обучения. Руководитель эксперимента: Липчанская Маргарита Викторовна, директор МБОУ СОШ №9 г. Мичуринска. Научный руководитель: Попова Т.И., зав. Кафедры педагогики, психологии и методик дошкольного...»

«Министерство образования и науки РФ Сочинский государственный университет туризма и курортного дела Филиал Сочинского государственного университета туризма и курортного дела в г. Нижний Новгород СБОРНИК МЕТОДИЧЕСКИХ МАТЕРИАЛОВ по учебным дисциплинам 5 курса для студентов заочной формы обучения специальность 080507 менеджмент организации Нижний Новгород 2010 ББК 65.290-2 С 23 Сборник методических материалов по учебным дисциплинам 5 курса для студентов заочной формы обучения; специальность 080507...»






 
2014 www.av.disus.ru - «Бесплатная электронная библиотека - Авторефераты, Диссертации, Монографии, Программы»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.