Дана строка символов состоящая из букв и цифр определить сумму всех цифр в этой сроке и...

0 голосов
135 просмотров

Дана строка символов состоящая из букв и цифр определить сумму всех цифр в этой сроке и количество прописных заглавных букв на PASCAL


Информатика (197 баллов) | 135 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

//PascalABC.NET 3.1 сборка 1219
begin
    var s := ReadString('s =');
    var t := s.MatchValues('[0-9]+').Aggregate(0, (s, x)-> s + StrToInt(x));
    var t1 := s.MatchValues('[A-Z]').Count;
    Println(t, t1);
end.


или

var
    s: string;
    i, sum, k: integer;

begin
    readln(s);
    for i := 1 to Length(s) do
    begin
        if s[i] in '0123456789' then sum := sum + StrToInt(s[i])
        else if s[i] in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' then k := k + 1;
    end;
    writeln(sum, ' ', k);
end.

(53.1k баллов)
0

нда

0

Потому нельзя, что в каждой кодовой таблице они в разных местах. Найдите в таблице русского языка Ё (например, для кодировок CP-866, CP-1501, EBCDIC, UNICODE...). Вы же понимаете, что в основе лежит универсальная сишная dll-ка...

0

Не CP-1501 конечно, виндовая 1251 ))))

0

ну вот это ж где-то записано, а воспользоваться получается нельзя

0

Можно, но гарантировано - только латиница.

0

Остальное может даже перестать работать после выпуска очередной версии.

0

Поэтому в очень серьезных приложениях или собственные библиотеки пишут, или подключают системные из локализованных версий ОС.

0

ну это уже специфика

0

var
s, s1: string;
i, sum, k: integer;

begin
readln(s);
for i := 1 to Length(s) do
begin
if s[i] in ['0'..'9'] then sum := sum + StrToInt(s[i])
else if (s[i] = UpCase(s[i])) and (LowCase(s[i]) <> UpCase(s[i])) then s1 := s1 + s[i];
end;
writeln(sum);
writeln(Length(s1), ' ', s1);
end.

0

более менее универсальный вариант