Помощь - Поиск - Пользователи - Календарь
Полная версия: Подсчёт суммы элементов в введённой строке
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Lauri
Код

program podschet;
uses crt;
var q,w,e:byte;
    s:string;

     begin
     clrscr;
     writeln ('BBedite ctpoky:');
     readln (s);
         readln;
     writeln ('Summa elementov: ');

     for w:=1 to length (s) do
       begin
       e:=e+s[w];
       end;
       write (e);
       readln;
     end.

Не пойму, почему когда я обращаюсь к элементу строки выдаётся такая ошибка...?
volvo
Цитата
Не пойму, почему когда я обращаюсь к элементу строки выдаётся такая ошибка...?
Потому, что Byte (это то, КУДА ты суммируешь) и Char (это элемент строки) - совершенно разные и несовместимые типы...

Приводи типы:
for w:=1 to length (s) do begin
e:=e + Byte(s[w]); { Я бы E сделал больше, чем Byte... Например, Integer }
end;


Кстати, что именно ты хочешь получить?
Lauri
Я и не знал что так можно записать
Код
e:=e + Byte(s[w]);

Прога работает, но выдаёт неверный результат...
Ввожу 123 выводит 150. И через пробел пробовал, смотрел как она работает -сначала 49, след. 99 затем 150... что то не так..
klem4
2 вопроса :

1) На сколько большими погут быть чила ? Или элементом может быть только цифра 0 или 1 или 2 ... или 9
2) как ращделены числа ? (если это числа а не цифры)
Lauri
Вообще я предполагал цифры от 0 до 9... ввести в строку и найти их сумму..
klem4
Если цифры идут без пробелов

uses crt;
var
s : string;
i : byte;
sum : integer;
begin
readln(s);
sum := 0;
for i := 1 to length(s) do
sum := sum + (ord(s[i]) - 48);
writeln(sum);
readln;
end.


если будет хоть один пробел или знак - не цифра, результат будет не вырным
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.