Найти сумму всех из имеющихся в этом тексте чисел-целых, вещественных - Turbo Pascal
Формулировка задачи:
Дан текст, найти сумму всех из имеющихся в этом тексте чисел. Числа могут быть целыми, вещественными!
Решение для целых чисел нашел и разобрался, а с вещественными разобраться не могу
Решение задачи: «Найти сумму всех из имеющихся в этом тексте чисел-целых, вещественных»
textual
Листинг программы
var
a, t: String;
i, w, d: Integer;
sum, k: Real;
begin
Write('Enter text: '); ReadLn(t);
i:=1;
while i<=Length(t) do begin
a:=''; d:=0;
while t[i] in ['0'..'9','.'] do begin
Inc(d,Ord(t[i]='.')); if d>1 then Break;
a:=a+t[i]; Inc(i);
end;
if a<>'' then begin
Val(a,k,w); if w=0 then sum:=sum+k;
end;
Inc(i);
end;
WriteLn(sum:0:2);
Write('Press Enter...'); ReadLn;
end.
Объяснение кода листинга программы
- В начале объявляются переменные: a, t (строка), i, w, d (целое число), sum (число с плавающей точкой), k (число с плавающей точкой).
- Затем идет запрос на ввод текста, который сохраняется в переменной t.
- Переменная i инициализируется значением 1.
- Запускается цикл while, который выполняется до тех пор, пока i меньше или равно длине строки t.
- Внутри цикла создаются временные переменные a и d, инициализированные пустой строкой и нулем соответственно.
- Запускается вложенный цикл while, который выполняется для каждого символа в строке t.
- Внутри этого цикла проверяется, является ли текущий символ цифрой или точкой. Если это цифра, то увеличивается значение переменной d на единицу за каждый символ. Если это точка, то проверяется, превышает ли значение переменной d единицу. Если да, то цикл прерывается с помощью команды Break.
- Если после окончания вложенного цикла переменная a не пустая, то преобразуется в число с плавающей точкой, а затем добавляется к сумме.
- После окончания внешнего цикла переменная i инкрементируется.
- Выводится значение суммы.
- Выводится сообщение для нажатия клавиши Enter.
- Запускается еще один цикл while, который выполняется до тех пор, пока пользователь не нажмет клавишу Enter.
- После окончания цикла выводится значение суммы.