C — Прошу помогите решить задачку C++!


C++Builder

Вопросы программирования => Общие вопросы программирования в C++Builder => Тема начата: mi84 от 10 Январь 2008, 19:22:52

Название: Помогите решить задачи на C++
Отправлено: mi84 от 10 Январь 2008, 19:22:52

int chislo, delitel;

void main(void)
<
printf («Enter a chislo «);
scanf («%d», &chislo);
printf («Enter a delitel «);
scanf («%d», &delitel);

while ((chislo%delitel)!=0)
chislo++;

Вы первый курс? Что это за ВУЗ с такой системой обучения.

Особенно прикалывает задача #22. Может вы ошиблись, не используя функцию strcat. :)

to [h312]
Справедливо (если забыть о действительно правильном ответе)
Но это только упрощает алгоритм ret = (int(min / x) + 1)*x;

см. условие задачи №2
>Напечатать минимальное число, большее 200, которое нацело делится на 17.
решение cout Название: Re: Помогите решить задачи на C++
Отправлено: [h312] от 11 Январь 2008, 19:55:58

to mi84
Если вы знали, что их решите, зачем тогда беспокоить лишний раз народ.

Чисто ради любобытства: как вы решали задачу#24,там есть один маленький подвох.

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

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

1. В одномерном массиве, состоящем из п элементов, вычислить:
— произведение отрицательных элементов массива;
— сумму положительных элементов массива, расположенных до
максимального элемента. Изменить порядок следования элементов в массиве на обратный.

2. Дана целочисленная квадратная матрица. Определить: суммы четных элементов каждого столбца; поменять местами элементы строки 1с и главной диагонали.


3. Имеется строка, содержащая буквы и цифры. Вывести на экран длину наибольшей последовательности цифр, идущих подряд. После каждой буквы XV вставить точку.

4. Заданы 3 матрицы А(3,3), В(4,4), С(5,5). Выяснить и напечатать, сколько из них являются симметричными. Матрица называется симметричной, если транспонированная матрица равна исходной. Транспонирование матриц оформить в виде функции.

5. «Телефон». Структура записи: фамилия абонента, год установки телефона, номер телефона, плата за месяц. Написать программу, которая определяет количество установленных телефонов с 2000 года с указанием фамилии абонентов. По введенному номеру телефона вывести информацию об абоненте. :'(

Решения задач по программированию на C++

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

Если вы не знакомы с программированием на C++,то почитайте статью о том, что нужно для начала программирования на C++.

Решения задач по программированию на языке C++

Программа для решения факториала на C++ — в статье описана реализация алгоритмов рекурсивного нахождения значения факториала и через циклы на языке программирования C++.

Программа для решения квадратных уравнений на C++ — в статье описывается как написать программу для решения квадратных уравнений на C++, нахождение дискриминанта, проверка на существование решения, нахождение двух корней.

Алгоритм пузырьковой сортировки одномерного массива на C++ — в статье описывается сам алгоритм пузырьковой сортировки, показывается как отсортировать массив методом пузырьковой сортировки на C++.

Считывание строк из файла и запись в массив на C++ — в статье описывается как работать с файлами, как считывать данные из файла в массив.

QFile и файлы. Чтение и запись строк в файл. — а здесь описано как работать с записью и считыванием из файла с помощью фреймворка Qt.

Найти максимальный и минимальный элемент массива на C++ — в статье подробно разобрано решение задачи по нахождению минимального и максимального элемента в массиве.

Рекурсивное нахождение чисел Фибоначчи на C++ — в статье описано решение задачи по нахождению чисел Фибоначчи рекурсивным способом.

Проверить, является ли строка палиндромом на C++ — в статье рассказывается что такое палиндром, как реализовать функцию для проверки строки на палиндромность. И приведен код программы, использующей эту функцию.


Этот список со временем будет пополняться новыми решениями.

Небольшая задача на C/C++ для разминки

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

Используя только одну переменную типа unsigned char (8-битный по условию), ровно один оператор цикла и не используя условного оператора if и условной тернарной операции (?:), создать цикл ровно из 256 шагов, тело которого, даже если оно пусто, исполняется ровно 256 раз. В частном случае такой цикл может вывести все целые числа от 0 до 255 включительно.

Решение задачи

Интересно, что совокупность приведенных в задаче условий требует применения цикла do и не позволяет обойтись операторами while или for. Именно применение последних двух циклов является основной ошибкой при решении данной задачи, приводящей в большинстве случаев к пропуску шага (выполнению 255 шагов вместо 256 требуемых в услови) или к созданию бесконечного цикла. На такую ошибку наталкивает то, что циклы for/while используются значительно чаще do, я где-то встречал субъективную оценку соотношения 95%:5%.

Цикл повторяет выполнение двух действий: проверку условия и исполнение тела. Способом чередования этих действий и различаются циклы с предусловием (while) и с постусловием (do). Между циклами много общего, в частности, используя условный оператор if и один из видов цикла всегда можно сформировать конструкцию, которая будет вести себя как вторая разновидность цикла (например, из while и if можно написать do). Отсюда и одно из требований задачи: не использовать условный оператор if. Тем не менее различие в порядке действий наделяет две разновидности циклов различием в свойствах. Во-первых, тело цикла с предусловием может не выполниться ни разу, в то время как тело цикла с постусловием выполняется всегда хотя бы один раз. Во-вторых, в циклах for/while проверка условия выполняется на 1 раз больше, чем тело цикла, а в do тело цикла выполняется столько же раз, сколько проверка условия или на 1 раз больше если тело принудительно прерывает цикл. Поэтому «ровно 256 шагов» в условии задачи является избыточным, а «тело которого,… исполняется ровно 256 раз» — нет. Вообще, формулировка «цикл из 256 шагов» — уязвима: если условие проверялось 256 раз, а тело выполнялось 255 раз, можно ли утвержать, что цикл состоит только из 255 шагов? Понятно, что проверка условия может быть операцией любой сложности и выполнять любые побочные действия. Ранее было сформулировано промежуточное ограничение: запрет на выполнение требуемых операций тела цикла (например, вывода) при проверке условия. Однако требование исполнения именно тела цикла ровно 256 раз является более строгим, конкретным и, в кончном итоге, корректным. На более абстрактном уровне преобразование условия в последовательность «действие, затем условие», где действие и условие связаны операциями последовательного вычисления (,), логическими операциями или иным способом, фактически делает проверку условия не началом итерации цикла с предусловием и превращает его в цикл с постусловием.

Наконец, идиомой цикла из N шагов в C/C++ является: for (int i = 0; i

C — Прошу помогите решить задачку C++!

Открыта запись на вторую часть курса по анонимности и безопасности в сети интернет » Paranoid II » от команды codeby . Анонимные роутеры, Подъём, настройка и администрирование Tor-ноды, Работа с железом ПК, Удаление аппаратных закладок, Минимизация рисков, Авторские разработки и многое другое. Подробнее .

Напоминаем, что 1 декабря стартует курс » Тестирование Веб-Приложений на проникновение с нуля » от команды codeby . Общая теория, подготовка рабочего окружения, пассивный фаззинг и фингерпринт, активный фаззинг, уязвимости, пост-эксплуатация, инструментальные средства, Social Engeneering и многое другое. Подробнее .

Задачи и решение. С++

На этой странице собраны все задачи по темам уроков, размещенных на нашем сайте. К каждой задаче прилагается наш вариант решения. Постарайтесь всё же решать их самостоятельно и только потом сравнивать наш исходный код со своим. “Хочешь научиться программировать – программируй”!

Больше практических заданий с решениями найдёте здесь.

Рекомендуем посетить Сайт для юных программистов – где вы найдете уроки по различным языкам программирования (в том числе для детей), 3D-моделированию, Linux и др.


Простейшие задания для изучения C++ и решения

Вначале задания, в конце страницы — решения для С++.

Задания для работы с вводом/выводом.

1) Создайте 5 переменных типа char, предложите пользователю ввести слово из пяти букв и покажите эти символы (слово) на экран. (Символы вводить латиницей, т.к. кириллица будет отображаться некорректно.)

2) Вывести на экран текст, состоящий из заголовка и стихотворения:
А.С.Пушкин «Вот север, тучи, нагоняя. «
Вот север, тучи нагоняя,
Дохнул, завыл – и вот сама
Идет волшебница-зима,
Пришла, рассыпалась; клоками
Повисла на суках дубов,
Легла волнистыми коврами
Среди полей вокруг холмов.
Брега с недвижною рекою
Сравняла пухлой пеленою;
Блеснул мороз, и рады мы
Проказам матушки-зимы.

3) Пользователь должен ввести 4 цифры. Нужно вывести на экран эти 4 цифры в обратном порядке. Пример: введены цифры: 9748 — отобразить: 8479.

Задания для работы с условными операторами

4) Предложить пользователю выбрать один из трёх фруктов и вывести цвет выбранного фрукта. Слива — синий, абрикос — жёлтый, мандарин — оранжевый.

5) Предложить выбор модели автомобиля : Mercedes-Benz CLA, Audi A6, BMW X5, Lexus RX 270, После выбора вывести стоимость, соответственно: 2 млн. рублей, 2,5 млн. рублей, 3,5 млн. рублей, 2,3 млн. рублей. Использовать оператор switch case.

6) Пользователь выбирает на каком языке нужно вывести названия дней недели. Программа выводит дни недели на русском или на английском по выбору пользователя. (Английские названия, начиная с понедельника: monday, tuesday, wednesday, thursday, friday, saturday, sunday).

Задания для работы с циклами

7) Пользователь вводит номер текущего месяца. Выведите на экран следующий. Если пользователь ввёл число меньше 1 или больше 12, укажите на ошибку и запросите месяц заново.

Задания для работы с массивами и строками

8) Запросить ввод имён нескольких человек на английском. Пользователь должен указать число человек и потом написать их имена на английском. Далее предложить на выбор оформление графика дежурств: на неделю, на две недели, на месяц. Пользователь должен получить график по выбору. Например:
1 Ivan
2 Vasiliy
3 Ivan
4 Vasiliy и т.д.

Помогите решить олимпиадную задачу по информатике


Условие : Дано массив чисел. За один ход разрешается вычеркнуть любую последовательность одинаковых цифр, идущих подряд . Сколько минимально ходов нужно, чтобы зачеркнуть все элементы массива ? Длина массива не больше 200.

Мой код(простите за плохой код, я только начинаю заниматься программированием) :

Помогите придумать более эффективный алгоритм, перебор рекурсией не проходит по времени (1 секунда)

1 ответ 1

Идея достаточно простая. Ограничение всего 200, поэтому ничего сложного можно не писать (а можно и значительно оптимальнее решить эту задачу).

Всего у нас не более 200*200/2 = 20к отрезков. Если мы в каждом отрезке просто переберём что мы убираем. То это не большее 200 операций. База динамики — единичные отрезки уходят за 1 операцию.

Или более формально.

Естественно, вычислять надо от меньшей длины к больше. Примерный код

Ответ — значение F[0][N-1] .

Полный код не пишу, т.к. считаю что олимпиады самому решать надо.

Решение задач на С++

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

Условный оператор

Задача A. Максимум из двух чисел
Даны два целых числа, каждое число записано в отдельной строке. Выведите наибольшее из данных чисел.

Задача B. Високосный год
Требуется определить, является ли данный год високосным. (Напомним, что год является високосным, если его номер кратен 4, но не кратен 100, а также если он кратен 400.)


Задача C. Тестирующая система
В условии одной из задач на этом сайте написано: “Если данное четырехзначное число является симметричным, выведите 1, иначе выведите любое другое целое число”. Для проверки задачи используются заранее подготовленные примеры и правильные ответ на них. Школьнику кажется, что он решил эту задачу, но тестирующая система почему-то не принимает его решение. Школьник думает, что это происходит оттого, что он выводит не то любое другое число, которое записано в правильных ответах.
Напишите программу, которая по ответу, записанному в тестирующей системе и по ответу школьника определяет, верно ли школьник решила задачу. Программа получает на вход два числа: ответ, записанный в тестирующей системе и ответ школьника. Программа должна вывести YES, если школьник дала верный ответ и NO в противном случае.

Задача D. Знак числа
В математике функция sign(x) (знак числа) определена так:
sign(x) = 1, если x > 0,
sign(x) = -1, если x

  1. int n;
  2. cin>>n;
  3. if (n>0)cout if (n if (n==0)cout * This source code was highlighted with Source Code Highlighter .

Задача E. Какое из чисел больше?
Даны два целых числа, каждое записано в отдельной строке. Программа должна вывести число 1, если первое число больше второго, число 2, если второе больше первого, или число 0, если они равны.

  1. int n1,n2;
  2. cin>>n1>>n2;
  3. if (n1>n2 )cout if (n2>n1 )cout if (n1==n2 )cout * This source code was highlighted with Source Code Highlighter .

Задача F. Максимум из трех
Даны три числа, каждое записано в отдельной строке. Выведите наибольшее из данных чисел (программа должна вывести ровно одно целое число).

Задача G. Ладья
Требуется определить, бьет ли ладья, стоящая на клетке с указанными координатами (номер строки и номер столбца), фигуру, стоящую на другой указанной клетке. Вводятся четыре числа: координаты ладьи (два числа) и координаты другой фигуры (два числа), каждое число вводится в отдельной строке.

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

Задача H. Слон
Требуется определить, бьет ли слон, стоящий на клетке с указанными координатами (номер строки и номер столбца), фигуру, стоящую на другой указанной клетке. Вводятся четыре числа: координаты слона и координаты другой фигуры.

  1. int x1,y1,x2,y2;
  2. cin>>x1>>y1>>x2>>y2;
  3. int dx = x1 — x2;
  4. int dy = y1 — y2;
  5. if (dx if (dy if (dx == dy)
  6. cout «YES» ;
  7. else
  8. cout «NO» ;

* This source code was highlighted with Source Code Highlighter .

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

Задача I. Ферзь
Требуется определить, бьет ли ферзь, стоящий на клетке с указанными координатами (номер строки и номер столбца), фигуру, стоящую на другой указанной клетке. Вводятся четыре числа: координаты ферзя и координаты другой фигуры.

  1. int x1,y1,x2,y2;
  2. cin>>x1>>y1>>x2>>y2;
  3. int dx=x1-x2;
  4. int dy=y1-y2;
  5. if (dx if (dy if (x1==x2 || y1==y2 || dx==dy)
  6. cout «YES» ;
  7. else
  8. cout «NO» ;

* This source code was highlighted with Source Code Highlighter .

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


Задача J. Король
Поле шахматной доски определяется парой чисел (a, b), каждое от 1 до 8, первое число задает номер столбца, второе – номер строки. Заданы две клетки. Определите, может ли шахматный король попасть с первой клетки на вторую за один ход.
Даны 4 целых числа от 1 до 8 каждое, первые два задают начальную клетку, вторые два задают конечную клетку. Начальная и конечная клетки не совпадают. Числа записаны в отдельных строках. Программа должна вывести YES, если из первой клетки ходом короля можно попасть во вторую, или NO в противном случае.

  1. int x1,y1,x2,y2;
  2. cin>>x1>>y1>>x2>>y2;
  3. int dx = x1 — x2;
  4. int dy = y1 — y2;
  5. if (dx if (dy if (dx + dy == 1)
  6. cout «YES» ;
  7. else
  8. if (dx + dy == 2 && dx == 1 && dy == 1)
  9. cout «YES» ;
  10. else
  11. cout «NO» ;

* This source code was highlighted with Source Code Highlighter .

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

Задача K. Конь
Требуется определить, бьет ли конь, стоящий на клетке с указанными координатами (номер строки и номер столбца), фигуру, стоящую на другой указанной клетке. Вводятся четыре числа: координаты коня и координаты другой фигуры.

Задача L. Шоколадка
Требуется определить, можно ли от шоколадки размером n × m долек отломить k долек, если разрешается сделать один разлом по прямой между дольками (то есть разломить шоколадку на два прямоугольника). Вводятся 3 числа: n, m и k; k не равно n × m. Гарантируется, что количество долек в шоколадке не превосходит 30000.

Задача M. Фишки
В каждую крайнюю клетку квадратной доски поставили по фишке. Могло ли оказаться, что выставлено ровно k фишек? (Например, если доска 2 x 2, то выставлено 4 фишки, а если 6 x 6 — то 20).
Вводится одно натуральное число k.

Задача N. Уравнение
Решить в целых числах уравнение ax + b = 0. Вводятся 2 числа: a и b. Необходимо вывести все решения, если их число конечно, “NO” (без кавычек), если решений нет, и “INF” (без кавычек), если решений бесконечно много.

Задача O. Сложное уравнение
Решить в целых числах уравнение ( ax + b ) : ( cx + d ) = 0. Вводятся 4 числа: a, b, c и d; c и d не равны нулю одновременно. Необходимо вывести все решения, если их число конечно, “NO” (без кавычек), если решений нет, и “INF” (без кавычек), если решений бесконечно много.

Задача P. Сдача
Товар стоит a руб. b коп. За него заплатили c руб. d коп. Сколько сдачи требуется получить? Вводятся 4 числа: a, b, c и d. Необходимо вывести 2 числа: e и f, число рублей и копеек, соответственно.

  1. int r1,k1,r2,k2;
  2. cin>>r1>>k1>>r2>>k2;
  3. int rRes = r2 — r1;
  4. int kRes = k2 — k1;
  5. if (kRes // rRes = rRes — 1;
  6. >
  7. cout ‘ ‘ * This source code was highlighted with Source Code Highlighter .

Задача Q. Мороженое
В кафе мороженое продают по три шарика и по пять шариков. Можно ли купить ровно k шариков мороженого?

Задача R. Котлеты
На сковородку одновременно можно положить k котлет. Каждую котлету нужно с каждой стороны обжаривать m минут непрерывно. За какое наименьшее время удастся поджарить с обеих сторон n котлет? Вводятся 3 числа: k, m и n.

  1. int res = 0;
  2. if (n else <
  3. res = 2 * n / k * m;
  4. if (2 * n % k !=0)
  5. res += m;
  6. >
  7. cout * This source code was highlighted with Source Code Highlighter .

Задача S. Координатные четверти
Даны координаты двух точек на плоскости, требуется определить, лежат ли они в одной координатной четверти или нет (все координаты отличны от нуля). Вводятся 4 числа: координаты первой точки (x1, y1) и координаты второй точки (x2, y2).


Задача T. Существует ли треугольник?
Даны три натуральных числа a, b, c, записанные в отдельных строках. Определите, существует ли треугольник с такими сторонами. Если треугольник существует, выведите строку YES, иначе выведите строку NO.

Задача U. Количество равных из трех
Даны три целых числа, записанных в отдельных строках. Определите, сколько среди них совпадающих.
Программа должна вывести одно из чисел: 3 (если все совпадают), 2 (если два совпадают) или 0 (если все числа различны).

  1. int a,b,c;
  2. cin>>a>>b>>c;
  3. if (a == b && b == c)
  4. cout else
  5. if (a == b || b == c || a == c)
  6. cout else
  7. cout * This source code was highlighted with Source Code Highlighter .

Задача V. Квадратное уравнение
Найдите все решения квадратного уравнения ax2 + bx + c = 0.
Вводятся действительные числа a, b, c, a не равно 0.
Выведите два действительных числа, если уравнение имеет два корня, одно действительное число – при наличии одного корня. При отсутствии действительных корней ничего выводить не нужно.

Задача W. Тип треугольника
Определите тип треугольника (остроугольный, тупоугольный, прямоугольный) с данными сторонами. Даны три натуральных числа – стороны треугольника.
Необходимо вывести одно из слов: rectangular для прямоугольного треугольника, acute для остроугольного треугольника, obtuse для тупоугольного треугольника или impossible, если входные числа не образуют треугольника.

Задача X. Коровы
По данному числу n закончите фразу «На лугу пасется. » одним из возможных продолжений: «n коров», «n корова», «n коровы», правильно склоняя слово «корова».
Дано число n (n

  1. int n;
  2. cin>>n;
  3. if ( n%10==0 || (n%10>=5 && n%10 =11 && n » korov» ;
  4. else
  5. if (n%10==1)
  6. cout » korova» ;
  7. else
  8. cout » korovy» ;

* This source code was highlighted with Source Code Highlighter .

Задача Y. Билеты на метро
Билет на одну поездку в метро стоит 15 рублей, билет на 10 поездок стоит 125 рублей, билет на 60 поездок стоит 440 рублей. Пассажир планирует совершить n поездок. Определите, сколько билетов каждого вида он должен приобрести, чтобы суммарное количество оплаченных поездок было не меньше n, а общая стоимость приобретенных билетов – минимальна.
Дано одно число n — количество поездок. Выведите три целых числа, равные необходимому количеству билетов на 1, на 10, на 60 поездок.

  1. const int cost1 = 15, cost10 = 125, cost60 = 440;
  2. int n, k1, k10, k60;
  3. cin >> n;
  4. k60 = n / 60;
  5. n %= 60;
  6. k10 = n / 10;
  7. k1 = n % 10;
  8. if (k1 * cost1 > cost10)
  9. <
  10. k1 = 0;
  11. k10++;
  12. >
  13. if (k1 * cost1 + k10 * cost10 > cost60)
  14. <
  15. k1 = 0;
  16. k10 = 0;
  17. k60++;
  18. >
  19. cout » » » » * This source code was highlighted with Source Code Highlighter .

Задача Z. Билеты на метро – 2
Билет на одну поездку в метро стоит 15 рублей, билет на 5 поездок стоит 70 рублей, билет на 10 поездок стоит 125 рублей, билет на 20 поездок стоит 230 рублей, билет на 60 поездок стоит 440 рублей. Пассажир планирует совершить n поездок. Определите, сколько билетов каждого вида он должен приобрести, чтобы суммарное количество оплаченных поездок было не меньше n, а общая стоимость приобретенных билетов – минимальна.
Дано одно число n — количество поездок. Выведите пять целых чисел, равные необходимому количеству билетов на 1, на 5, на 10, на 20, на 60 поездок. Если для какого-то данного n существует несколько способов приобретения билетов одинаковой стоимости, необходимо вывести ту комбинацию билетов, которая дает большее число поездок.

  1. const int cost1 = 15, cost5 = 70, cost10 = 125, cost20 = 230, cost60 = 440;
  2. int n, k1, k5, k10, k20, k60;
  3. cin >> n;
  4. k60 = n / 60;
  5. n %= 60;
  6. k20 = n / 20;
  7. n %= 20;
  8. k10 = n / 10;
  9. n %= 10;
  10. k5 = n/5;
  11. k1 = n % 5;
  12. if (k1 * cost1 >= cost5)
  13. <
  14. k1 = 0;
  15. k5++;
  16. >
  17. if (k1 * cost1 + k5 * cost5 >= cost10)
  18. <
  19. k1 = 0;
  20. k5 = 0;
  21. k10++;
  22. >
  23. if (k1 * cost1 + k5 * cost5 + k10 * cost10 >= cost20)
  24. <
  25. k1 = 0;
  26. k5 = 0;
  27. k10 = 0;
  28. k20++;
  29. >
  30. if (k1 * cost1 + k5 * cost5 + k10 * cost10 + k20 * cost20 >= cost60)
  31. <
  32. k1 = 0;
  33. k5 = 0;
  34. k10 = 0;
  35. k20 = 0;
  36. k60++;
  37. >
  38. cout » » » » » » » » * This source code was highlighted with Source Code Highlighter .
  1. int m,n,x,y;
  2. cin>>m>>n>>x>>y;
  3. if (x!=1) cout » » if (x!=m) cout » » if (y!=1) cout » » if (y!=n) cout » » * This source code was highlighted with Source Code Highlighter .

Задача AB. Апельсины бочками
Бизнесмен Василий после прочтения известной книги решил открыть новый бизнес – отгружать апельсины бочками. Партнерам важно знать сколько именно бочек апельсинов отгружается каждый день. Мобильный телефон Василия поддерживает только транслит, поэтому он передает сообщения вида «N bochek» . Например, «3 bochki» или «1 bochka» .
Напишите программу, которая выбирает правильное слово (из «bochka» , «bochek» , «bochki» ) в зависимости от N (0 ≤ N ≤ 1000).

Задача AC. Четные и нечетные числа
Даны три целых числа A, B, C. Определить, есть ли среди них хотя бы одно четное и хотя бы одно нечетное.
A, B, C не превышают по модулю 10000. Вывести – «YES» или «NO» .

Задача AD. Римская система счисления
Дано число X (1 ≤ X ≤ 100). Требуется перевести это число в римскую систему счисления.


  1. int x;
  2. cin>>x;
  3. int x1,x10;
  4. x1=x%10;
  5. x10=x/10;
  6. if (x10==1) cout «X» ;
  7. if (x10==2) cout «XX» ;
  8. if (x10==3) cout «XXX» ;
  9. if (x10==4) cout «XL» ;
  10. if (x10==5) cout «L» ;
  11. if (x10==6) cout «LX» ;
  12. if (x10==7) cout «LXX» ;
  13. if (x10==8) cout «LXXX» ;
  14. if (x10==9) cout «XC» ;
  15. if (x10==10) cout «C» ;
  16. if (x1==1) cout «I» ;
  17. if (x1==2) cout «II» ;
  18. if (x1==3) cout «III» ;
  19. if (x1==4) cout «IV» ;
  20. if (x1==5) cout «V» ;
  21. if (x1==6) cout «VI» ;
  22. if (x1==7) cout «VII» ;
  23. if (x1==8) cout «VIII» ;
  24. if (x1==9) cout «IX» ;

* This source code was highlighted with Source Code Highlighter .

Задача AE. Упорядочить три числа
Дано три числа, записанный в отдельных строках. Упорядочите их в порядке неубывания. Программа должна считывать три числа a, b, c, затем программа должна менять их значения так, чтобы стали выполнены условия a

  1. int a,b,c,t;
  2. cin>>a>>b>>c;
  3. if (a>b) swap(a,b);
  4. if (a>c) swap(a,c);
  5. if (b>c) swap(b,c);
  6. cout » » * This source code was highlighted with Source Code Highlighter .

Задачи по программированию на C++

Задача 1. Телешоу. Решение на C++

В новом интеллектуальном телешоу участнику, проходящему в суперфинал, предлагается следующая игра: на каждом из n секторов большого барабана записывается буква латинского алфавита li. После минуты на размышления игрок указывает одну из позиций на барабане i. Его выигрыш вычисляется по такому правилу: для каждой позиции j меньшее из расстояний по и против часовой стрелке от i до j, измеренное в секторах, умножается на абсолютною величину разности номеров в алфавите букв li и lj , после чего все такие величины суммируются.

А Вы можете написать программу, находящую способ получения наибольшего выигрыша?

Первая строка входного файла INPUT.TXT содержит натуральное число n (1 ≤ n ≤ 100000) — размер барабана. Во второй строке задаются разделенные пробелами строчные латинские буквы, записанные на барабане.

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

Задача 2. Треугольники — 4. Решение на C++

У Сени есть шоколадка, составленная из нескольких прилегающих друг к другу плиточек в форме правильных треугольников. Его брат Женя нашел эту шоколадку и решил сделать ее треугольной, съев все лишнее (ведь треугольные шоколадки намного вкуснее). Сколькими способами он может это сделать?

Например, из такой шоколадки:

можно сделать треугольную шоколадку со стороной 1 шестью способами или шоколадку со стороной 2 двумя способами. Итого восемь способов.

Входные данные

Форма шоколадки задается ее границей в порядке обхода по часовой стрелке. Первая строка входного файла INPUT.TXT содержит число n — количество отрезков на границе (1 ≤ n ≤ 5000). Далее n чисел от 1 до 6, задающих направление движения по границе (см. рисунок).


Выходные данные

В выходной файл OUTPUT.TXT выведите одно число — количество способов.

Задача 3. Узор. Решение на C++

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

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

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

Входные данные

В первой строке входного файла INPUT.TXT записаны три числа: N, M (размеры комнаты) и K (количество доступных видов плитки). 1

— это число от 1 до 4, описывающее форму плитки (см. рисунок выше)

— это натуральное число, не превосходящее 10000, задающее стоимость одной плитки такого типа

— это от одного до трех чисел 0 или 1. Количество чисел совпадает с количеством квадратиков, из которых состоит плитка. Числа задают цвета квадратиков плитки в том порядке, в каком квадратики пронумерованы на рисунке.

C — Прошу помогите решить задачку C++!

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!

  • Название темы должно отражать её суть! (Не следует добавлять туда слова «помогите», «срочно» и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например «школьная задача», «задача из учебника» и т.п.), не нужно указывать ее сложность («простая задача», «легкий вопрос» и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку «Код»). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик — один вопрос!
  • В данном разделе запрещено поднимать темы , т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой «Пометить как решённый», которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

Цукерберг рекомендует:  Самые распространенные ошибки iOS-разработчиков
Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих