Написать программу на паскале на электронную почту вам пришло письмо, подписанное аббревиатурой (первыми буквами фамилии, имени и отчества(далее - фио) отправителя) аббревиатура оказалась вам не знакома. у вас есть список всех предполагаемых отправителей,взятые из ранее полученных писем, среди
которых различных людей с такой аббревиатурой не больше 10. вам предлагается написать эффективную, в том числе по используемой памяти , программу, которая определит всех вероятных адресатов - людей , фио которых можно сократить до нужной аббревиатуры. фио следует выдать в порядке убывания частоты из
встречаемости в списке. на вход программе в первой строке подается аббревиатура - строка, состоящая из 3 заглавных латинских букв. во второй строке находится число n - количество фио, полученных в результате анализа почты, не все из них подходят под указанную аббревиатуру. значение n может быть
велико. в каждой из следующих n строк записано 3 слова: имя фамилия отчество соответствующего человека. слова разделяются одним пробелом. в конце и в начале строки пробелов нет. все слова записаны заглавными латинскими буквами. длинна фио не превышает 100 символов. гарантируется, что хотя бы один
человек с нужной аббревиатурой есть. пример входных данных: ipi 4 ivanov petr ivanovich petrov ivan ivanovich ivanov petr ivanovich ilyin petr ilyich программа должна вывести предполагаемых отправителей письма с указанием частоты их встречаемости в списке (в порядке убывания частоты). пример
выходных данных для выше примера: ivanov petr ivanovich 2 ilyin petr ilyich 1
Решение 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;
}
Объяснение:
USES CRT;
VAR m1,m2,n,n1,n2,n3,n4,n5,n6,s1,s2:LongInt;
BEGIN
ClrScr;
ReadLn(n);
m1:=n;
n1:=m1 div 100;
n2:=m1 mod 10;
n3:=(m1-n1*100-n2) div 10;
if n1=n2 then if n1=n3 then writeln('vse =');
if n1=n2 then writeln('1 i 3 =');
if n2=n3 then writeln('2 i 3 =');
if n1=n3 then writeln('1 i 2 =')
else writeln('<>');
END.
Проверяйте, что непонятно - спрашивайте.
Можно чуть поправить вывод, чтобы когда vse =, не вылезали 1 i 3, 1 i 2, 2 i 3.
Да и вообще writeln'ов можно наставить и переменные назвать покрасивше. но это уж вы сами, думаю, справитесь. В VAR у меня тоже есть лишние переменные, переделывал старый свой код наспех =)
Всего хорошего.