М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
azz077
azz077
07.05.2023 03:58 •  Информатика

Здача С++
Точка пересечения прямых
На плоскости даны две прямые. Каждая прямая задается парой точек, через которые она проходит.

Требуется установить, пересекаются ли эти прямые, и найти координаты точки пересечения.

Формат входных данных
Первая строка входных данных содержит четыре целых числа - координаты двух точек, через которые проходит первая прямая. Гарантируется, что эти две точки различны.

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

Координаты каждой точки - целые числа, по модулю не превышающие 1000.

Формат результата
Если прямые не пересекаются, выведите одно число 0. Если прямые совпадают, выведите 2. Если прямые пересекаются ровно в одной точке, то выведите сначала число 1, а затем два вещественных числа - координаты точки пересечения с точностью до шести знаков после запятой.

Примеры
Входные данные
1 1 2 2
1 10 2 11
Результат работы
0
Входные данные
0 0 1 1
1 0 -1 2
Результат работы
1 0.5 0.5

👇
Открыть все ответы
Ответ:
ektgdb
ektgdb
07.05.2023

1. При вводе числа 15 программа выведет число 4.

2. Наименьшие значения A, при которых программа выведет верный ответ, равны 2 и 3.

3. В программе допущена типичная для начинающих программистов ошибка «смещения кадра»: значение переменной K, необходимое при первом выполнении цикла, присваивается до начала цикла, а значение для следующего оборота цикла вычисляется в конце предыдущего оборота. В результате, при завершении цикла K имеет значение больше, чем нужно. Вторая ошибка – неверный шаг изменения K. «Идеальная» программа решения этой задачи должна выглядеть так (приведён пример на языке Бейсик):

DIM A,S,K AS INTEGER

INPUT A

S = 0

K = −1

WHILE S <= A

K = K + 2

S = S + K*(K+1)

WEND

PRINT K

END

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

Первая ошибка:

k := k+1;

Исправленная строка:

k := k+2

Вторая ошибка:

writeln(k)

Исправленная строка:

writeln(k-2)

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

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

4,5(32 оценок)
Ответ:
toniskvortsov1
toniskvortsov1
07.05.2023

Объясняю: создаёте переменную, лучше целочисленную (int foo), после чего можно либо перевести число в строку и найти сумму цифр путём сложения двух символов (sum = bar[0] - '0' + bar[1] - '0'), либо с остатка от деления (конечно, это не очень красиво, но если известно, что число двузначное, то можно так: sum = (foo / 10) + (foo % 10)). Дальше банальная обработка условия: <если сумма чётная (if (sum % 2 == 0)), то увеличить число на 2 (foo += 2), иначе (else) уменьшить число на 2 (foo -= 2)>. После этого можете вывести результат на монитор (printf("%d\n", &sum)). :)

4,5(95 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ