Посимвольный ввод-вывод для текстовых файлов 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Посимвольный ввод-вывод для текстовых файлов



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

Функция Действие функции
int fgetс(FILE *fp) Чтение и возврат символа из открытого файла
int getc(FILE *fp) Те же действия: символ из файла, переведенный в int
int fputс(int ch, FILE *fp) Записывает в файл код символа ch
int putс(int ch, FILE *fp) Те же действия: записывает в файл символ, переведенный в unsigned char

 

Построчный ввод-вывод для текстовых файлов

В операциях построчного ввода-вывода за один прием происходит перенос из файла (или в файл) строк символов.

Функция Действие функции
char *gets (char *S) Читает байты из файла stdin и записывает их в строку S до тех пор, пока не встретит символ '\n', который заменяется на нуль–терминатор; возвращает s или NULL
char *fgets (char *S, int m, FILE *fp) Извлекает байты из файла fp, и записывает их в строку S до тех пор, пока не встретит символ '\n', или пока не будет считано m байтов.
int fputs (char *S, FILE *fp) Записывает в файл байты из строки S до тех пор, пока не встретится нуль-терминатор; возвращает неотрицательное целое или EOF в случае ошибки
int puts (char *S) Записывает в файл stdout байты из строки S до тех пор, пока не встретится нуль-терминатор, который в файле заменяется на символ '\n'.

Замечание: В отличие от puts(), функция fputs() не добавляет в результирующую строку символ перехода ‘\n’ на новую строку. Поэтому после fputs() следует вызвать функцию fputс() с символом новой строки в качестве аргумента: fputc(‘\n’,fp).

Блоковый ввод-вывод

В операциях блокового ввода-вывода работа происходит с целыми блоками информации. Функции блокового (прямого) ввода-вывода удобны для работы с бинарными файлами.

Функции Действие функции
int fread (void *ptv, int size, int n, FILE *fp) Считывает n блоков по size байт каждый из файла fp, в область памяти, на которую указывает указатель ptv (необходимо заранее отвести память под считываемый блок); возвращает количество считанных объектов.
int fwrite (void *ptv, int size, int n, FILE *fp) Записывае n блоков по size байт каждый из области памяти, на которую указывает ptv, в открытый файл fp.

 

Для работы с текстовыми файлами обычно используют функции fprintf(), fscanf(), где в качестве первого аргумента задана переменная типа FILE*.

Например:

fprintf(f1,”%d + %d = %5d”,a1,a2,a1+a2); /* записать в файл 2 переменные и их сумму */

fscanf(f1,”%f%f”,&a1,&a2); /* прочитать из файла 2 переменные */

 

Пример работы с файлами.

Листинг 14. Сформировать целочисленный бинарный файл, записать в конец новые данные, сохранить и вывести на печать:

/*___________________________*/

#include <stdio.h>

#include <conio.h>

void main(void)

{ int a=1, b=20, c, d;

FILE *in, *out, *add;

clrscr();

/*........ ЗАПИСЬ ЧИСЕЛ В ФАЙЛ......*/

in=fopen("С:\\lr7.dat","wb");

fprintf(in,"%d %d \n",a,b); /* пробел в спецификации формата обязателен! */

fclose(in);

puts("ЧИСЛА a, b ЗАПИСАНЫ В ФАЙЛ");

puts("Press any key...");

getch();

/*.........ЧТЕНИЕ ЧИСЕЛ ИЗ ФАЙЛА........*/

out=fopen("C:\\lr9.dat","rb");

if (!out) {

puts(“Ошибка открытия файла! ”);

getch(); exit(1);

}

fscanf(out,"%d%d", &a, &b);

printf("\n a=%d, b=%d ", a, b);

fclose(out);

puts("\n ЧИСЛА ПРОЧИТАНЫ ИЗ ФАЙЛА");

puts("Press any key...");

getch();

/*......... ДОПОЛНЕНИЕ ФАЙЛА..........*/

add=fopen("lr9.dat","a");

puts("ВВЕДИТЕ ЧИСЛА ЦЕЛОГО ТИПА c и d");

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

fprintf(add,"%d %d \n",c,d);

printf("\n c=%d d=%d \n ",c,d);

fclose(add);

puts("ЧИСЛА c и d ДОПИСАНЫ В ФАЙЛ");

puts("Press any key...");

getch();

/*......... ЧТЕНИЕ ЧИСЕЛ ИЗ ФАЙЛА........*/

out=fopen("lr9.dat","rb");

fscanf(out,"%d%d%d%d", &a, &b, &c, &d);

printf("\n a=%d b=%d ", a, b);

printf("\n c=%d d=%d ", c, d);

fclose(out);

puts("\n РАСШИРЕННЫЙ ФАЙЛ!");

puts("Press any key...");

getch();

}

Листинг 15. Сформировать бинарный файл, содержащий сведения: ФИО, оценки, средний балл. Вывести содержимое на печать.

/*_________________________________*/

#include <stdio.h>

#include <conio.h>

#include <string.h>

#include <stdlib.h>

struct Sved{

char fio[20];

int ots[3];

float sb;

} zap;

FILE *Fzap;

void main(void)

{ int i, j, size=sizeof(Sved),N; float s;

clrscr();

Fzap=fopen(“с:\\myf.dat”,”wb”); /* создать файл для записи в двоичном режиме */

puts(“Vvedi kol-vo zapisei “);

scanf(“%d”,&N);

for (j=0; j<N; j++)

{ puts(“ vvedi FIO “);

scanf(“%s”,zap.fio);

puts(“ vvedi 3 otsenki”);

for (s=0,i=0; i<3; i++)

{ scanf(“%d”,&zap.ots[i]); s=s+zap.ots[i]; }

zap.sb=s/3.0;

fwrite(&zap, size, 1, Fzap);

}

fclose(Fzap);

Fzap=fopen(с:\\myf.dat”,”rb”); /* чтение информации из бинарного файла */

if (!Fzap)

{ puts(“can’t open it! ”); exit(1); }

for (j=0; j<N; j++)

{ fread(&zap, size, 1, Fzap);

printf(“%20s %2d %2d %2d %5.2f \n”,zap.fio, zap.ots[0],zap.ots[1],zap.ots[2],zap.sb);

}

fclose(Fzap);

getch();

}

 

Задача7. Варианты

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

7.1. Список товаров, имеющихся на складе, включает

□ наименование товара;

□ количество единиц товара;

□ цену единицы товара;

□ дату поступления товара на склад.

Написать программу, выводящую в алфавитном порядке список товаров, хранящихся более одного месяца, стоимость которых превышает 10000 руб. Если таких нет, вывести соответствующее сообщение

 

7.2. В справочной автовокзала хранится расписание движения автобусов. Для каждого рейса указаны

□ номер рейса;

□ тип автобуса;

□ пункт назначения;

□ время отправления;

□ время прибытия на конечный пункт

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

7.3. На междугородней АТС информация о разговорах содержит

□ дату разговора;

□ код и название города;

□ время разговора;

□ тариф;

□ номер телефона в этом городе

□ номер телефона абонента;

Вывести по каждому городу общее время разговора с ним и общую сумму

 

7.4. Для книг, хранящихся в библиотеке, задаются:

□ регистрационный номер книги;

□ автор;

□ название;

□ год издания;

□ издательство;

□ количество страниц

Вывести список книг с фамилиями авторов в алфавитном порядке, изданных после заданного года.

 

7.5. Информация о сотрудниках предприятия содержит:

□ Ф.И.О;

□ номер отдела;

□ должность;

□ дату начала работы;

Вывести список сотрудников по отделам в порядке убывания стажа.

 

7.6. Создать файл, содержащий сведения о месячной заработной плате сотрудников отдела. Каждая запись содержит поля

□ фамилия сотрудника;

□ наименование отдела;

□ размер заработной платы за месяц;

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

 

7.7. Создать файл, содержащий сведения о телефонах абонентов. Каждая запись содержит поля

□ фамилия абонентов;

□ год установки телефона;

□ номер телефона;

На печать вывести информацию следующего вида:

□ по вводимой с клавиатуры фамилии абонента выдается номер телефона;

□ определяется количество установленных телефонов с года, значение которого вводится с клавиатуры).

 

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

□ номер группы,

□ фамилия студента,

□ оценки по трем экзаменам и трем зачетам (зачет – незачет).

На печать вывести:

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

□ средний балл, полученный каждым студентом группы Х (вводится с клавиатуры), и всей группой в целом.

 

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

□ артикул (начинается с буквы Д для женской обуви, М для мужской, П для детской);

□ наименование;

□ количество;

□ стоимость одной пары

На печать вывести информацию:

□ о наличии и стоимости обуви артикула Х (вводится с клавиатуры);

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

 

7.10. Создать файл, содержащий сведения об ассортименте игрушек в магазине. Структура записи:

□ название;

□ цена;

□ количество;

□ возрастные границы (от 0 до 2, от 2 до 5, от 5 до 7 и т.д.);

На печать вывести информацию:

□ название игрушек для детей от 1 года до 3 лет;

□ стоимость самой дорогой игрушки и ее название.

 

7.11. Создать файл, содержащий данные о сканерах. Структура записи:

□ модель;

□ цена;

□ горизонтальный размер области сканирования;

□ вертикальный размер области сканирования;

□ оптическое разрешение

На печать вывести информацию:

□ модели сканеров с ценой не выше введенной с клавиатуры;

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

 

 

7.12. Создать файл, содержащий данные о ноутбуках. Структура записи:

□ модель;

□ цена;

□ размер диагонали дисплея;

□ частота процессора;

□ объем диска

На печать вывести информацию:

□ данные о ноутбуках с частотой процессора выше 120 МГц, упорядоченные по убыванию цены;

□ данные о ноутбуках, объем HDD которых меньше 1 Гбайт, упорядоченных по алфавиту

 

7.13. Составить программу, которая записывает в файл S сначала компоненты файла F, затем компоненты файла G с сохранением порядка.

 

7.14. Написать программу, которая перепишет с сохранением порядка следования компоненты файла F в файл G, а компоненты файла G в файл F (использовать вспомогательный файл).

 

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

 

7.16. Написать программу, которая объединит два файла типа int в один файл: расположить сначала все положительные элементы, затем - отрицательные.

 

7.17. Задан текстовый файл С, состоящий из произвольной последовательности буквенных символов. Упорядочить символы в алфавитном порядке, при этом все повторяющиеся символы должны быть удалены, и переписать новый текст в файл D.

 

7.18. Переписать компоненты символьного файла FS в файл GS, заменив при этом каждый восклицательный знак на точку, а каждое двоеточие – тремя точками.

 

7.19. Компоненты файла F – натуральные числа. Переписать из него в файл G все удвоенные нечетные числа.

 

7.20. Составить программу записи из файла F в файл G всех четных чисел, а файл H – всех нечетных чисел.


Сортировка данных

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

Все множество алгоритмов внутренней сортировки можно разделить на две группы: прямые методы сортировки и улучшенные методы сортировки

Прямые сортировки

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

void swap(int *x, int *y)

{ int t= *x;

*x=*y;

*y=t; }

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

  • Пузырьковая сортировка (сортировка простым обменом)

Алгоритм метода состоит в следующем:

Массив элементов просматривается снизу вверх, т.е. от конца к началу, и пары рядом стоящих элементов обмениваются в том случае, если элемент «снизу» меньше, чем верхний. В результате такого обмена первым (наверху) оказывается самый «легкий» (минимальный) элемент всего массива. Затем операция повторяется для оставшихся неотсортированными (n-1) элементов. Итак, при простом обмене неупорядоченных соседних элементов за один просмотр всего списка самые легкие элементы массива «всплывают», а самые «тяжелые» - оказываются в конце.

Например:

Шаг Элементы массива
             
               
               
               
               
               
               

Листинг 16: Функция bubble() сортирует входной массив методом простого обмена.

/*___________________________________*/

void * bubble(int a[], int n) /* сортировка пузырьковым методом */{int i,j; for (i=0; i<n; i++) for(j=0; j<n-i-1; j++) if (a[j] > a[j+1]) swap(&a[j], &a[j+1]); }

Пузырьковая сортировка выполняется при количестве сравнений Q=(n2-n)/2, где n- количество сортируемых значений, и не требует дополнительной памяти. Но алгоритм неэффективен при работе с большими массивами. К тому же число проходов (n-1) может оказаться избыточным (массив может оказаться упорядоченным за меньшее число шагов), поэтому при практической реализации используют различные модифицированные методы сортировки «пузырьком».

§ Сортировка методом выбора

Алгоритм метода состоит в следующем:

Находится наименьший элемент исходного массива и помещается на место первого, а первый элемент - на место минимального;

Просматривается подмассив от второго элемента до конца, выбирается минимальный элемент и помещается на второе место, а второй элемент – на место минимального.

Процесс повторяется с оставшимися (n-2), (n-3), …элементами, пока в конце списка не окажется самый большой элемент.

Листинг 17. Функция select() сортирует массив методом выбора.

/*________________________________*/ void select(int s[], int n) /* сортировка методом выбора */{ int i,j,k; for (i=0; i<n-1; i++) { for (k=i, j=i+1; j<n; j++) if (s[j]<s[k]) k=j; swap(&s[k], &s[i]); }} Количество сравнений элементов в сортировке выбором не зависит от их начального порядка; количество перестановок минимально в случае изначально упорядоченных элементов и максимально, если изначально они отсортированы в обратном порядке.
  • Сортировка вставкой

Сущность метода сортировки вставками (или метода прямого включения) состоит в следующем: элементы их неотсортированной части выбираются и вставляются в отсортированную часть так, чтобы не нарушить в ней упорядоченность элементов. На первом шаге выполняется сортировка первых двух элементов массива. Далее к ним добавляется третий элемент, который займет позицию в соответствии со своим значением. Затем добавляется четвертый элемент и т.д. Алгоритм, реализующий данный метод, будет состоять из (n-1) прохода, где n – количество элементов массива.

Листинг 18. Функция insert() реализует сортировку вставкой.

void insert(int s[], int n) /* сортировка методом вставки */{ int i,j; for (i=1; i<=n-1; i++) {j=i; while (s[j] < s[j-1] && j>=1) { swap(&s[j], &s[j-1]); j--; } }}

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

Улучшенные сортировки

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

  • Cортировка методом Шелла.

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

Расстояния между сравниваемыми элементами могут выбираться по-разному. На практике хорошо себя зарекомендовала последовательность расстояний между сортируемыми элементами 9, 5, 3, 2, 1 или 31, 15, 7, 3, 1. Обязательным условием является то, что последний шаг должен равняться 1.

Листинг 19. Функция ShellSort() реализует сортировку методом Шелла

void ShellSort(int s[], int n) /* сортировка методом Шелла */{ int i, j, k, temp; int gap; /* текущее расстояние между сравниваемыми элементами */ int d[] = {9, 5, 3, 2, 1}; for (k=0; k<5; k++) { gap=d[k]; for (i=gap; i<n; i++) { temp=a[i]; for (j=i-gap; temp<a[j] && j>=0; j -=gap) a[j+gap]=a[j]; a[j+gap]=temp; } }}Число операций сравнения в методом Шелла пропорционально n log (n), а время выполнения сортировки пропорционально n1.2, что значительно меньше зависимости n2, характерном для прямых сортировок.
  • Быстрая сортировка

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

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

37, 2, 6, 4, 89, 8, 10, 12, 68, 45 /* движемся справа и находим элемент < чем 37 */ 12, 2, 6, 4, 89, 8, 10, 37, 68, 45 /* движемся слева начиная с элемента сразу за */ /* подчеркнутым и находим элемент > чем 37 */12, 2, 6, 4, 37, 8, 10, 89, 68, 45 /* движемся справа начиная с элемента перед 89 */ /* и находим элемент < чем 37 */12, 2, 6, 4, 10, 8, 37, 89, 68, 45и т.д.

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

 

Задача8. Варианты

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

8.1. Дана матрица целых чисел X[5,5]. Упорядочить элементы в строках по возрастанию (обменом).

8.2. Дана матрица целых чисел X[5,5]. Упорядочить элементы в строках по убыванию (обменом).

8.3. Дана матрица целых чисел X[5,5]. Упорядочить строки по возрастанию элементов первого столбца (выбором).

8.4. Дана матрица целых чисел X[5,5]. Упорядочить строки по убыванию элементов первого столбца (обменом).

8.5. Дана матрица целых чисел X[5,5]. Упорядочить элементы столбцов по возрастанию (обменом).

8.6. Дана матрица целых чисел X[5,5]. Упорядочить элементы столбцов по убыванию (выбором).

8.7. Дана матрица целых чисел X[5,5]. Упорядочить элементы строк по убыванию, а сами строки по возрастанию элементов 1-го столбца (выбором).

8.8. Дана матрица целых чисел X[5,5]. Упорядочить элементы строк по возрастанию, а сами строки по возрастанию суммы элементов строк (обменом).

8.9. Дана матрица целых чисел X[5,5]. Упорядочить элементы строк по неубыванию, а сами строки по убыванию максимальных элементов строк (использовать сортировку вставками).

8.10. Дана матрица целых чисел X[5,5]. Упорядочить элементы строк по невозрастанию, а сами строки по возрастанию элементов 5 столбца (использовать сортировку вставками).

8.11. Дана матрица целых чисел X[5,5]. Упорядочить элементы строк по неубыванию, а сами строки по убыванию минимальных элементов строк (использовать пузырьковую сортировку).

8.12. Дана матрица целых чисел X[5,5]. Упорядочить элементы строк по невозрастанию, а сами строки по возрастанию произведения элементов строк (использовать пузырьковую сортировку).

8.13. Дана матрица целых чисел X[5,5]. Упорядочить элементы столбцов по возрастанию, а сами столбцы по возрастанию произведения четных элементов столбцов. Использовать пузырьковую сортировку.

8.14. Дана матрица целых чисел X[5,5]. Упорядочить элементы строк по убыванию, а сами строки по возрастанию характеристик строк (характеристикой строки матрицы называется сумма ее положительных четных элементов). Использовать сортировку обменом.

8.15. Дана матрица целых чисел X[5,5]. Упорядочить элементы строк с четными номерами по убыванию, а элементы строк с нечетными номерами по возрастанию. Использовать пузырьковую сортировку.

8.16. Дана матрица целых чисел X[5,5]. Расположить элементы побочной диагонали по убыванию. Использовать пузырьковую сортировку

8.17. Дан массив целых чисел X[10]. Отсортировать элементы массива на четных позициях по возрастанию. Использовать любой из методов сортировки

8.18. Дан массив целых чисел X[10]. Отсортировать элементы массива на нечетных позициях по убыванию. Использовать любой из методов сортировки.

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

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


3. Контрольные работы и требования по их выполнению

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

Таблица 3.1.

Предпослед цифра № зач. книжки Последняя цифра номера зачетной книжки
                   
  2.3, 3.5, 4.7, 5.9, 6.11, 7.13, 8.15 2.4, 3.6, 4.8, 5.10, 6.12, 7.14, 8.16 2.5, 3.7, 4.9, 5.11, 6.13, 7.15, 8.17 2.6, 3.8, 4.10, 5.12, 6.14, 7.16, 8.18 2.7, 3.9, 4.11, 5.13, 6.15, 7.17, 8.19 2.8, 3.10, 4.12, 5.14, 6.16, 7.18, 8.20 2.9, 3.11, 4.13, 5.15, 6.17, 7.19, 8.1 2.10, 3.12, 4.14, 5.16, 6.18, 7.20, 8.2 2.11, 3.13, 4.15, 5.17, 6.9, 7.1, 8.3 2.12, 3.14, 4.16, 5.18, 6.10, 7.2, 8.4
  2.11, 3.20, 4.8, 5.1, 6.4, 7.7, 8.9 2.12, 3.19, 4.9, 5.2, 6.5, 7.8, 8.10 2.13, 3.18, 4.10, 5.3, 6.6, 7.9, 8.11 2.14, 3.17, 4.11, 5.4, 6.7, 7.10, 8.12 2.15, 3.16, 4.12, 5.5, 6.8, 7.11, 8.13 2.16, 3.15, 4.13, 5.6, 6.9, 7.12, 8.14 2.17, 3.14, 4.14, 5.7, 6.10, 7.13, 8.15 2.18, 3.13, 4.15, 5.8, 6.11, 7.14, 8.16 2.19, 3.12, 4.16, 5.9, 6.12, 7.15, 8.17 2.20, 3.11, 4.17, 5.10, 6.13, 7.16, 8.18
  2.13, 3.2, 4.5, 5.9, 6.8, 7.9, 8.2 2.14, 3.3, 4.6, 5.10, 6.9, 7.10, 8.3 2.15, 3.4, 4.7, 5.11, 6.10, 7.11, 8.4 2.16, 3.5, 4.8, 5.12, 6.11, 7.12, 8.5 2.17, 3.6, 4.9, 5.13, 6.12, 7.13, 8.6 2.1, 3.7, 4.10, 5.14, 6.13, 7.14, 8.7 2.2, 3.8, 4.11, 5.15, 6.14, 7.15, 8.8 2.3, 3.9, 4.12, 5.16, 6.15, 7.16, 8.9 2.4, 3.20, 4.13, 5.17, 6.16, 7.17, 8.19 2.5, 3.2, 4.17, 5.19, 6.1, 7.7, 8.9
  2.6, 3.3, 4.18, 5.20, 6.2, 7.8, 8.10 2.7, 3.4, 4.19, 5.1, 6.3, 7.9, 8.11 2.8, 3.5, 4.20, 5.2, 6.4, 7.10, 8.12 2.9, 3.6, 4.1, 5.3, 6.14, 7.11, 8.13 2.10, 3.7, 4.2, 5.4, 6.15, 7.12, 8.14 2.11, 3.8, 4.3, 5.5, 6.16, 7.13, 8.15 2.12, 3.9, 4.4, 5.6, 6.17, 7.14, 8.16 2.13, 3.10, 4.5, 5.7, 6.18, 7.15, 8.17 2.14, 3.11, 4.6, 5.8, 6.19, 7.16, 8.18 2.15, 3.12, 4.7, 5.9, 6.20, 7.17, 8.19
  2.10, 3.8, 4.9, 5.11, 6.13, 7.18, 8.9 2.16, 3.13, 4.8, 5.10, 6.1, 7.18, 8.3 2.17, 3.14, 4.9, 5.11, 6.2, 7.19, 8.4 2.18, 3.15, 4.10, 5.12, 6.3, 7.20, 8.5 2.19, 3.16, 4.11, 5.13, 6.4, 7.1, 8.6 2.9, 3.11, 4.19, 5.6, 6.9, 7.5, 8.1 2.20, 3.17, 4.12, 5.14, 6.5, 7.2, 8.7 2.3, 3.18, 4.13, 5.15, 6.6, 7.3, 8.8 2.13, 3.8, 4.11, 5.9, 6.16, 7.1, 8.2 2.4, 3.19, 4.14, 5.16, 6.7, 7.4, 8.9
  2.5, 3.20, 4.15, 5.17, 6.8, 7.5, 8.8 2.6, 3.3, 4.16, 5.18, 6.9, 7.6, 8.9 2.7, 3.4, 4.17, 5.19, 6.10, 7.7, 8.4 2.8, 3.7, 4.19, 5.1, 6.11, 7.8, 8.4 2.9, 3.8, 4.20, 5.2, 6.12, 7.9, 8.5 2.10, 3.9, 4.8, 5.3, 6.3, 7.10, 8.15 2.16, 3.10, 4.9, 5.13, 6.11, 7.13, 8.5 2.17, 3.11, 4.10, 5.14, 6.12, 7.14, 8.6 2.18, 3.12, 4.11, 5.15, 6.13, 7.15, 8.7 2.19, 3.13, 4.12, 5.16, 6.14, 7.5, 8.2
  2.20, 3.14, 4.13, 5.17, 6.4, 7.6, 8.3 2.2, 3.15, 4.14, 5.18, 6.5, 7.7, 8.4 2.3, 3.16, 4.15, 5.19, 6.6, 7.8, 8.5 2.4, 3.17, 4.16, 5.1, 6.7, 7.9, 8.6 2.5, 3.18, 4.17, 5.2, 6.8, 7.10, 8.7 2.6, 3.19, 4.18, 5.3, 6.9, 7.11, 8.8 2.7, 3.20, 4.4, 5.4, 6.10, 7.12, 8.9 2.8, 3.2, 4.5, 5.5, 6.11, 7.13, 8.10 2.9, 3.3, 4.6, 5.6, 6.12, 7.14, 8.11 2.10, 3.4, 4.7, 5.7, 6.13, 7.15, 8.12
  2.11, 3.5, 4.8, 5.8, 6.14, 7.16, 8.13 2.12, 3.6, 4.9, 5.9, 6.15, 7.17, 8.14 2.13, 3.7, 4.10, 5.11, 6.1, 7.7, 8.11 2.14, 3.8, 4.11, 5.12, 6.2, 7.8, 8.12 2.15, 3.9, 4.12, 5.13, 6.3, 7.9, 8.13 2.16, 3.10, 4.13, 5.14, 6.4, 7.4, 8.14 2.17, 3.11, 4.14, 5.15, 6.5, 7.5, 8.15 2.18, 3.12, 4.15, 5.16, 6.17, 7.5, 8.5 2.19, 3.13, 4.16, 5.17, 6.1, 7.6, 8.4 2.9, 3.17, 4.18, 5.19, 6.2, 7.7,8.4
  2.10, 3.18, 4.19, 5.1, 6.3, 7.8,8.9 2.11, 3.19, 4.1, 5.2, 6.4, 7.9, 8.10 2.12, 3.20, 4.2, 5.3, 6.5, 7.10, 8.11 2.13, 3.2, 4.5, 5.6, 6.6, 7.11, 8.13 2.14, 3.3, 4.6, 5.7, 6.7, 7.12, 8.14 2.15, 3.4, 4.7, 5.8, 6.8, 7.13, 8.15 2.16, 3.5, 4.8, 5.9, 6.9, 7.14, 8.16 2.18, 3.6, 4.9, 5.10, 6.11, 7.15, 8.6 2.19, 3.7, 4.10, 5.11, 6.11, 7.16, 8.7 2.9, 3.17, 4.4, 5.7, 6.11, 7.6, 8.9

Контрольную работу следует оформлять на листах формата A4. На обложке должны быть указаны: название дисциплины, номер группы, фамилия и инициалы студента. В отчет по выполнению контрольной работы входят: блок-схема алгоритма по каждой задаче, тексты составленных программ на языке Си. Тексты программ должны быть приведены в виде распечаток, остальная часть работы может быть выполнена от руки. Кроме того, файлы с текстами составленных программ и загрузочные модули (exe‑файлы) этих программ должны быть представлены на дискете). Элементы схем алгоритмов и их назначение приведены в приложении А.


ЛИТЕРАТУРА

Основная литература

1. Керниган Б.В., Ритчи Ф.М. Язык программирования С. 2-е изд., – М.: Финансы и статистика, 1992

2. Дейтел П., Дейтел Х. Как программировать на С. М.: Бином, 2002.

3. Прата С. Язык программирования С. Лекции и упражнения. Учебник – СПб.: 2002

4. Юлин В.А., Булатова И.Р. Приглашение к Си. – Мн.: Высш.шк., 1990

5. Демидович Е.М. Основы алгоритмизации и программирования. Язык Си. – Мн.: Бестпринт, 2003

6. Подбельский В.В. Язык С++, - М.: ФиС, 2001

 

Дополнительная литература

1. Керниган Б., Пайк Р. Практика программирования. СПб.: «Невский диалект», 2001

2. Касаткин А.И. Профессиональное программирование на языке Си: Справ. Пособие. – Мн.:Выш.шк., 1990.

3. Шмидский Я.К. Программирование на языке С/C++ – М.: Диалектика, 2003

4. Павловская Т.А., Щупак Ю.А. Структурное программирование: Практикум – СПб: Питер, 2003


Приложение А.

a) б) в)
  г)   д)   е)
ж) з) и)
к) л)       м)    

 

Рис. Элементы блок-схем алгоритмов.

Приведенные графические символы обозначают:

а) данные — ввод данных с любого устройства или их вывод на любое устройство;

б) ручной ввод — ввод данных с клавиатуры;

в) данные — вывод данных на печать;

г) дисплей — вывод данных на экран;

д) диск — чтение данных с диска и запись данных на диск;

е) процесс — выполнение операций; расчет;

ж) предопределенный процесс — использование отдельных подпрограмм;

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

и) решение — выбор направления выполнения алгоритма (соответствует условному оператору);

к) терминатор — начало/конец алгоритма либо программы;

л) соединитель — указание связи между отдельными частями;

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



Поделиться:


Последнее изменение этой страницы: 2016-12-17; просмотров: 332; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.16.83.150 (0.149 с.)