Архив блога

воскресенье, 30 января 2011 г.

Тексты задач за месяц.

Задача 37.
Напишите программу, которая выводит на экран путь к файлу stdio.h.

Задача 38.
Напишите программу, которая выводит на экран четверостишие:
Унылая пора! Очей очарование!
Приятна мне твоя прощальная краса - 
Люблю я пышное природы увяданье,
В багрец и золото одетые леса.
                                        А.С. Пушкин.

Задача 39.

Напишите инструкцию вывода значений переменных a, b и c (типа float) с пятью цифрами целой части и тремя - дробной, в виде:
а = значение b = значение с = значение

Задача 40.

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

Задача 41.

Запишите инструкцию, которая выводит в одной строке значения переменных a, b и с целого типа (int).

Задача 42.

Напишите инструкцию вывода значений целых переменных a, b и c. Значение каждой переменной должно быть выведено в отдельной строке.

Задача 43.

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

Задача 44.

Напишите программу, которая выводит на синем фоне серыми буквами четверостишие:

Буря мглою небо кроет,
Вихри снежные крутя.
То как зверь она завоет,
То заплачет, как дитя!
                А.С. Пушкин.

Задача 45.

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

Задача 46.

Напишите инструкцию, обеспечивающую ввод с клавиатуры значения переменных radius типа float.

Задача 47.

Напишите инструкции, которые обеспечивают ввод значений дробных (тип float) переменных u и r. Предполагается, что пользователь после набора каждого числа будет нажимать клавишу <Enter>.
Задача 48.

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

Задача 49.

Объявите необходимые переменные и напишите фрагмент программы вычисления объема цилиндра, обеспечивающий ввод исходных данных.

Задача 50.

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

Задача 51.

Напишите программу вычисления площади параллелограмма.

Задача 52.

Напишите программу вычисления объема параллелепипеда.

Задача 53.

Напишите программу вычисления площади поверхности параллелепипеда.

Задача 54.

Напишите программу вычисления объема куба.

Задача 55.

Напишите программу вычисления объема цилиндра.

Задача 56.

Напишите программу вычисления стоимости покупки, состоящей из нескольких тетрадей и карандашей.

Задача 57.

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

Задача 58.

Напишите программу вычисления стоимости некоторого количества (по весу) яблок.

Задача 59.

Напишите программу вычисления площади треугольника, если известна длина основания и высоты.

Задача 60.

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

Задача 61.

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

Задача 62.

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

Задача 63.

Напишите программу вычисления силы тока в электрической цепи.

Задача 64.

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

Задача 65.

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

Задача 66.

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

Задача 67.

Напишите программу вычисления объема цилиндра.

Задача 68.

Напишите программу вычисления площади поверхности цилиндра.

Задача 69.

Напишите программу вычисления объема параллелепипеда.

Задача 70.

Напишите программу пересчета расстояния из верст в километры (1 верста - это 1066,8 метра.).

Задача 71.

Напишите программу пересчета веса из фунтов в килограммы (1 фунт - это 405,9 грамма).

Задача 72.

Напишите программу вычисления величины дохода по вкладу. Процентная ставка (% годовых) и время хранения (дней) задаются во время работы программы.

Задача 73.

Напишите программу пересчета величины временного интервала, заданного в минутах, в величину, выраженную в часах и минутах.

Задача 74.

Напишите программу, которая преобразует введенное с клавиатуры дробное число в денежный формат. Например, число 12,5 должно быть преобразовано к виду 12 рублей 50 копеек.

Задача 75.

Напишите программу пересчета веса из фунтов в килограммы (1 фунт - 405,9 грамма).

Задача 76.

Напишите программу вычисления площади треугольника по известным координатам его узлов.
Площадь вычисляется по формуле:

Задача 77.

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

Задача 78.

Написать программу вычисления площади кольца. Программа должна проверять правильность исходных данных.

Задача 79.

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

Задача 80.

Напишите программу, которая проверяет, является ли год високосным.
Задача 81.

Напишите программу вычисления сопротивления цепи, состоящей из двух сопротивлений. Сопротивления могут быть соединены последовательно или параллельно.

Задача 82.

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

Задача 83.

Написать программу вычисления стоимости покупки с учетом скидки. Скидка в 10% предоставляется, если сумма покупки больше 1000 рублей.

Задача 84.

Напишите программу вычисления стоимости покупки с учетом скидки. Скидка в 3% предоставляется, если сумма покупки больше 500 рублей, в 5% - если сумма больше 1000 рублей.

Задача 85.

Напишите программу проверки знания даты основания Санкт-Петербурга. С случае неправильного ответа пользователя, программа должна выводить правильный ответ.

Задача 86.

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

Задача 87.

Напишите программу проверки знания истории архитектуры. Программа должна вывести вопрос и три варианта ответа. Пользователь должен выбрать правильный ответ и ввести его номер.

Задача 88.

Напишите программу проверки знания истории архитектуры. Программа должна вывести вопрос и три варианта ответа. Пользователь должен выбрать правильный ответ и ввести его номер.
Задача 89.

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

Задача 90.

Напишите программу, которая выводит пример на умножение двух однозначных чисел, запрашивает ответ пользователя, проверяет его и выводит сообщение "Правильно!" или "Вы ошиблись." и правильных результат.

Задача 91.

Напишите программу, которая выводит пример на вычитание (в пределах 100), запрашивает ответ пользователя, проверяет его и выводит сообщение "Правильно" или "Вы ошиблись" и правильный результат.

Задача 92.

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

Задача 93.

Написать программу, которая проверяет, делится ли на три введенное с клавиатуры целое число.

Задача 94.

Напишите программу вычисления стоимости разговора по телефону с учетом 20% скидки, предоставляемой по субботам и воскресеньям.

Задача 95.

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

Задача 96.

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

Задача 97.

Напишите программу, которая запрашивает у пользователя номер дня недели и выводит на экран одно из сообщений: "Рабочий день", "Суббота" или "Воскресенье".

Задача 98.

Напишите программу, которая после введенного с клавиатуры числа (в диапазоне от 1 до 999), обозначающего денежную единицу, дописывает слово "рубль" в правильной форме. Например, 12 рублей, 21 рубль и т.д.

Задача 99.

Напишите программу, которая  после введенного с клавиатуры числа (в диапазоне от 1 до 99), обозначающего денежную единицу, дописывает слово "копейка" в правильной форме. Например, 5 копеек, 41 копейка и т.д.

Задача 100.

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

Задача 101.

Напишите программу, которая запрашивает у пользователя номер дня недели, затем выводит название дня недели или сообщение об ошибке, если введены неверные данные.

Задача 102.

Напишите программу, которая вычисляет стоимость междугородного телефонного разговора (цена одной минуты определяется расстоянием до города, в котором находится абонент). Исходными данными для программы являются код города и длительность разговора.
----------------------------------------------------------------------------------------------------------------------------------
|   Город                             |   Код                                   |  Цена минуты (руб)     |
----------------------------------------------------------------------------------------------------------------------------------
|   Владивосток                  |   423                                    |   2.2                               |
----------------------------------------------------------------------------------------------------------------------------------
|   Москва                           |   095                                    |   1.0                               |
----------------------------------------------------------------------------------------------------------------------------------
|   Мурманск                      |   815                                    |   1.2                               |
----------------------------------------------------------------------------------------------------------------------------------
|   Самара                          |   846                                    |   1.4                                |
----------------------------------------------------------------------------------------------------------------------------------

Задача 103.

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

W = ( d+[(13m-1)/5]+Y+[Y/4]+[c/4]-2c + 777) % 7.

Здесь d - число месяца, m - номер месяца, если начинать счет с марта, как делали это в Древнем Риме (март -1, апрель -2, ... , февраль 12 ), Y - номер года в столетии, с - количество столетий. Квадратные скобки означают, что надо взять целую часть от значения, находящегося в скобках. Вычисленное по формуле значение определяет день недели: 1 - понедельник, 2 - вторник, ... , 6 - суббота, 0 - воскресенье.

Задача 104.

Напишите программу, которая выводит на экран хорошую фразу 10 раз.

Задача 105.

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

Задача 106.

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

Задача 107.

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

Задача 108.

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

Задача 109.

Напишите программу, которая вычисляет сумму первых членов ряда: 1, 3, 5, 7, ... Количество суммируемых членов ряда задается во время работы программы.

Задача 110.

Напишите программу, которая вычисляет сумму первых n членов ряда: 1 + 1/2 + 1/3 + 1/4 + ... Количество суммируемых членов ряда задается во время работы программы.

Задача 111.

Напишите программу, которая выводит таблицу степеней двойки от нулевой до десятой.Задача 112.
Напишите программу. которая вычисляет факториал введенного с клавиатуры числа. (Факториалом числа n называется произведение целых чисел от 1 до n. Например, факториал 1 равен 1, 8 - 40320).

Задача 113.

Напишите программу, которая выводит таблицу значений функции y = -2.4x*x+5x-3, с шагом 0,5.

Задача 114.

Напишите программу, которая вводит с клавиатуры 5 дробных чисел и вычисляет их среднее арифметическое.

Задача 115.

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

Задача 116.

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

Задача 117.

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

Задача 118.

Напишите программу, которая генерирует последовательность из 10 случайных чисел в диапазоне от 1 до 10, выводит эти числа на экран и вычисляет их среднее арифметическое.

Задача 119.

Напишите программу, которая генерирует три последовательности из десяти случайных чисел в диапазоне от 1 до 10, выводит каждую последовательность на экран и вычисляет среднее арифметическое каждой последовательности.

Задача 120.

Напишите программу, которая выводит на экран таблицу стоимости, например, яблок в диапазоне от 100 грамм до 1 килограмма с шагом в 100 грамм.

Задача 121.

Напишите программу, которая выводит таблицу значений функции y = |x|. Диапазон изменения аргумента от -4 до 4, шаг приращения аргумента 0,5.

Задача 122.

Напишите программу, которая выводит таблицу значений функции
y = |x-2|+|x+1|. Диапазон изменения аргумента от -4 до 4, шаг приращения аргумента 0,5.

Задача 123.

Напишите программу, которая выводит на экран таблицу умножения, например, на 7.

Задача 124.

Напишите программу, которая выводит на экран квадрат Пифагора - таблицу умножения.

Задача 125.

Напишите программу, которая вычисляет частичную сумму ряда: 1-1/3+1/5-1/7+1/9-... и сравнивает полученное значение с ПИ/4 (при суммировании достаточно большого количества членов этого ряда, величина частичной суммы приближается к ПИ/4).

Задача 126.

Напишите программу приближенного вычисления интеграла функции
f(x) = 5*x*x-x+2 методом прямоугольников.

Задача 127.

Напишите программу приближенного вычисления интеграла методом трапеций.

Задача 128.

Напишите программу, которая выводит на экран изображение шахматной доски. Черные клетки отображать "звездочкой", белые пробелом.

Задача 129.

Напишите программу, которая преобразует введенное пользователем десятичное число в двоичное.

Задача 130.

Напишите программу проверки знания таблицы умножения. Программа должна вывести 10 примеров и выставить оценку: за 10 правильных ответов - "отлично", за 9 и 8 - "хорошо", за 7 и 6 - "удовлетворительно", за 5 и менее - "плохо".

Задача 131.

Напишите программу проверки умения складывать и вычитать числа в пределах 100. Программа должна вывести 10 примеров, причем в каждом примере уменьшаемое должно быть больше или равно вычитаемому, т.е. не допускается предлагать испытуемому примеры с отрицательным результатом. Оценка выставляется по следующему правилу: за 10 правильных ответов - "отлично", за 9 и 8 - "хорошо", за 7 и 6 - "удовлетворительно", за 5 и меньше - "плохо".

Задача 132.

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

Задача 133.

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

Задача 134.

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

Задача 135.

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

Задача 136.

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

Задача 137.

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

Задача 138.

Напишите программу, которая "задумывает" число в диапазоне от 1 до 10 и предлагает пользователю угадать число за 5 попыток.

Задача 139.

Напишите программу-таймер, которая по истечении заданного промежутка времени, величина которого вводится с клавиатуры, выдает звуковой сигнал.

Задача 140.

Напишите программу, которая выводит на экран таблицу значений функции y=2*x*x - 5*x - 8 в диапазоне от -4 до 4. Шаг изменения аргумента 0,5.

Задача 141.

Напишите программу, которая вычисляет число "Пи" с заданной пользователем точностью. Для вычисления значения числа "Пи" воспользуйтесь тем, что значение частичной суммы ряда 1-1/3+1/5-1/7+1/9-... при суммировании достаточно большого количества членов приближается к значению Пи/4.

Задача 142.

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

Задача 143.

Напишите программу, которая вводит с клавиатуры одномерный массив из 5-ти целых чисел, после чего выводит количество ненулевых элементов. Перед вводом элемента должна выводится подсказка с номером элемента.

Задача 144.

Напишите программу, которая выводит минимальный элемент введенного с клавиатуры массива целых чисел.

Задача 145.

Напишите программу, которая выводит минимальный элемент введенного с клавиатуры массива целых чисел. Для доступа к элементам массива используйте указатель.

Задача 146.

Напишите программу, которая вычисляет среднее арифметическое ненулевых элементов введенного с клавиатуры массива целых чисел.

Задача 147.

Напишите программу, которая вычисляет среднее арифметическое элементов массива без учета минимального и максимального элементов массива.

Задача 148.

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

Задача 149.

Напишите программу, которая проверяет, находится ли введенное с клавиатуры число в массиве. Массив должен вводится во время работы программы.

Задача 150.

Напишите программу, которая проверяет, представляют ли элементы введенного с клавиатуры массива возрастающую последовательность.

Задача 151.

Напишите программу, которая вычисляет, сколько раз введенное с клавиатуры число встречается в массиве.

Задача 152.

Напишите программу, которая проверяет, есть ли во введенном с клавиатуры массиве элементы с одинаковым значением.

Задача 153.

Напишите программу, которая методом прямого выбора сортирует по убыванию  введенный с клавиатуры одномерный массив.

Задача 154.

Напишите программу, которая методом обмена "пузырька" сортирует по убыванию введенный с клавиатуры одномерный массив.

Задача 155.

Напишите программу, которая объединяет два упорядоченных по возрастанию массива в один, также  упорядоченный массив.

Задача 155.

Напишите программу, которая объединяет два упорядоченных по возрастанию массива в один, также  упорядоченный массив.

/*
    Программа объединяет два упорядочных массива
    в один упорядоченный массив.
*/
#include "locale.h"
#include "curses.h"
#include "stdio.h"
#include "stdlib.h"
#include "time.h"

#define HB 25
main()
{
    int i, j, k, temp;
    int s[HB], v[HB], rez[HB * 2];
    time_t t;
    char *log;
   
    log = setlocale(LC_CTYPE,"ru_RU.UTF-8");
    srand((unsigned)time(&t));
   
    initscr();
    printw("Объединение двух упорядоченных по возрастанию массивов.\n");
    printw("Создание двух неупорядоченных массивов...\n");
    // Создаем массив s[i]
   
    printw("s[i] -> ");
    for(i = 0; i < HB; i++)
    {
    s[i] = rand() % 10 + 1;
    printw("%i ", s[i]);
    }
    printw("\n");
    // Создаем массив v[i]
    printw("v[i] -> ");
    for(i = 0; i < HB; i++)
    {
    v[i] = rand() % 10 + 1;
    printw("%i ", v[i]);
    }
    printw("\n");
   
    // Сортировка массива s[i] по возрастанию.
   
    for(i = 0; i < HB - 1; i++)
    {
    for(k = i + 1; k < HB; k++)
    {
        if(s[i] > s[k])
        {
        temp = s[k];
        s[k] = s[i];
        s[i] = temp;
        }
    }
   
    }
   
    // Сортировка массива v[i] по возрастанию.
   
    for(i = 0; i < HB - 1; i++)
    {
    for(k = i +1; k < HB; k++)
    {
        if(v[i] > v[k])
        {
        temp = v[i];
        v[i] = v[k];
        v[k] = temp;
        }
    }
    }
   
    // Отсортированные массивы выводим на экран.
    printw("Отсортированные массивы\n");
   
    // Массив s[i]
    printw("s[i] -> ");
    for(i = 0; i < HB; i++)
    {
    printw("%i ", s[i]);
    }
    printw("\n");
   
    // Массив v[i]
    printw("v[i] -> ");
    for(i = 0; i < HB; i++)
    {
    printw("%i ", v[i]);
    }
    printw("\n"); // Перевод строки.
    // Создание конечного массива (неотсортированного)
    // Часть I
    for(i = 0; i < HB; i++)
    {
    rez[i] = s[i];
    }
    // Часть II
    k = 0;
    for(i = HB; i < HB * 2; i++)
    {
    rez[i] = v[k];
    k++;
    }
    // Вывод на экран не отсортированного массива rez[i]
    printw("rez[i] -> ");
    for(i = 0; i < HB * 2; i++)
    {
    printw("%i ", rez[i]);
    }
    printw("\n");
   
    // Сортировка массива rez[i]
    for(i = 0; i < (HB * 2) - 1; i++)
    {
    for(k = i + 1; k < HB * 2; k++)
    {
        if(rez[i] > rez[k])
        {
        temp = rez[i];
        rez[i] = rez[k];
        rez[k] = temp;
        }
       
    }
    }
    printw("\n");
    printw("Отсортированный массив rez[i]: \n");
    // Вывод на экран отсортированного массива.
    for(i = 0; i < HB * 2; i++)
    {
    printw("%i ", rez[i]);
    }
    printw("\n");
    printw("Нажмите <Enter> для выхода из программы.");
    getch();
    endwin();
    return 0;
}

Задача 154.

Напишите программу, которая методом обмена "пузырька" сортирует по убыванию введенный с клавиатуры одномерный массив.

/*
    Программа методом обмена "пузырька" сортирует
    по убыванию одномерный массив.
*/
#include "locale.h"
#include "curses.h"
#include "stdio.h"
#include "stdlib.h"
#include "time.h"

#define HB 25
main()
{
    int i, j, k, temp;
    int s[HB];
    char *log;
    time_t t;
   
    log = setlocale(LC_CTYPE,"ru_RU.UTF-8");
    srand((unsigned) time(&t));
   
    initscr();
   
    for(i = 0; i < HB; i++)
    {
    s[i] = rand() % 10 + 1;
    printw("%i ", s[i]);
    }
    printw("\n");
   
    for(i = 0; i < HB - 1; i++)
    {
    for(k = 0; k < HB - 1; k++)
    {
        if(s[k] < s[k+1])
        {
        temp   = s[k];
        s[k]   = s[k+1];
        s[k+1] = temp;
        }
    }
    for(j = 0; j < HB; j++)
    {
        printw("%i ", s[j]);
    }
    printw("\n");
    }
   
    printw("\n-------------------------\n");
   
    for(i = 0; i < HB; i++)
    {
    printw("%i ", s[i]);
    }
   
    printw("\n");
    getch();
    endwin();
    return 0;
}

Задача 153.

Напишите программу, которая методом прямого выбора сортирует по убыванию  введенный с клавиатуры одномерный массив.

/*
    Программа методом прямого выбора сортирует
    массив по убыванию.
*/
#include "locale.h"
#include "curses.h"
#include "stdio.h"
#include "stdlib.h"
#include "time.h"

#define HB 22

main()
{
    int s[HB];
    int i, j, k;
    int min;
    int temp;
    char *log;
    time_t t;
   
    log = setlocale(LC_CTYPE,"ru_RU.UTF-8");
   
   
    initscr();
   
    srand((unsigned) time(&t));
    printw("Сортировка массива по убыванию.\n");
   
    for(i = 0; i < HB; i++)
    {
    s[i] = rand() % 10 + 1;
    printw("%i ", s[i]);
    }
   
    printw("\n");
   
    for(i = 0; i < HB - 1; i++)
    {
    min = i;
    for(k = i + 1; k < HB; k++)
        if(s[k] > s[min]) min = k;
       
    temp = s[i];
    s[i] = s[min];
    s[min] = temp;
    for(j = 0; j < HB; j++)
        printw("%i ",s[j]);
    printw("\n");
    }
   
    printw("\n");
   
    for(k = 0; k < HB; k++)
    {
    printw("%i ", s[k]);
    }
   
    getch();
    endwin();
    return 0;
}

Задача 152.

Напишите программу, которая проверяет, есть ли во введенном с клавиатуры массиве элементы с одинаковым значением.

/*
    Программа проверяет есть ли во введенном массиве
    элементы с одинаковыми значениями.
*/

#include "locale.h"
#include "curses.h"
#include "stdio.h"
#include "stdlib.h"
#include "time.h"

#define   HB  5
#define   YES 1
#define   NO  0

main()
{
    int s[HB];
    int isrep;
    int i, k;
    time_t t;
    char *log;
   
    log = setlocale(LC_CTYPE,"ru_RU.UTF-8");
   
    initscr();
    srand((unsigned) time(&t));
   
    for(i = 0; i < HB; i++)
    {
    s[i] = rand() % 10 + 1;
    printw("%i ", s[i]);
    }
    printw("\n");
    isrep = NO;
   
    for(i = 0; i < HB - 1; i++)
    {
    if(isrep) break;
    for(k = i + 1; k < HB; k++)
    {
       
        if(s[i] == s[k])
        isrep = YES;
    }
    }
    if(isrep) printw("В последовательности есть повторения.\n");
    else printw("В последовательности нет повторений.\n");
   
    getch();
    endwin();
    return 0;
   
}

Задача 151.

Напишите программу, которая вычисляет, сколько раз введенное с клавиатуры число встречается в массиве.


/*
    Программа вычисляет сколько раз 
    введенное с клавиатуры число встречается в массиве.
*/
#include "locale.h"
#include "curses.h"
#include "stdio.h"
#include "stdlib.h"
#include "time.h"

#define HB 5

main()
{
    int s[HB];
    int i;
    int n, point;
    char *log;
    time_t t;
   
    log = setlocale(LC_CTYPE,"ru_RU.UTF-8");
    initscr();
    srand((unsigned) time(&t));
    printw("Вычисление сколько раз всречается число в массиве.\n");
    for(i = 0; i < HB; i++)
    {
    s[i] = rand() % 5 + 1;
    printw("%i, ",  s[i]);
    }
    printw("\n");
    printw("Введите искомое число -> ");
    scanw("%i", &n);
    point = 0;
    for(i = 0; i < HB; i++)
    {
    if(s[i] == n)
    {
        point++;
    }
    }
    if(point)
    printw("\n\nИскомое число в последовательности встречается %i раз(а).", point);
    else printw("Искомое число в массиве не найдено.");
   
    getch();
    endwin();
    return 0;
}

Задача 150.

Напишите программу, которая проверяет, представляют ли элементы введенного с клавиатуры массива возрастающую последовательность.

/*
    Программа проверяет является ли введенная
    последовательность возрастающей.
*/

#include "locale.h"
#include "curses.h"
#include "stdio.h"

#define  HB 5
#define YES 1
#define  NO 0

main()
{
    int s[HB];
    int k;
    int ok;
    char *log;
   
    log = setlocale(LC_CTYPE,"ru_RU.UTF-8");
   
    initscr();
   
    printw("Проверка, упорядочен ли массив по возрастанию.\n");
    printw("Вводите пять элементов массива. \n-> ");
    scanw("%i %i %i %i %i", &s[0], &s[1], &s[2], &s[3], &s[4]);
   
    k  = 0;
    ok = YES;
   
    do
    {
    if(s[k] > s[k+1])
        ok = NO;
    k++;
    }
    while(k < HB && ok != NO);
   
    printw("Элементы массива ");
   
    if(!ok)
    printw("не ");
   
    printw("упорядочены по возрастанию.");
   
    getch();
    endwin();
    return 0;
}

Задача 149.

Напишите программу, которая проверяет, находится ли введенное с клавиатуры число в массиве. Массив должен вводится во время работы программы.

/*
    Программа проверяет, находится ли введенное с клавиатуры число
    в массиве. Массив вводится с клавиатуры.
*/

#include "locale.h"
#include "curses.h"
#include "stdio.h"

#define HB 5

main()
{
    int s[HB];
    int obr;
    int found;
    int i;
    char *log;
    log = setlocale(LC_CTYPE,"ru_RU.UTF-8");
    initscr();
   
    printw("Поиск в массиве методом перебора.\n");
    printw("Введите в одной строке %i целых чисел.\n", HB);
    printw("-> ");
    scanw("%i %i %i %i %i", &s[0], &s[1], &s[2], &s[3], &s[4]);
    printw("\nВведите образец для поиска (целое число) -> ");
    scanw("%i", &obr);
    found = 0;
    i = 0;
    do
    {
        if(s[i] == obr)
        found = 1;
        else
        i++;
    }
    while(!found && i < HB);
   
    if(found)
        printw("Совпадение с элементом s[%i] = %i", i + 1, s[i]);
    else
        printw("Совпадений нет.");
   
   
   
    getch();
    endwin();
    return 0;
}

Задача 148.

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

/*
    Программа вычисляет среднее арифметическое температуры
    воздуха за неделю.
*/

#include "locale.h"
#include "curses.h"
#include "stdio.h"

main()
{
    char *day[] = { "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье" };
    float t[7];
    float summa;
    float spred;
    int i;
    char *log;
    log = setlocale(LC_CTYPE,"ru_RU.UTF-8");
   
    initscr();
   
    printw("Введите температуру воздуха:\n");
   
    for(i = 0; i < 7; i++)
    {
    printw("%s -> ", day[i]);
    scanw("%f", &t[i]);
    summa += t[i];
    }
   
    spred = (float) summa / 7;
   
    printw("Средняя температура воздуха за неделю %2.2f", spred);
   
    getch();
    endwin();
    return 0;
}

Задача 147.

Напишите программу, которая вычисляет среднее арифметическое элементов массива без учета минимального и максимального элементов массива.


/*
    Программа вычисляет среднее арифметическое элементов массива
    без учета минимального и максимального элементов массива.
*/

#include "locale.h"
#include "curses.h"
#include "stdio.h"

#define HB 10

main()
{
    int s[HB];
    int i, summa;
    float spred;
    int max, min;
    char *log;
   
    i = 0;
    summa = 0;
    spred = 0.0;
    
    log = setlocale(LC_CTYPE,"ru_RU.UTF-8");
   
    initscr();
   
    printw("Среднее арифметическое без учета min и max значений.\n");
    printw("Введите массив (10 целых чисел в одной строке)\n");
    printw("-> ");
   
    scanw("%i %i %i %i %i %i %i %i %i %i", &s[0], &s[1], &s[2], &s[3], &s[4], &s[5], &s[6], &s[7], &s[8], &s[9]);
   
    min = s[0];
    max = s[0];
   
    for(i = 0; i < HB; i++)
    {
    summa += s[i];
   
    if(s[i] > max)
        max = s[i];
       
    if(s[i] < min)
        min = s[i];
    }
   
    summa = summa - min - max;
    spred = (float)summa / (HB - 2);
   
    printw("Минимальный элемент: %i\n", min);
    printw("Максимальный элемент: %i\n", max);
   
    printw("Среднее арифметическое без учета min и max значений: %5.2f\n", spred);
   
    getch();
    endwin();
    return 0;
}

Задача 146.

Напишите программу, которая вычисляет среднее арифметическое ненулевых элементов введенного с клавиатуры массива целых чисел.

/*
    Программа вычисляет среднее арифметическое не нулевых
    элементов введенного с клавиатуры массива целых чисел.
*/

#include "locale.h"
#include "curses.h"
#include "stdio.h"

#define HB 10

main()
{
    int s[HB];
    int i, nel, summa;
    float spred;
    char *log;
   
    i =0;
    nel = 0;
    summa = 0;
    spred = 0.0;
   
    log = setlocale(LC_CTYPE,"ru_RU.UTF-8");
    initscr();
   
    printw("Введите элементы массива (10 целых чисел)\n");
    printw("в одной строке и нажмите <Enter>\n");
    printw("-> ");
   
    scanw("%i %i %i %i %i %i %i %i %i %i", &s[0], &s[1], &s[2], &s[3], &s[4], &s[5], &s[6], &s[7], &s[8], &s[9]);
   
    for(i = 0; i < HB; i++)
    {
    summa += s[i];
    if(s[i] != 0) nel++;
    }
   
    spred = (float) summa / nel;
   
    printw("Сумма элементов массива %i\n", summa);
    printw("Количество не нулевых членов массива %i\n", nel);
    printw("Среднее арифметическое не нулевых членов массива %5.3f", spred);
   
    getch();
    endwin();
    return 0;
}

Задача 145.

Напишите программу, которая выводит минимальный элемент введенного с клавиатуры массива целых чисел. Для доступа к элементам массива используйте указатель.


/*
    Программа выводит минимальный элемент введенного
    с клавиатуры массива целых чисел. Для доступа к
    элементам массива используйте указатель.
*/

#include "locale.h"
#include "curses.h"
#include "stdio.h"

#define HB 5

main()
{
    int s[HB];
    int *min;
    int *p;
    int i;
    char *log;
    log = setlocale(LC_CTYPE,"ru_RU.UTF-8");
   
    initscr();
   
    printw("Поиск минимального элемента массива\n");
    printw("Введите в одной строке элементы массива.\n");
    printw("%i целых чисел, и нажмите <Enter>\n", HB);
    printw("-> ");
   
    p = s;
   
    scanw("%i%i%i%i%i", p++, p++, p++, p++, p++);
    for(i = 0; i < HB; i++)
        printw("s[%i] = %i ", i,s[i]);
       
    printw("\n");
   
    min = s;
    p = s + 1;
   
    for(i = 2; i <= HB; i++)
    {
        if(*p < *min) min = p;
        p++;
    }
   
    printw("Минимальный элемент массива: %i\n", *min);
   
    getch();
    endwin();
    return 0;
}

Задача 144.

Напишите программу, которая выводит минимальный элемент введенного с клавиатуры массива целых чисел.


/*
    Программа выводит минимальный элемент введенного с клавиатуры
    массива целых чисел.
*/

#include "locale.h"
#include "curses.h"
#include "stdio.h"

#define HB 5

main()
{
    int i, min;
    char *log;
    int s[HB];
   
    log = setlocale(LC_CTYPE,"ru_RU.UTF-8");
   
    initscr();
   
    printw("Поиск минимального элемента массива.\n");
    printw("Введите в одной строке элементы массива\n");
    printw("(5 целых чисел) и нажмите <Enter>\n");
   
    // scanw("%i %i %i %i %i", s[0], s[1], s[2], s[3], s[4]);
   
    for(i = 0; i < HB; i++)
    {
    printw("-> ");
    scanw("%i", &s[i]);
    }
   

    min = 0;
   
    for(i = 0; i < HB; i++)
    if(s[i] < s[min]) min = i;
   
    printw("Минимальный элемент массива: ");
    printw("s[%i] = %i", min + 1, s[min]);
   
    getch();
    endwin();
    return 0;
}

Задача 143.

Напишите программу, которая вводит с клавиатуры одномерный массив из 5-ти целых чисел, после чего выводит количество ненулевых элементов. Перед вводом элемента должна выводится подсказка с номером элемента.

/*
    Программа вводит с клавиатуры одномерный массив
    из 5-ти целых чисел, после чего выводит количество
    не нулевых элементов.
*/

#include "locale.h"
#include "curses.h"
#include "stdio.h"

main()
{
    int i, n, k;
    char *log;
   
    i = 0;
    n = 0;
    k = 0;
    log = setlocale(LC_CTYPE,"ru_RU.UTF-8");
   
    initscr();
   
    printw("Вывод массива целых чисел.\n");
    printw("После ввода каждого числа нажмите <Enter>\n");
   
    for(i = 1; i <= 5; i++)
    {
    printw("s[%i] -> ", i);
    scanw("%i", &n);
    if(n != 0) k++;
    }
    printw("В массиве %i ненулевых элементов.\n", k);
    getch();
    endwin();
    return 0;
}

Задача 142.

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


/*
    Программа вычисляет наибольший общий делитель
    двух целых чисел.
*/

#include "locale.h"
#include "curses.h"
#include "stdio.h"

main()
{
    int n1, n2, tmp;
    int nod;
    int r;
    char *log;
   
    log = setlocale(LC_CTYPE,"ru_RU.UTF-8");
    initscr();
    printw("Вычисление наибольшего общего делителя.\n");
    printw("для двух целых чисел.\n");
    printw("Введите в одной строке два числа \n");
    printw("и нажмите <Enter> ");
    scanw("%i%i", &n1, &n2);
    printw("НОД чисел %i и %i - это ", n1, n2);
    /*if(n1 < n2)
    {
    temp = n1; //
    n1 = n2;
    n2 = temp;
    }*/
    while(n1 % n2)
    {
   
    r = n1 % n2;
    n1 = n2;
    n2 = r;
    }
    nod = n2;
    printw("%i\n", nod);
    getch();
    endwin();
    return 0;
}

Задача 141.

Напишите программу, которая вычисляет число "Пи" с заданной пользователем точностью. Для вычисления значения числа "Пи" воспользуйтесь тем, что значение частичной суммы ряда 1-1/3+1/5-1/7+1/9-... при суммировании достаточно большого количества членов приближается к значению Пи/4.

/*
    Программа вычисляет число "Пи" с заданной точностью.
*/

#include "locale.h"
#include "curses.h"
#include "stdio.h"

main()
{
    float p;    // вычисляемое значение "Пи"
    float t;    // точность вычисления
    int n;    // номер члена ряда
    float el;    // значение члена ряда
    char *log;
   
    log = setlocale(LC_CTYPE,"ru_RU.UTF-8");
    initscr();
   
    p  = 0;
    n  = 1;
    el = 1; // начальное значение
   
    printw("Задайте точность вычисления ПИ -> ");
    scanw("%f", &t);
    printw("Вычисление ПИ с точностью  %f\n", t);
   
    while(el >= t)
    {
    el = (float) 1 / (2*n - 1);
    if((n % 2) == 0)
        p -= el;
        else p += el;
    n++;
    }
   
    p = p * 4;
    printw("Значение Пи с точностью %f равно %f\n", t, p);
    printw("Просуммировано %i членов ряда.\n", n);
   
    getch();
    endwin();
    return 0;
}

Задача 140.

Напишите программу, которая выводит на экран таблицу значений функции y=2*x*x - 5*x - 8 в диапазоне от -4 до 4. Шаг изменения аргумента 0,5.

/*
    Программа выводит на экран таблицу значений функции
    y = 5*x*x - 5*x - 8 в диапазоне от -4 до 4. Шаг аргумента
    0.5.
*/

#include "locale.h"
#include <stdio.h>
#include <curses.h>

#define LB -4.0
#define HB 4.0
#define DX 0.5

int main()
{
    int  n, i;
    float x,y;
    char *loc;
    loc = setlocale(LC_CTYPE,"ru_RU.UTF-8");
   
    initscr();
   
    n = (HB - LB)/DX + 1;
    x = LB;
   
    printw("---------------------\n");
    printw("   x      |      y   \n");
    printw("---------------------\n");
    i = 0;
    while(i <= n)
    {
    y = 5 * x * x - 5 * x - 8;
    printw("%5.2f     |   %5.2f\n", x, y);
    x += DX;
    i++;
    }
   
    printw("---------------------\n");
   
    getch();
    endwin();
    return 0;
}

Задача 139.

Напишите программу-таймер, которая по истечении заданного промежутка времени, величина которого вводится с клавиатуры, выдает звуковой сигнал.

/*
    Программа таймер по истечении заданного с клавиатуры
    интервала времени, выдает звуковой сигнал.
   
*/

// Программа пока не написана...

Задача 138.

Напишите программу, которая "задумывает" число в диапазоне от 1 до 10 и предлагает пользователю угадать число за 5 попыток.

/*
    Программа "задумывает" число в диапазоне от 1 до 10
    предлагает пользователю угадать число за 5 попыток.
*/

#include "locale.h"
#include "curses.h"
#include "stdio.h"
#include "time.h"
#include "stdlib.h"

main()
{
    int r, n, i;
    char *log;
    time_t t;
   
    log = setlocale(LC_CTYPE,"ru_RU.UTF-8");
    srand((unsigned)time(&t));
    initscr();
    r = rand() % 10 + 1;
   
    printw("Игра  *** Угадай число ***\n");
    printw("Компьютер **задумал** число от 1 до 10.\n");
    printw("Угадайте его за 5 попыток.\n");
    printw("Введите число и нажмите <Enter>\n");
    i = 1;
    do
    {
    printw("Попытка %i -> ", i);
    scanw("%i", &n);
    if(n == r)
    {
        printw("Вы выиграли! Поздравляю!\n");
        break;
    }
    else
    printw("Нет!\n");
   
    if(i == 5)
        printw("Вы проиграли.\n");
    i++;
    }
    while(i <= 5);
    getch();
    endwin();
    return 0;
}

Задача 137.

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

/*
    Программа вычисляет приближенное значение интегралла
    методом трапеций. После каждого цикла вычислений программа
    выводит вычисленное значение, количество и величину интервалов.
*/

/*
    Программа вычисляет приближенное значение интеграла
    методом трапеций.
*/

#include "locale.h"
#include "curses.h"
#include "stdio.h"
#include "stdlib.h"
#define max(a,b) (a>b) ? a : b
main()
{
    float a, b;
    float dx;
    float x;
    float y1, y2;
    float summa;
    float pl;
    int   n, i;
    char *loc;
   
    loc = setlocale(LC_CTYPE, "ru_RU.UTF-8");
   
    initscr();
   
    printw("Приближенное значение интеграла\n");
    printw("Введите начало отрезка -> ");
    scanw("%f", &a);
   
    printw("Конец отрезка -> ");
    scanw("%f", &b);
   
    printw("Прирощение аргумента -> ");
    scanw("%f", &dx);
   
    n = (b - a) / dx + 1;
    summa = 0;
    x = a;
    i = 0;
   
    do
    {
    y1 = 5 * x * x - x + 2;
    x += dx;
    y2 = 5 * x * x - x + 2;
    summa += (y2 + y1) * dx / 2;
    printw("->>y1 = %5.2f, y2 = %5.2f, i = %i, summa = %5.2f, x = %5.2f *** ", y1, y2, i, summa, x);
    i++;
    }
    while(i <= n);

    printw("max %5.2f\n", max(a,b));
    printw("Значение интеграла равно -> %5.2f", summa);

    getch();
    endwin();
    return 0;
   
}