Программа на PascalABC
Program 29844007;
uses
GraphABC;
var
XL1,YL1,XR1,YR1:integer; ///координаты первого прямоугольника
XL2,YL2,XR2,YR2:integer; ///координаты второго прямоугольника
XL0,YL0,XR0,YR0:integer; ///координаты результата
s:string; ///строка для вывода результатов;
begin
Window.SetSize(700,700);
writeln('Первый прямоугольник: ');
writeln('Введите X левого нижнего угла ');read(XL1);
writeln('Введите Y левого нижнего угла ');read(YL1);
writeln('Введите X правого верхнего угла ');read(XR1);
writeln('Введите Y правого верхнего угла ');read(YR1);
writeln('Второй прямоугольник: ');
writeln('Введите X левого нижнего угла ');read(XL2);
writeln('Введите Y левого нижнего угла ');read(YL2);
writeln('Введите X правого верхнего угла ');read(XR2);
writeln('Введите Y правого верхнего угла ');read(YR2);
if XL1<XL2 then XL0:=XL1 else XL0:=XL2;
if YL1<YL2 then YL0:=YL1 else YL0:=YL2;
if XR1<XR2 then XR0:=XR2 else XR0:=XR1;
if YR1<YR2 then YR0:=YR2 else YR0:=YR1;
/// Выводим сначала результирующий прямоугольник синим цветом
Brush.Color := clBlue;
Rectangle(XL0,700-YL0,XR0,700-YR0);
/// Рисуем первый прямоугольник красным цветом
Brush.Color := clRed;
Rectangle(XL1,700-YL1,XR1,700-YR1);
/// Выводим второй прямоугольник зелёным
Brush.Color := clGreen;
Rectangle(XL2,700-YL2,XR2,700-YR2);
/// Выводим кординаты
Brush.Color := clWhite;
s:='Координаты левого нижнего угла: '+ IntToStr(XL0)+' '+IntToStr(YL0);
TextOut(0,0,s);
s:='Координаты правого верхнего угла: '+ IntToStr(XR0)+' '+IntToStr(YR0);
TextOut(0,20,s);
end.
Пример вывода на прикреплённом рисунке.
/*Код соответствует тексту задания из файла. Последовательность вводится в строку через знаки пробела, нажатие клавиши Enter заканчивает ввод последовательности. Программа НЕ проверяет корректность введенных данных*/
#include <iostream>
bool is_prime(const int n);
int main(int argc, char* argv[])
{
int numb, n_of_pr_numb = 0;
long int sum = 0;
do
{
std::cin >> numb;
if(is_prime(numb))
{
sum += numb;
n_of_pr_numb++;
}
} while (std::cin.peek() != '\n');
std::cout << "The arithmetic mean: " << (n_of_pr_numb == 0 ? 0 : sum * 1. / n_of_pr_numb);
}
bool is_prime(const int n)
{
if (n <= 1)
{
return false;
}
for (int i = 2; i <= pow(n, 1/2); i++)
{
if (n % i == 0)
{
return false;
}
}
return true;
}
Основные ошибки/недочеты Вашей реализации:
В функции pr строка for ( a = 2 ; a<=n ; a++) неверна, т.к. на последнем шаге число всегда будут сравнивать с самим собой, правильно for ( a = 2 ; a<n ; a++). Ну и нет смысла проверять до a=n-1, достаточно проверить до √n(об этом есть целая теорема).По условию никакого вывода слов "Простое/Не простое" не требуетсяСтрока cout << "n = "; лишняя, т.к. даже если на ввод будет подано несколько чисел, на экран "n = " будет выведено лишь в начале. Лучше уточнить для пользователя формат ввода.Смысл функции arif неясен, она выводит на консоль какие-то непонятные пользователю данные, затем возвращает s/i[ВНИМАНИЕ! Так как s и i целочисленные, то s/i не является средним арифметическим, это будет лишь целая часть от него. Правильнее s * 1./i или static_cast<double>(s)/i], а затем выводит это значение. Зачем разрывать cout на две функции - неясноВвод данных не должен находиться в функции проверки числа на простоту(да и смысл разбиения программы на функции пропадает)