Есть n игроков которые стоят в ряд. Они хотят сыграть в игру. Для этого им нужно разделится на две команды по k человек. У i-го игрока ai уровень игры. Сила команды это сумма уровней всех его участников.
Вы можете выбрать 2∗k игроков которые будут играть. Но они сами поделятся на команды. В первой команде будут первые k игроков которые стоят ближе к началу ряду. Во второй команде будут последние k игроков.
Запишем силу первой команды как A и второй как B.
Найдите максимальное значение A−B.
Например, есть 6 игроков с уровнями [3,1,7,2,1,2]. Если выбрать игроков с номерами 1,3,5,6 то в первой команде будут игроки 1,3 и сила команды A=3+7=10, во второй игроки 5,6 и сила команды B=1+2=3. A−B=10−3=7.
{Напишите программу, которая находит минимальное и максимальное среди чётных положительных чисел, записанных в файле, и выводит результат в другой файл.} var f:text; min, max,a :integer; find:boolean;{есть/нет числа удовлетворяющие условию} begin assign(f,'dan.txt'); reset(f); min:=0; max:=0; find:=false; while not eof(f) do begin read(f,a); if not find and (a>0) and (a mod 2=0) then begin min:=a; find:=true; end else if find and (a>0) and (a mod 2=0) and (min>a) then min:=a;
if (a>0) and (a mod 2=0) and (max<a) then max:=a; end; close(f); assign(f,'res.txt'); rewrite(f); if max=0 then writeln(f,'чётных положительных чисел нет') else writeln(f,'min среди чётных положительных чисел =',min, chr(13), 'max среди чётных положительных чисел нет',max); close(f); end.
Решение Pascal
Delphi/Pascal
program Case5;
var
N,A,B:Integer;
begin
Write('Введите номер действия: ');
Readln(N);
Write('Введите число A: ');
Readln(A);
Write('Введите число B: ');
Readln(B);
Case N of
1: Writeln(A+B);
2: Writeln(A-B);
3: Writeln(A*B);
4: Writeln(A/B);
end;
end.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
program Case5;
var
N,A,B:Integer;
begin
Write('Введите номер действия: ');
Readln(N);
Write('Введите число A: ');
Readln(A);
Write('Введите число B: ');
Readln(B);
Case N of
1: Writeln(A+B);
2: Writeln(A-B);
3: Writeln(A*B);
4: Writeln(A/B);
end;
end.
Решение C
C
#include <stdio.h>
int main(void)
{
system("chcp 1251");
int n;
float a,b;
printf("N:") ;
scanf ("%i", &n);
printf("A:") ;
scanf ("%f", &a);
printf("B:") ;
scanf ("%f", &b);
switch (n) {
case 1:
printf("%f\n",a+b) ;
break;
case 2:
printf("%f\n",a-b) ;
break;
case 3:
printf("%f\n",a*b) ;
break;
case 4:
printf("%f\n",a/b) ;
break;
}
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
int main(void)
{
system("chcp 1251");
int n;
float a,b;
printf("N:") ;
scanf ("%i", &n);
printf("A:") ;
scanf ("%f", &a);
printf("B:") ;
scanf ("%f", &b);
switch (n) {
case 1:
printf("%f\n",a+b) ;
break;
case 2:
printf("%f\n",a-b) ;
break;
case 3:
printf("%f\n",a*b) ;
break;
case 4:
printf("%f\n",a/b) ;
break;
}
return 0;
}
Объяснение:
среди чётных положительных чисел, записанных в файле,
и выводит результат в другой файл.}
var f:text;
min, max,a :integer;
find:boolean;{есть/нет числа удовлетворяющие условию}
begin
assign(f,'dan.txt'); reset(f);
min:=0; max:=0;
find:=false;
while not eof(f) do
begin
read(f,a);
if not find and (a>0) and (a mod 2=0) then
begin
min:=a; find:=true;
end
else
if find and (a>0) and (a mod 2=0) and (min>a) then
min:=a;
if (a>0) and (a mod 2=0) and (max<a) then
max:=a;
end;
close(f);
assign(f,'res.txt');
rewrite(f);
if max=0 then writeln(f,'чётных положительных чисел нет')
else
writeln(f,'min среди чётных положительных чисел =',min, chr(13),
'max среди чётных положительных чисел нет',max);
close(f);
end.