Вопрос задан 30.05.2018 в 15:40. Предмет Информатика. Спрашивает Luzina Nadezhda.

Сколько точек с целыми координатами попадают в треугольникAOB находящийся в первой четверти?

НАПИШИТЕ ПРОГРАММУ В ПАСКАЛЬ .ПОЖАЛУЙСТА!!!!!!!!!!!!!!!!!!!СРОЧНО!!!!!!!!!!!!!
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Зверев Антон.

Решение далеко не самое эффективное, но зато очень простое:
var a,b,x,y,k:integer;
begin
write('a, b:');
readln(a,b);
k:=0;
for x:=0 to a do
 for y:=0 to b do
  if y<=-(x-a)*b/a then k:=k+1;
writeln('k = ',k);
end.

Пример:
a, b:
4 3
k = 11

PS. Точки, лежащие на осях координат и на стороне AB, тоже подсчитываются. Если они не нужны, то циклы начинайте с 1 и в условии используйте строгое равенство.

0 0
Отвечает Рожкова Маруся.

Во вложении приведен рисунок, из которого видно принятое расположение треугольника. Треугольник прямоугольный и уравнение его гипотенузы можно получить из формулы уравнения прямой в отрезках.
Алгоритм решения следующий.
1. Вводим значения a и b.
2. Очищаем переменную счетчика количества k нулём.
3. В цикле по х от 0 с шагом 1 до целой части b:
- вычисляем целую часть y, найденного из приведенного уравнения
- увеличиваем k на эту целую часть плюс 1
4. Выводим значение k.

Проверим этот алгоритм для нашего рисунка.
a=3, b=4, y=³/₄(4-x), k=0
Для х=0 получаем у=3 и увеличиваем k на 3+1=4, т.е. k=4
Для х=1 получаем у=2.25, целая часть 2 и увеличиваем k на 2+1=3, т.е. k=7
Для х=2 получаем у=1.5, целая часть 1 и увеличиваем k на 1+1=2, т.е. k=9
Для х=3 получаем у=0.75, целая часть 0 и увеличиваем k на 0+1=1, т.е. k=10
Для х=4 получаем у=0, целая часть 0 и увеличиваем k на 0+1=1, т.е. k=11
Значение 11 выводим.
Из рисунка видно, что точек действительно 11.

1. Современное решение

// PascalABC.NET 3.2, сборка 1425 от 22.04.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var a,b:real;
  Write('Введите значения a и b через пробел: '); Read(a,b);
  Writeln(Range(0,Trunc(b)).Select(x->Trunc(a/b*(b-x))+1).Sum)
end.

Контрольный пример
Введите значения a и b через пробел: 3 4.0
11

2. Школьное решение в стиле ТурбоПаскаль 1983г.

var
  a,b,y:real;
  k,x:integer;
begin
  Write('Введите значения a и b через пробел: '); Read(a,b);
  k:=0;
  for x:=0 to Trunc(b) do begin
    y:=a/b*(b-x);
    k:=k+Trunc(y)+1
    end;
  Writeln(k)
end.




0 0

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос