- •Т.Э. Шульга программирование.
- •Глава 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. Наследование
- •Список литературы
Задание 4. Вложенные циклы
Пример. Введите месяц и день своего рождения. В массиве целых чисел, генерируемом случайным образом, найдите первое счастливое для Вас число. Число называется счастливым, если сумма его цифр равна сумме цифр месяца и дня Вашего рождения.
#include <iostream.h>
#include <stdlib.h>
Void main ()
{
const int n=100;
int a[n];
int m,d,sum1,sum2,i,k;
cout<<"\nEnter day and month ";
cin >>d>>m;
sum1=d%10+d/10+m%10+m/10;// считаем сумму цифр месяца и
//дня рождения
for(i=0;i<n;i++)
{ a[i]=random(1001); //генерируем элемент массива
sum2=0;
k=a[i];//сохраняем значения a[i]
while (k>0)// ищем сумму цифр числа a[i]
{ sum2+=k%10;
k/=10;
}
if (sum1==sum2)//нашли счастливое число
{ cout << "\nHappy number a["<<i<<"]="<<a[i];
break;//прекратили генерировать следующие элементы
//массива (выход из цикла)
}
}
if (i==n) cout<<"\n No number";
}
-
Найти все натуральные числа в диапазоне между m и n (m<n), делящиеся на каждую из своих цифр.
-
Найти все натуральные числа, в диапазоне между m и n (m<n), десятичная запись которых есть строго возрастающая последовательность цифр. Подсчитать количество таких чисел.
-
Найти все натуральные числа в диапазоне между m и n (m<n), в записи которых нет двух одинаковых цифр. Подсчитать количество таких чисел.
-
Натуральное число из m цифр называется числом Амстронга, если сумма его цифр, возведенная в степень m, равна самому числу. Распечатать все числа Амстронга, не превосходящие заданного n, и подсчитать количество таких чисел.
-
Дано натуральное число n. Подсчитать количество различных цифр, встречающихся в k старших разрядах его записи.
-
Распечатать все различные тройки последовательных элементов одномерного массива цифр. Например, в массиве 318731873 различные тройки - это 318, 187, 873, 731.
-
Сколько чисел между n и m (n<m) состоит только из нечетных цифр. Выведите на экран эти числа.
-
Заданное натуральное число представить в виде суммы квадратов двух натуральных чисел или выдать сообщение, что это невозможно.
-
Указать индексы и напечатать те элементы целочисленного массива X, сумма цифр которых равна заданному числу M (если такие элементы есть).
-
Для натуральных a и b определим операцию ab=a-b+a%b. Найти все пары a,b, не превосходящие заданного n, для которых ab= bа.
-
Определить, сколько чисел между n и m (n<m) состоит только из четных цифр. Выведите на экран эти числа.
-
Найти максимальное из чисел, встречающихся в заданном целочисленном массиве более одного раза.
Задание 5. Двумерные массивы
Пример. Сформировать матрицу A(10,10) следующего вида
# include <iostream.h>
Void main ()
{ const int N=10;
static int a[N][N]; //статический массив инициализируется
//нулями
for (i=0; i<N; i++)
for (j=0; j<N; j++)
if (i>=j) a[i][j]=i-j+1 //условие попадания под главную
// диагональ
for (i=0; i<N; i++) // печать матрицы
{
for (j=0; j<N; j++) cout << a[i][j];
cout << “\n”;
}
}
Можно уменьшить количество повторений в цикле и избавиться от проверок в операторе IF, если фрагмент заполнения матрицы записать следующим образом:
for (i=0; i<N; i++)
for (j=0; j<i; j++)
a[i][j]=i-j+1
-
Сгенерировать случайным образом квадратную матрицу размерности K<20. Найти сумму ее элементов, находящихся на диагонали, «ортогональной» главной.
-
Дана прямоугольная матрица A (N, M) (N M, M 15). Найти произведение элементов каждой строки матрицы. Сформировать массив B из найденных произведений.
-
Дана прямоугольная матрица A (N, M) (N M, M 15). Найти максимальный элемент в каждой строке. Сформировать массив B из найденных элементов.
-
Дана прямоугольная матрица A (N, M) (N M, M 15). Преобразовать матрицу таким образом, чтобы на месте первой строки находилась вторая, на месте второй – третья, и т.д., а на месте последней - первая.
-
Дана прямоугольная матрица A (N, M) (N M, M 15) и искомое число k. Найти все имеющиеся в матрице числа k и их позиции. Если таких элементов нет, то выдать соответствующее сообщение.
-
Сформировать и распечатать квадратную матрицу А(10,10) следующего вида:
-
Сформировать и распечатать прямоугольную матрицу A(10,20) следующего вида:
-
Сформировать и распечатать квадратную матрицу A(12,12) следующего вида:
-
Сформировать и распечатать квадратную матрицу A(15,15) следующего вида:
-
Сформировать и распечатать квадратную матрицу A(15,15) следующего вида:
-
Сформировать и распечатать квадратную матрицу размерности M<20 следующего вида:
-
Сформировать и распечатать квадратную матрицу A(15,15) следующего вида: