Содержание
ВНИМАНИЕ | Для получения программы своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Уровень А
Постановка задания
Требуется создать линейный список целых чисел, элементами которого являются случайные целые числа или вводимые с клавиатуры, и определить его характеристики в соответствии с вариантом.
➡ Программа должна содержать следующие функции:
- создание списка и заполнение его элементов случайными числами или вводимыми с клавиатуры;
- вывод списка на экран;
- удаление всего списка.
Варианты заданий
№ | Формулировка |
А1 | В линейном списке целых чисел найти максимум и минимум. |
А2 | Найти количество и сумму тех элементов линейного списка, которые делятся на 5 и не делятся на 7. |
А3 | Найти количество простых чисел в линейном списке. |
А4 | Найти количество и сумму положительных элементов линейного списка, которые делятся на 5. |
А5 | Найти количество составных чисел в линейном списке. |
А6 | Вычислить сумму только симметричных элементов линейного списка. |
А7 | Вычислить среднее арифметическое чисел линейного списка, содержащих только четные цифры. |
А8 | Найти количество элементов линейного списка, больших предыдущего и меньших последующих. |
А9 | В линейном списке целых чисел найти количество минимальных элементов. |
А10 | Вычислить сумму элементов линейного списка, являющихся простыми числами и расположенных в интервале (А, В). |
А11 | Найти количество элементов линейного списка, больших всех предыдущих элементов. |
А12 | В линейном списке целых чисел найти количество максимальных элементов. |
А13 | Найти сумму всех двузначных элементов линейного списка. |
А14 | Найти количество таких элементов линейного списка, которые имеют в младшем разряде цифру 7. |
А15 | Вычислить сумму элементов линейного списка, содержащих хотя бы одну нечетную цифру. |
А16 | В линейном списке целых чисел найти количество простых чисел. |
А17 | В линейном списке целых чисел найти среднее арифметическое нечетных чисел, делящихся на 5. |
Уровень В
Постановка задания
Имеется текстовый файл с целыми числами. Требуется сначала все числа из данного файла записать в линейный список. Затем найти количество элементов в линейном списке, обладающих свойством Q. После чего удалить из списка все элементы, обладающие свойством Т. Свойства Q и Т указаны в индивидуальных вариантах. После каждого преобразования линейного списка вывести его на экран (после заполнения и после удаления элементов).
➡ Программа должна содержать следующие функции:
- создание списка и заполнение его целыми числами из текстового файла;
- вывод списка на экран;
- количество элементов списка, обладающих свойством Q;
- удаление всех элементов списка, обладающих свойством Т;
- удаление всего списка.
Варианты заданий
№ | Свойство Q | Свойство Т |
В1 | Число является четным. | Число содержит в своем составе цифры 2 и 3. |
В2 | Число является положительным. | Число начинается с цифры 1. |
В3 | Число содержит цифру 1. | Число является простым. |
В4 | Число не содержит цифру 0. | Первая цифра числа совпадает с последней. |
В5 | Число является нечетным. | Число является составным. |
В6 | Число является простым. | Число содержит в своем составе цифру 5. |
В7 | Число является двузначным. | Число не содержит в своем составе цифру 7. |
В8 | Число является симметричным. | Число является трехзначным. |
В9 | Сумма цифр числа равна 10. | Число является четным. |
В10 | Число не содержит четных цифр. | Число является простым. |
В11 | Число является составным. | Число начинается с 2. |
В12 | Число начинается с 3. | Число является составным. |
В13 | Число является степенью двойки. | Первая цифра числа является нечетной. |
В14 | Число содержит хотя бы одну четную цифру. | Число содержит в младшем разряде цифру 3. |
В15 | Число содержит цифру 3. | Число является составным. |
В16 | Число является трехзначным. | Число содержит в своем составе цифру 2. |
В17 | Число является степенью тройки. | Число не содержит в своем составе цифру 5. |
Уровень С
Постановка задания
Имеется текстовый файл с целыми числами. Требуется сначала все числа из данного файла записать в двусвязный линейный список. Затем удалить из списка все элементы, обладающие свойством Q. После чего продублировать все элементы линейного списка, обладающие свойством R. Наконец, упорядочить все элементы линейного списка, обладающие свойством Т, оставив остальные элементы на своих местах. Свойства Q, R и Т указаны в индивидуальных вариантах. После каждого преобразования линейного списка вывести его на экран.
➡ Программа должна содержать следующие функции:
- создание списка и заполнение его целыми числами из текстового файла;
- вывод списка на экран;
- удаление всех элементов списка, обладающих свойством Q;
- дублирование всех элементов списка, обладающих свойством R;
- сортировка всех элементов списка, обладающих свойством Т;
- удаление всего списка.
Варианты заданий
№ | Q | R | T |
С1 | Число является отрицательным. | Число не содержит четных цифр. | Число начинается с цифры 1. |
С2 | Число содержит цифру 1. | Число является составным. | Число является простым. |
С3 | Число не содержит цифру 0. | Число начинается с 2. | Первая цифра числа совпадает с последней. |
С4 | Число является нечетным. | Число начинается с 3. | Число является составным. |
С5 | Число является простым. | Число является степенью двойки. | Число содержит в своем составе цифру 5. |
С6 | Число является двузначным. | Число является четным. | Число не содержит в своем составе цифру 7. |
С7 | Число является симметричным. | Число содержит хотя бы одну четную цифру. | Число является трехзначным. |
С8 | Сумма цифр числа равна 10. | Число содержит в младшем разряде цифру 3. | Число является двузначным. |
С9 | Сумма цифр числа является четным числом. | Число является произведением двух различных простых чисел. | Число является простым. |
С10 | Число является квадратом некоторого натурального числа. | Число является степенью некоторого простого числа. | Число является составным. |
Образец выполнения (вариант А17)
Условие задачи
В линейном списке целых чисел найти среднее арифметическое нечетных чисел, делящихся на 5.
Реализация задачи на языке Си
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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | #include <stdio.h> // консольный ввод-вывод #include <conio.h> // имитация задержки работы программы #include <locale.h> // русификация диалогов #include <stdlib.h> // работа с динамической памятью #include <time.h> // для генерации случ.чисел // диапазон значений для ключей элементов списка #define LEFT +5 #define RIGHT +70 // описание структуры элемента списка struct ELEM { int key; // ключ элемента (целое число) struct ELEM *next; // указатель на следующий элемент }; typedef struct ELEM TNode; // создание нового элемента списка TNode* Create_node(const int pkey) { TNode *node = (TNode*)malloc(sizeof(TNode)); node->key = pkey; node->next = NULL; return node; } // добавление элемента в начало списка void Insert(TNode **pbegQ, const int pkey) { TNode *add = Create_node(pkey); if(*pbegQ) add->next = *pbegQ; *pbegQ = add; } // заполнение списка TNode* Create_List(void) { int n, inode; TNode *begQ = NULL; printf("Введите количество элементов односвязного списка (натуральное число): "); scanf("%d", &n); for(inode = 0; inode < n; inode++) Insert(&begQ, LEFT + rand() % (RIGHT - LEFT + 1)); return begQ; } // вывод элементов списка на экран void Print_List(TNode* const pbegQ) { TNode *scan = pbegQ; printf("Элементы списка: "); while(scan) { printf("%6d", scan->key); scan = scan->next; } } // удаление списка из памяти void Delete_List(TNode** pbegQ) { TNode* del = *pbegQ; while(del) { *pbegQ = del->next; del->next = NULL; free(del); del = *pbegQ; } } // нахождение среднего арифметического нечетных чисел, делящихся на 5 double Get_Average(TNode* const pbegQ) { long sum = 0; int count = 0; TNode* scan = pbegQ; double result = 0; while(scan) { if((scan->key % 2 == 1) && (scan->key % 5 == 0)) { sum += scan->key; count++; } scan = scan->next; } if(count != 0) result = (double)sum / count; return result; } // главная функция программы (точка входа) int main(void) { TNode *begQ = NULL; // указатель на начало списка // засеивание зерна генерации + русификация диалогов программы srand(time(NULL)); setlocale(LC_ALL, ""); begQ = Create_List(); // создание списка Print_List(begQ); // вывод элементов списка на экран printf("\nСреднее арифметическое нечетных чисел, делящихся на 5: %.5lf", Get_Average(begQ)); Delete_List(&begQ); // удаление списка из динамической памяти getch(); // задержка работы программы, чтобы была возможность просмотреть результаты return 0; // завершение работы программы и передача управления в ОС } |
Результаты работы программы
ВНИМАНИЕ | Для получения программы своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Добавить комментарий