Содержание
ВНИМАНИЕ | Для получения программы своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Постановка задания
Последовательность данных не всегда нужно сохранять в памяти. Поэтому нужно уметь обрабатывать последовательность по мере поступления ее элементов: при чтении файла, при вводе некоторых данных с клавиатуры и т.д.
Пусть имеется последовательность произвольных целых ненулевых чисел, завершающаяся 0 (число 0 в последовательность не входит). Количество элементов в последовательности заранее неизвестно, поэтому в данной работе использовать массивы (статические и динамические) нельзя.
Варианты заданий (уровень А)
№ | Формулировка |
А1 | Напечатать в обратном порядке наибольший элемент последовательности. |
А2 | Найти количество наибольших и наименьших элементов последовательности. |
А3 | Найти количество простых чисел в последовательности, больших заданного числа М. |
А4 | Найти сумму таких элементов последовательности, сумма цифр в которых не превышает заданного числа Р. |
А5 | Найти количество четных чисел последовательности, сумма цифр в которых не превышает заданного числа Р. |
А6 | Найти количество таких элементов последовательности, которые превосходят сумму всех предшествующих элементов. |
А7 | Напечатать в обратном порядке наименьший элемент последовательности. |
А8 | Найти сумму таких элементов последовательности, которые имеют в младшем разряде цифру 7. |
А9 | Найти сумму таких элементов последовательности, которые меньше всех предшествующих им элементов. |
А10 | Найти количество таких элементов последовательности, которые не превосходят сумму всех предшествующих элементов. |
А11 | Найти сумму нечетных чисел последовательности, сумма цифр в которых превышает заданное число Р. |
А12 | Найти количество таких элементов последовательности, которые имеют в младшем разряде цифру 3. |
А13 | Найти количество двузначных элементов последовательности. |
А14 | Найти количество таких элементов последовательности, сумма цифр в которых является четным числом. |
А15 | Найти количество составных чисел в последовательности. |
А16 | Найти сумму нечетных чисел последовательности, количество цифр в которых не превышает заданного числа Р. |
А17 | Найти количество таких элементов последовательности, которые имеют в своем составе цифру 5. |
Варианты заданий (уровень В)
№ | Формулировка |
В1 | Найти значения и порядковые номера элементов, являющихся наименьшим среди четных чисел и наибольшим среди нечетных чисел. |
В2 | Найти порядковый номер наибольшего по значению числа, являющегося симметричным в десятичном представлении. |
В3 | Вычислить количество всех четных цифр во всех нечетных элементах последовательности. |
В4 | Найти значение наибольшего элемента и его порядковый номер среди всех элементов, имеющих в своем составе цифру 3. |
В5 | Найти количество чисел, которые не превосходят числа А и являются полными квадратами некоторого натурального числа. |
В6 | Найти количество таких элементов, которые делятся на одну из своих цифр. |
В7 | Найти количество таких элементов, сумма цифр в которых есть простое число. |
В8 | Найти количество таких элементов, в которых чередуются четные и нечетные цифры. |
В9 | Найти количество таких элементов, которые состоят из двух равных частей и имеют в своем составе цифру 3. |
В10 | Найти в последовательности минимальное число, имеющее наибольшее количество цифр. |
В11 | Найти такие элементы (а также их сумму), цифры в которых не превосходят заданного числа М (0 < M < 9). |
B12 | Найти такие элементы (а также их сумму), которые состоят только из четных цифр. |
В13 | Найти в последовательности число, имеющее в своем составе наибольшее количество четных цифр. |
В14 | Найти порядковый номер наибольшего по значению числа, являющегося симметричным в двоичном представлении. |
В15 | Найти сумму элементов последовательности, которые являются полными кубами некоторого натурального числа. |
В16 | Найти сумму таких элементов последовательности, которые делятся на сумму своих цифр. |
В17 | Вычислить общую сумму всех нечетных цифр во всех четных элементах. |
Уровень С
Постановка задания
В последовательности целых чисел найти максимальное количество чисел, идущих подряд, которые обладают свойством Q, и максимальное количество чисел, идущих подряд, которые не обладают свойством Q. Свойство Q задается в варианте. Программа должна содержать логическую функцию, проверяющую, обладает ли заданное число свойством Q.
Варианты заданий
№ | Свойство Q |
C1 | Число является простым. |
С2 | Число является симметричным в двоичном представлении. |
С3 | Число делится на одну из своих цифр. |
С4 | Число является полным квадратом некоторого натурального числа. |
С5 | В числе чередуются четные и нечетные числа. |
С6 | Числя является симметричным в десятичном представлении. |
С7 | Число состоит из двух равных частей и имеет в своем составе цифру 1. |
С8 | Число состоит из попарно различных цифр. |
С9 | Цифры в числе образуют неубывающую последовательность. |
С10 | Сумма цифр числа является простым числом. |
Образец выполнения (задание В7)
Условие задания
Найти количество таких элементов, сумма цифр в которых есть простое число.
Реализация задачи на языке Си
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | #include <stdio.h> // консольный ввод-вывод (scanf, printf) #include <conio.h> // задержка программы (getch) #include <math.h> // математические функции (abs, sqrt) #include <locale.h> // русификация диалогов (setlocale) // получение суммы цифр заданного ненулевого целого числа pn int Get_sum_digits(int pn) { int sum = 0; // хранит сумму всех цифр числа pn int digit; // младший разряд (самая правая цифра) // пока не все цифры в числе обработаны while(pn > 0) { digit = pn % 10; // получаем самую правую цифру числа sum += digit; // добавляем эту цифру к результирующей сумме pn = pn / 10; // отбрасываем самую правую цифру, т к она уже учтена в сумме } // в качестве ответа возвращаем сумму цифр числа return sum; } // проверка натурального небольшого числа на простоту // 0 - число НЕ является простым; 1 - число является простым int Is_simple(const int pn) { int result = 1; // предполагаем изначально, что заданное число является простым int divisor; // потенциальный делитель числа // перебираем все возможные делители числа от 2 до корня из проверяемого числа for(divisor = 2; divisor <= sqrt((double)pn); divisor++) if(pn % divisor == 0) // если заданное число кратно текущему делителю, значит, оно не является простым { result = 0; // проверяемое число не является простым break; // обрываем выполнение цикла } // возвращем результат (0 или 1) return result; } // главная функция программы (точка входа) int main(void) { int current_number; // текущее число, которое пользователь ввел с клавиатуры int count = 0; // количество чисел, у которых сумма цифр является простым числом setlocale(LC_ALL, ""); // русификация диалогов do { printf("Введите целое число (0 - конец ввода): "); scanf("%d", ¤t_number); // если пользователь ввел 0, то заканчивается обработка if(current_number == 0) break; // если сумма цифр текущего числа является простым числом, то if(Is_simple(Get_sum_digits(abs(current_number))) == 1) count++; // увеличиваем счетчик чисел, удовлетворяющих условию на +1 } while(1); // выводим результат на экран printf("\nКоличество чисел, сумма цифр в которых есть простое число: %d", count); getch(); // имитация задержки программы, чтобы у пользователя была возможность просмотреть результат return 0; // завершение работы программы и передача управления в ОС } |
Результаты работы программы

Результаты работы программы (тест №1)

Результаты работы программы (тест №2)

Результаты работы программы (тест №3)
ВНИМАНИЕ | Для получения программы своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Добавить комментарий