Помогите с алгоритмом.Написать программу сложения пяти переменных каждая из которых может принимать или числовое значение или строковое. Программа должна отдельно просуммировать числа среди этих переменных и отдельно строки.
{На самом деле они все строковые, но так как некоторые можно преобразовать в числовому значению, можно, я думаю, об этом забыть. Если мне покажут какой-то смежный тип (не char!), я буду крайне благодарен} //Pascal ABC.NET 3.1 сборка 1256
Const n=5;
Var i,k:integer; r:real; rs:string; arsom:array[1..n] of string; se:set of char; begin se:=['0','1','2','3','4','5','6','7','8','9','.','-']; k:=0; for i:=1 to n do begin readln(arsom[i]); foreach var x in arsom[i] do if x in se then inc(k); if k=length(arsom[i]) then r+=strtofloat(arsom[i]) else rs+=arsom[i]; k:=0; end; writeln('Сумма чисел:',r); write('Сумма строк:',rs); end.
Пример ввода: -1.1 Sample 2 text 1.2 Пример вывода: Сумма чисел:2.1 Сумма строк:Sample text
var i, k: integer; r, num: real; rs: string; arsom: array[1..n] of string;
begin for i := 1 to n do begin readln(arsom[i]); if TryStrToFloat(arsom[i], num) then r += num else rs += arsom[i]; end; writeln('Сумма чисел:', r); writeln('Сумма строк:', rs); end.
Answers & Comments
Verified answer
{На самом деле они все строковые, но так как некоторые можно преобразовать в числовому значению, можно, я думаю, об этом забыть. Если мне покажут какой-то смежный тип (не char!), я буду крайне благодарен}//Pascal ABC.NET 3.1 сборка 1256
Const
n=5;
Var
i,k:integer;
r:real;
rs:string;
arsom:array[1..n] of string;
se:set of char;
begin
se:=['0','1','2','3','4','5','6','7','8','9','.','-'];
k:=0;
for i:=1 to n do
begin
readln(arsom[i]);
foreach var x in arsom[i] do
if x in se then inc(k);
if k=length(arsom[i]) then r+=strtofloat(arsom[i]) else rs+=arsom[i];
k:=0;
end;
writeln('Сумма чисел:',r);
write('Сумма строк:',rs);
end.
Пример ввода:
-1.1
Sample
2
text
1.2
Пример вывода:
Сумма чисел:2.1
Сумма строк:Sample text
n = 5;
var
i, k: integer;
r, num: real;
rs: string;
arsom: array[1..n] of string;
begin
for i := 1 to n do
begin
readln(arsom[i]);
if TryStrToFloat(arsom[i], num) then r += num else rs += arsom[i];
end;
writeln('Сумма чисел:', r);
writeln('Сумма строк:', rs);
end.