IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Подсчёт суммы элементов в введённой строке, Выдаёт ошибку Type Mismath
Lauri
сообщение 16.01.2006 9:41
Сообщение #1


Гость






Код

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.

Не пойму, почему когда я обращаюсь к элементу строки выдаётся такая ошибка...?
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 5)
volvo
сообщение 16.01.2006 9:47
Сообщение #2


Гость






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

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


Кстати, что именно ты хочешь получить?
 К началу страницы 
+ Ответить 
Lauri
сообщение 16.01.2006 10:17
Сообщение #3


Гость






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

Прога работает, но выдаёт неверный результат...
Ввожу 123 выводит 150. И через пробел пробовал, смотрел как она работает -сначала 49, след. 99 затем 150... что то не так..
 К началу страницы 
+ Ответить 
klem4
сообщение 16.01.2006 10:56
Сообщение #4


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


2 вопроса :

1) На сколько большими погут быть чила ? Или элементом может быть только цифра 0 или 1 или 2 ... или 9
2) как ращделены числа ? (если это числа а не цифры)


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lauri
сообщение 16.01.2006 11:10
Сообщение #5


Гость






Вообще я предполагал цифры от 0 до 9... ввести в строку и найти их сумму..
 К началу страницы 
+ Ответить 
klem4
сообщение 16.01.2006 11:14
Сообщение #6


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Если цифры идут без пробелов

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.


если будет хоть один пробел или знак - не цифра, результат будет не вырным

Сообщение отредактировано: klem4 - 16.01.2006 11:14


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 31.07.2025 18:29
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"