17.12.2018, 02:37 [+3 UTC]
в нашей команде: 3 237 чел. | участники онлайн: 4 (рекорд: 19)

:: РЕГИСТРАЦИЯ

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.58 (11.12.2018)

Общие новости:
13.12.2018, 11:36

Форум:
16.12.2018, 14:55

Последний вопрос:
16.12.2018, 22:36

Последний ответ:
16.12.2018, 21:15

Последняя рассылка:
17.12.2018, 00:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
17.01.2011, 20:17 »
Denis Loran
Все работает, спасибо [вопрос № 181923, ответ № 265481]
25.02.2016, 17:03 »
YwaN
Грамотная консультация. Хороший и отзывчивый специалист. [вопрос № 188847, ответ № 273404]

РАЗДЕЛ • Pascal / Delphi / Lazarus

Создание программ на языках Pascal, Delphi и Lazarus.

[администратор рассылки: Зенченко Константин Николаевич (Старший модератор)]

Лучшие эксперты в этом разделе

Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 826
puporev
Статус: 1-й класс
Рейтинг: 33
Степанов Иван /REDDS
Статус: 4-й класс
Рейтинг: 26

Перейти к консультации №:
 

Консультация онлайн # 193385
Раздел: • Pascal / Delphi / Lazarus
Автор вопроса: privet921 (Посетитель)
Отправлена: 12.06.2018, 15:09
Поступило ответов: 1

Здравствуйте! Прошу помощи в следующем вопросе:

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

Вопрос перенесен из раздела • Информатика
--------

• Отредактировал: Зенченко Константин Николаевич (Старший модератор)
• Дата редактирования: 13.06.2018, 00:20

-----
 Прикрепленный файл (кликните по картинке для увеличения):

Состояние: Консультация закрыта

Ответ # 276600 от mklokov (6-й класс)

Здравствуйте, privet921!
Код может быть таким:

uses GraphABC;
const space=10; // Зазор от кромки окна
      pw=3; // Толщина линии
var MaxHeight, MaxSize, a, r1: integer; R, G, B: byte; c: color; 
    ch: char; ok: boolean;
begin
  MaximizeWindow;
  MaxHeight:=WindowHeight-2*space;
  SetWindowTitle('Рисуем квадратик:)');
  writeln('Введите интенсивность красной, зелёной и синей составляющих цвета (RGB):');
  readln(R, G, B);
  c:=rgb(R, G, B);
  SetPenColor(c);
  SetPenWidth(pw);
  repeat
    ClearWindow; 
    writeln('Введите способ определения квадрата');
    writeln('(R - радиус описанной окружности; m - радиус вписанной окружности,');
    writeln('d - диагональ квадрата; с - сторона квадрата):');
    readln(ch);
    ch:=upcase(ch);
  until ch in ['R', 'M', 'D', 'C'];
  repeat
    ClearWindow;
    ok:=false;
    case ch of
      'R':
      begin
        writeln('Введите радиус описанной окружности не более ', MaxHeight div 2);
        read(r1);
        a:=round(r1*2/sqrt(2));
        if 2*r1<=MaxHeight then
          ok:=true;
      end;
      'M':
      begin
        writeln('Введите радиус вписанной окружности не более ', MaxHeight div 2);
        read(r1);
        a:=2*r1;
        if 2*r1<=MaxHeight then
          ok:=true;
      end;
      'D':
      begin
        writeln('Введите диагональ квадрата не более ', round(MaxHeight*sqrt(2)));
        read(r1);
        a:=round(r1/sqrt(2));
        if r1<=MaxHeight*sqrt(2) then
          ok:=true;
      end;
      else
       begin
        writeln('Введите сторону квадрата не более ', MaxHeight);
        read(r1);
        a:=r1;
        if r1<=MaxHeight then
          ok:=true;
      end;
    end;
  until ok;
  ClearWindow;
  Rectangle((WindowWidth - a) div 2, (WindowHeight - a) div 2, (WindowWidth + a) div 2, (WindowHeight + a) div 2);
  if (ch='R') or (ch='M') then
    DrawCircle(WindowWidth div 2,WindowHeight div 2, r1);
end.


Консультировал: mklokov (6-й класс)
Дата отправки: 17.06.2018, 21:56

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 193385
mklokov
6-й класс

ID: 400828

# 1

= общий = | 12.06.2018, 15:15 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Два вопроса:
Какой язык/среда программирования?
Как определяется "определённый цвет"?

privet921
Посетитель

ID: 402145

# 2

= общий = | 12.06.2018, 15:24 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
mklokov:

Программа Паскаль АВС

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 3

= общий = | 13.06.2018, 00:23 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Экспертам раздела:

Уважемые эксперты, обратите внимание на вопрос!
Спасибо!

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

mklokov
6-й класс

ID: 400828

# 4

= общий = | 13.06.2018, 18:13 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
privet921:

Всё это не сложно в PascalABC.net.
Единственное затруднение в выборе цвета.
Ответе, пожалуйста, на ранее заданный вопрос: "Как определяется "определённый цвет"?"

mklokov
6-й класс

ID: 400828

# 5

 +1 
 
= общий = | 13.06.2018, 20:29 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Считаем, что цвет вводится тремя интенсивностями RGB.
Тогда решение может быть таким:

uses GraphABC;
const space=10; // Зазор от кромки окна
      pw=3; // Толщина линии
var MaxHeight, MaxSize, a, r1: integer; R, G, B: byte; c: color; 
    ch: char; ok: boolean;
begin
  MaximizeWindow;
  MaxHeight:=WindowHeight-2*space;
  SetWindowTitle('Рисуем квадратик:)');
  writeln('Введите интенсивность красной, зелёной и синей составляющих цвета (RGB):');
  readln(R, G, B);
  c:=rgb(R, G, B);
  SetPenColor(c);
  SetPenWidth(pw);
  repeat
    ClearWindow; 
    writeln('Введите способ определения квадрата');
    writeln('(R - радиус описанной окружности; m - радиус вписанной окружности,');
    writeln('d - диагональ квадрата; с - сторона квадрата):');
    readln(ch);
    ch:=upcase(ch);
  until ch in ['R', 'M', 'D', 'C'];
  repeat
    ClearWindow;
    ok:=false;
    case ch of
      'R':
      begin
        writeln('Введите радиус описанной окружности не более ', MaxHeight div 2);
        read(r1);
        a:=round(r1*2/sqrt(2));
        if 2*r1<=MaxHeight then
          ok:=true;
      end;
      'M':
      begin
        writeln('Введите радиус вписанной окружности не более ', MaxHeight div 2);
        read(r1);
        a:=2*r1;
        if 2*r1<=MaxHeight then
          ok:=true;
      end;
      'D':
      begin
        writeln('Введите диагональ квадрата не более ', round(MaxHeight*sqrt(2)));
        read(r1);
        a:=round(r1/sqrt(2));
        if r1<=MaxHeight*sqrt(2) then
          ok:=true;
      end;
      else
       begin
        writeln('Введите сторону квадрата не более ', MaxHeight);
        read(r1);
        a:=r1;
        if r1<=MaxHeight then
          ok:=true;
      end;
    end;
  until ok;
  ClearWindow;
  Rectangle((WindowWidth - a) div 2, (WindowHeight - a) div 2, (WindowWidth + a) div 2, (WindowHeight + a) div 2);
  if (ch='R') or (ch='M') then
    DrawCircle(WindowWidth div 2,WindowHeight div 2, r1);
end.

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 6

= общий = | 13.06.2018, 23:02 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
mklokov:

Пора бы обзавестись и АВС(если нужно выложу дистрибктив)

© Цитата:
function RGB(r,g,b: byte): Color;
Возвращает цвет, который содержит красную (r), зеленую (g) и синюю (b) составляющие (r,g и b - в диапазоне от 0 до 255)

=
© Цитата:
function RGB(r,g,b: integer): ColorType;
Возвращает целое значение, являющееся кодом цвета, который содержит красную, зеленую и синюю составляющие с интенсивностями r, g и b соответственно (r, g и b – целые в диапазоне от 0 до 255, причем, 0 соответствует минимальной интенсивности, 255 – максимальной).



© Цитата:
procedure DrawCircle(x,y,r: integer);
Рисует окружность с центром (x,y) и радиусом r

=
© Цитата:
procedure Circle(x,y,r: integer);
Рисует окружность с центром в точке (x,y) и радиусом r.


По коду:
1) цвета можно не задавать.
2) скорее всего Привет интересует:


© Цитата: privet921
надписывает соответствующий параметр

Какой бы парметр не был введен, ему нужны они все, с указанием значений

3)Я бы с помощью CASE вывел надпись:
© Цитата:
writeln('Введите радиус описанной окружности не более ', MaxHeight div 2);
. . .
writeln('Введите сторону квадрата не более ', MaxHeight);

и с помощью
Код (Pascal) :: выделить код
 repeat
  . . .
  until  in [ 0..МАХ];

проверил одновременно 0..МАХ, т.е.
© Цитата: privet921
предусмотреть критический случай

а потом, CASE присвоил нужное значение, расчитал все параметры и вывел их на экран, используя
© Цитата:
procedure TextOut(x,y: integer; s: string);
Выводит строку s в прямоугольник к координатами левого верхнего угла (x,y)

smile

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

mklokov
6-й класс

ID: 400828

# 7

= общий = | 14.06.2018, 00:22 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Зенченко Константин Николаевич:

По пунктам "обвинения" хочу сообщить следующее: smile
1, 2, 3, 4:
У меня установлен PascalABC.net. В нём писал и проверял. Ver 3.2 сборка 1374. Help в наличии.
5.1. По заданию надо задавать
5.2. Скорее всего, не интересует
Все остальные, кроме "предусмотреть критический случай": Мы не ставим задачей портала написать по студенческому заданию коммерческий код. Мы пытаемся донести до студента возможные варианты алгоритма решения задачи.
Про "критический случай" всё предусмотренно или типом данных (как byte для R, G, B), или repeat - until при вводе данных

 

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

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.15241 сек.

© 2001-2018, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.58 от 11.12.2018