Четырехугольник Сергею на уроке геометрии задали следующее задание. Даны пять чисел. Требуется нарисовать произвольный четырехугольник с одной диагональю так, чтобы длины сторон и этой диагонали равнялись заданным числам. Сергею надо выбрать длину диагонали и каждую из сторон так, чтобы было возможно нарисовать требуемую фигуру. Если вариантов решения задачи несколько, можно выбрать любой. Нарисованная диагональ не должна лежать на одной из сторон. Возможно, что нарисовать требуемый четырехугольник не получится. В этом случае надо будет вывести ноль.
Формат входных данных
На вход через пробел подаются пять натуральных чисел от 1 до 1000.
Формат выходных данных
Требуется вывести ответ в следующем порядке. В первой строке вывести одно число — длину диагонали четырехугольника. Во второй строке два числа — длины отрезков лежащих с одной стороны от диагонали. В третьей строке еще два числа — длины отрезков лежащих с другой стороны от диагонали. Если построить четырехугольник невозможно, то вывести 0.
В этой задаче можно выводить любой правильный ответ. В частности, можно переставить числа в одной строке или поменять местами вторую и третью строку.
Методика проверки и пояснение к тестам
В первом тесте в качестве диагонали можно взять отрезок длины 7. Тогда с одной стороны от диагонали будут стороны с длинами 3 и 5, а с другой — 9 и 3. Вторую и третью строку, а также числа в этих строках можно вывести в любом порядке. Также возможно нарисовать четырехугольник с диагональю 5 и длинами сторон 9, 7 и 3, 3. Кроме того, возможен вариант с диагональю 3 и длинами сторон 5, 3 и 7, 9 Любой из этих вариантов будет считаться верным.
Во втором тесте нарисовать четырехугольник невозможно.
Программа проверяется на 20 тестах. Прохождение каждого теста оценивается в Тесты из условия задачи при проверке не используются.
Sample Input 1:
3 9 5 3 7
Sample Output 1:
7
3 5
9 3
Sample Input 2:
3 9 5 1 7
Sample Output 2:
0
#include
#include
#include
#include
#include
#include
typedef struct
{
char imya[40];
char familiya[40];
char otchestvo[40];
int telefon;
int texpasport;
float pages ;
}gor;
void form(char mass[10], char *imya, char *familiya, char *otchestvo, int telefon, int texpasport)
{
file *f;
gor y;
int i;
if ((f=fopen(mass,"w"))==null) exit(1);
for (i=1; i< =3; i++)
{
cout< < "vvedite imya: ";
cin> > imya;
cout< < "vvedite familiya: ";
cin> > familiya;
cout< < "vvedite otchestvo: ";
cin> > otchestvo;
cout< < "vvedite telefon: ";
cin> > telefon;
cout< < "vvedite texpasport: ";
cin> > texpasport;
fwrite(& y,sizeof(gor),1,f);
if(ferror(f)! =null)
exit(2);
}
fclose(f);
}
void vivod(char mass[50])
{
file *f;
gor z;
if ((f=fopen(mass, "r"))==null) exit(3);
cout< < "fail: "<
while (! feof(f)) {
fread (& z,sizeof(gor),1,f);
if (! feof(f))
{
cout< < "imya: "<
cout< < "familiya: "<
cout< < "otchestvo: "<
cout< < "telefon: "<
cout< < "texpasport: "<
}
fclose(f);
}
}
void del(char fo[10], char fi[10])
{
file *f1,*f2;
gor d;
//char temp[40];
if ((f1=fopen(fi,"r"))==null) exit(4);
if ((f2=fopen(fo,"w"))==null) exit(5);
//cout < < "vvedite nazvanie na ydalenie - ";
//cin > > temp;
for (int i=0; i< 3; i++)
{
fread(& d,sizeof(gor),1,f1);
if (feof(f1)) break;
if (i> 2)
fwrite (& d,sizeof(gor),1,f2);
}
fclose(f2);
fclose(f1);
}
void dobav(char fi[10], char fo[10],char *imya, char *familiya, char *otchestvo, int telefon, int texpasport)
{
int q;
int i;
gor d;
file *f1,*f2;
char temp[40];
if ((f1=fopen(fi, "r"))==null) exit(4);
if ((f2=fopen(fo,"r+"))==null) exit(5);
cout < < "vvedite familiu, pered kotorym nuzno dobavit element: ";
cin > > temp;
for (i=0; i< 10; i++)
{
fread(& d,sizeof(gor),1,f2);
if (feof(f2)) break;
if (strcmp(d.familiya, temp)) break;
q=i;
}
for (i=0; i< 10; i++)
{
if (feof(f2)) break;
fwrite (& d,sizeof(gor),1,f2);
if (i==q-1)
{
cout< < "vvedite imya: ";
cin> > imya;
cout< < "vvedite familiya: ";
cin> > familiya;
cout< < "vvedite otchestvo: ";
cin> > otchestvo;
cout< < "vvedite telefon: ";
cin> > telefon;
cout< < "vvedite texpasport: ";
cin> > texpasport;
cout <
}
}
fclose(f2);
fclose(f1);
}
void main()
{
int n=10;
//cout < < "vvedite kol-vo zapisey: - ";
//cin> > n;
//cout <
form("f1.txt",n);
vivod("f1.txt");
del("f1.txt","f2.txt");
cout < < "posle udalenia: \n";
vivod("f2.txt");
getch();
n=1;
system("cls");
dobav ("f2.txt","f2.txt");
cout < < "posle dobavlenia: \n";
vivod ("f2.txt");
getch();
}
uses crt;
var i,sum,k: integer;
begin
sum: =0;
k: =0;
writeln('вводите числа. 0 - конец последовательности');
repeat
read(i);
if i mod 2=1 then begin
sum: =sum+i;
inc(k);
end;
until i=0;
writeln;
writeln('среднее арифметическое нечетных чисел: ',sum/k: 5: 3);
end.