Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача на строки
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
jurkiw
Программа. Дана последовательность литер, имеющая следующий вид; d1±d2±...±dn (di—цифры, n>1), за которой следует точка. Вычислить значение этой алгебраической суммы.

Вот код, но щитает толька первые два числа, помогите переделать:

program z6_26;
uses crt;
var s,s1,s2: string;
l,f,k,z,i,a,c,v: integer;
begin
clrscr;
write ('Wwedit radok ');
read (s);
f:=(-1); k:=0; z:=0;
l:=length(s);
l:=l div 2;
for i:=1 to l do
begin
f:=f+2;
s1:=copy(s,f,f);
k:=k+2;
s2:=copy(s,k,k);
val(s1,c,a);
val(s2,v,a);
z:=z+v+c;
end;
writeln ('Znachenna algebraichnoi sumy = ',z);
readkey;
end.
volvo
Если я правильно понял задачу, то должно быть вот так:

{ Чтение строки }
f := 0;
val(copy(s, 1, 1), z, a); { <--- Сразу в Z значение первой цифры }
for i:=1 to length(s) div 2 do begin
f:=f+2;
s1:=copy(s,f,2); { <--- Следующая цифра со знаком, который перед ней }
val(s1,c,a); { Преобразуем в число }
z:=z+c; { и складываем с общей суммой }
end;
{ Вывод результата }
Описания всех лишних переменных можно убрать, кроме всего прочего S1 тоже не нужно, можно сразу в Val подставить вызов функции Copy...
jurkiw
Спасмбо volvo што выручил.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.