Складываем число людей, знающих английский, немецкий, французский: 6 + 6 + 7 = 19. Однако в это число дважды вошли люди, знающие (только) два языка и трижды - три языка. Вычитаем людей, знающих (хотя бы) два языка: 19 - (4 + 3 + 2) = 10. Т.к. в каждое из трех вычтенных множеств включено множество людей, получается, мы вычли его три раза, и 10 - количество людей, знающих меньше трех языков. Еще раз прибавляем людей, знающих три языка: 10 + 1 = 11 человек в комнате всего. В итоге получилось: 1 человек знает только английский 3 человека знают только французский 0 человек - только немецкий 3 - только английский и немецкий 2 - только немецкий и французский 1 - только английский и французский 1 - все три языка Задача очень легко решается, если изобразить ее на диаграмме, даже без всех этих рассуждений про множества
var m, n, i, j: integer; s: real; a: array[,] of real;
begin write('Введите S: '); read(s); write('Введите M, N: '); read(m, n); setlength(a, m + 1, n + 1); writeln('Введите элементы матрицы: '); for i := 1 to m do for j := 1 to n do read(a[i, j]); for i := 1 to m do begin for j := 1 to n do if a[i, j] <> s then begin writeln(a[i, j]); break; end; if a[i, j] = s then writeln('-'); end; end.
В итоге получилось:
1 человек знает только английский
3 человека знают только французский
0 человек - только немецкий
3 - только английский и немецкий
2 - только немецкий и французский
1 - только английский и французский
1 - все три языка
Задача очень легко решается, если изобразить ее на диаграмме, даже без всех этих рассуждений про множества
m, n, i, j: integer;
s: real;
a: array[,] of real;
begin
write('Введите S: ');
read(s);
write('Введите M, N: ');
read(m, n);
setlength(a, m + 1, n + 1);
writeln('Введите элементы матрицы: ');
for i := 1 to m do
for j := 1 to n do
read(a[i, j]);
for i := 1 to m do
begin
for j := 1 to n do
if a[i, j] <> s then
begin
writeln(a[i, j]);
break;
end;
if a[i, j] = s then
writeln('-');
end;
end.
Пример:
Введите S: 7
Введите M, N: 3 4
Введите элементы матрицы:
7 4 3 7
3 5 1 4
7 7 7 7
4
3
-