![](/user_photo/2706_HbeT2.jpg)
- •Т.Э. Шульга программирование.
- •Глава 1. Основы программирования на языке высокого уровня 6
- •Глава 2. Динамические структуры данных 40
- •Глава 3. Основы объектно-ориентированного программирования 53
- •Введение
- •Глава 1. Основы программирования на языке высокого уровня
- •Void main()
- •Задания
- •1.2. Переменные. Основные типы данных
- •Ввод – вывод значений переменных
- •Форматирование данных при обменах с потоками ввода-вывода
- •Void main()
- •Void main()
- •Преобразование типов
- •Задание 1. Описание переменных и преобразование типов
- •Задание 2. Форматирование вывода
- •1.3. Основные операции
- •Void main ()
- •Задания
- •1.4. Конструкции выбора
- •Void main()
- •Void main()
- •Void main()
- •Задание 1. Обработка введенного символа
- •Задание 2. Вычисление значения функции
- •Задание 3. Применение разветвляющихся алгоритмов при решении простейших задач
- •Задание 4. Mультиветвление
- •1.5. Конструкции цикла и передачи управления
- •Void main()
- •Задание 1. Детерминированные циклы. Простейшие задачи
- •Void main()
- •Задание 2. Итерационные циклы. Простейшие задачи
- •Void main()
- •Int last;
- •Задание 3. Одномерные массивы
- •Void main ()
- •Int a[100],n,max,imax;
- •Задание 4. Вложенные циклы
- •Void main ()
- •Задание 5. Двумерные массивы
- •Void main ()
- •Задание 6. Посимвольная обработка строк
- •Void main()
- •Задание 7. Сортировка массива
- •Void main ()
- •1.6.Функции
- •Int oct (int a)// определение функции
- •Void main()
- •Void main()
- •Int strcmp(const char *str1, const char* str2);
- •Int fclose (file * stream);
- •Int feof(file *stream);
- •Int fseek ( file* stream, long offset, int origin);
- •Задание 1. Определение и вызов функций
- •Задание 2. Рекурсивные функции
- •Задание 3. Использование библиотечных функций string.H
- •Void main()
- •Задание 4. Использование библиотечных функций stdio.H
- •Void main ()
- •Глава 2. Динамические структуры данных
- •Int year;
- •Int children;
- •Задание 1. Структуры
- •Int year;
- •Int month;
- •Int visokos(int year)
- •Vivod (date d)
- •Int day_number(date d)
- •Vivod(mas[I]);
- •Vivod (min(mas,n));
- •Задание 2. Динамический список
- •Int mark;
- •Void vvod ()
- •Void vivod()
- •If (begin)
- •Void vivod_f()
- •If (begin)
- •Void add()
- •Void udol () //
- •If (begin)
- •Void del()
- •Void main ()
- •Задание 3. Использование стеков и очередей
- •Глава 3. Основы объектно-ориентированного программирования
- •Void empty();
- •If (len) delete []s;
- •Void cStr::empty()
- •Задание 1 . Описание простейшего класса
- •Задание 2 . Класс string
- •Void main()
- •Void main ()
- •Задание 3. Класс fstream
- •Задание 4. Наследование
- •Список литературы
Int feof(file *stream);
Если индикатор позиции файла, связанного с потоком stream, расположен в конце файла возвращается ненулевое значение, в противном случае - нуль.
Для изменения индикатора позиции файла используют функцию
Int fseek ( file* stream, long offset, int origin);
Функция устанавливает индикатор позиции файла, связанного с потоком stream, в соответствии со значением смещения offset (количество байтов) и исходного положения origin. Параметр origin может принимать одно их следующих значений: 0 - начало файла, 1 – текущая позиция, 2 – конец файла. При успешном выполнении функция возвращает нулевое значение, при возникновении сбоя – ненулевое. Функция очищает признак конца файла. Вообще говоря функцию fseek() следует использовать только при работе с двоичными файлами. При использовании же с текстовыми файлами параметр origin должен иметь значение 0, а параметр offset – значение, полученное в результате вызова функции
long ftell (FILE* stream);
которая возвращает текущее значение индикатора позиции файла.
Приведем фрагмент программы, считывающей из файлового потока fp каждый третий символ
char a;
while ((a=fgetc(fp))!=EOF && fseek(fp,2,1)==0)
cout<<a<<" ";
Если необходимо считать каждое третье число из файла (предполагается, что числа разделены пробелами) программа примет следующий вид:
int a;
while (fscanf(fp, "%d%*d%*d ", &a)!=EOF && fseek(fp,ftell(fp),0)==0)
cout<<a<<" ";
Каждому студенту рекомендуется выполнить хотя бы одно из упражнений 1-12 заданий 1-4.
Задание 1. Определение и вызов функций
-
Определить функцию, проверяющую, является ли целое число совершенным. Совершенное число равно сумме всех своих делителей, включая единицу и не включая себя. Например 6=1+2+3 – совершенное число, 81+2+2+2 - несовершенное. Выяснить, сколько совершенных чисел находится в диапазоне [n..m] (n<m), вывести их на экран.
-
Определить функции, переводящую число в двоичную систему счисления и проверяющую, является ли двоичная запись числа симметричной последовательностью нулей и единиц, начинающейся единицей. Напечатать все числа, не превосходящие n, двоичная запись которых есть симметричная последовательность.
-
Определить функцию, посчитывающую количество инверсий в последовательности цифр натурального числа, то есть количество таких пар соседних цифр, в которых большая находится слева от меньшей. Из массива целых чисел, генерируемом случайным образом, вывести на экран сначала все числа, в записи которых нет инверсий, затем числа, в записи которых 1 инверсия и т.д. до чисел, имеющих максимальное число инверсий в данном массиве. Например, элементы массива {3564, 123, 24, 87, 981, 9871, 54} должны быть выведены следующим образом: 0 инверсий: 123, 24; 1 инверсия: 3564, 87,54; 2 инверсии: 981; 3 инверсии: 9871.
-
Определить функцию, проверяющую, является ли заданная дробь несократимой. (Дробь задается двумя натуральными числами – числителем и знаменателем). Найти все несократимые дроби, заключенные между 0 и 1, знаменатели которых не превышают заданное число n.
-
Определить функцию, проверяющую является ли число простым. Распечатать четверки простых чисел, не превосходящих n, принадлежащих одному десятку. Например, для числа 112 надо напечатать четверки 2 3 5 7; 11 13 17 19 ; 101 103 107 109.
-
Определить функцию, возвращающую сумму простых делителей натурального числа. Найти все пары “дружественных” чисел в диапазоне [n1,n2]. Два натуральных числа называются “дружественными”, если одно из них равно сумме простых делителей другого.
-
Определить функцию, проверяющую, является ли данное число простым. Составить программу для проверки гипотезы Гольдбаха о том, что каждое четное число, большее 2, можно представить суммой двух простых чисел. (Для любого четного k, не превосходящего n, выдать либо пару простых слагаемых, либо сообщение, что такого разложения нет).
-
Определить функцию, проверяющую, является ли данное число простым, и функцию, вычисляющую количество нулей в двоичной записи натурального числа. (Считается, что первая цифра двоичного числа всегда 1). Среди простых чисел, не превосходящих n, найти первое такое, в двоичной записи которого максимальное количество нулей.
-
Определить функцию, проверяющую, является ли данное число простым, и функцию, подсчитывающую количество единиц в двоичной записи натурального числа. Найти все пары простых чисел, не превосходящих n, сумма единиц в двоичной записи которых совпадает. Например, такой парой является пара 3 (11) и 5 (101).
-
Определить функцию для нахождения наименьшего общего кратного (НОК) и наибольшего общего делителя (НОД) двух натуральных чисел. Определить НОК и НОД для n введенных натуральных чисел.
-
Определить функцию, проверяющую, является ли данное число простым, и функцию, вычисляющую количество единиц в двоичной записи натурального числа. (Считается, что первая цифра двоичного числа всегда 1). Среди простых чисел, не превосходящих n, найти такие, в двоичной записи которых количество единиц не превосходит m.
-
Определить функцию, которая преобразует строку цифр (от двоичных до шестнадцатеричных) в эквивалентное десятичное число, и функцию, которая преобразует целое десятичное число в эквивалентную строку цифр (от двоичных до шестнадцатеричных). Вычислить сумму двух введенных двоичных строк и вывести результат сложения на экран в десятичном и двоичном виде.