Модераторы: volvo877, Snowy, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подчитать сумму цифр числа 
:(
    Опции темы
Fedor
Дата 18.3.2005, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: нет
Всего: 32



Код
var
  s:string;
  a:integer;
  t:integer;
  i:integer;
  sum:integer;
begin
  sum:=0;
  readln(a); {ввод числа}
  str(a,s);    {перевод из числа в строку}
  for i:=1 to length(s) do
   begin
     val(s[i],t,err);   {перевод i-того символа строки в число}
     sum:=sum+t;
   end;
  writeln(sum);
end.



--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
HAS
Дата 18.3.2005, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ing
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 1.3.2005
Где: Internet

Репутация: нет
Всего: 2



Спасибо Fedor
PM MAIL   Вверх
Aleche
Дата 18.3.2005, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 4.11.2004
Где: Воронеж

Репутация: нет
Всего: 5



Привет,Has!!!Что-то я не пойму , если пользователь вводит цифры,зачем их в строковый тип переводить и обратно? smile
Код

function summa( n:integer):integer;
var
f:integer;
 begin
      f:=0:
    while n>0 do
   begin
   f:=f+ (nmod10);
    n:=ndiv10;
      end;
  summa:=f;
  end;


А это решение не подходит? smile
PM MAIL ICQ   Вверх
HAS
Дата 18.3.2005, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ing
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 1.3.2005
Где: Internet

Репутация: нет
Всего: 2



Тебе тоже,Aleche, спасибо ! smile smile
PM MAIL   Вверх
sergejzr
Дата 18.3.2005, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: нет
Всего: 360



Aleche, только я не понимаю, чем твой код от моего отличается smile
Код

function sum(number:Integer):Integer
 var
  sum:Integer;
 begin
  while(number>0) do 
  begin
      sum:=sum+(number mod 10);
      number:=number/10;
  end;
  Result:=sum;
end;




--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
HAS
Дата 18.3.2005, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ing
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 1.3.2005
Где: Internet

Репутация: нет
Всего: 2



Все-все спасибо всем !
PM MAIL   Вверх
Pakshin A. S.
Дата 19.3.2005, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



По сумме... немного интереснее вариантик, не как стандарт...
Код

var
 f: text;
 s:string;
 c:char;
 sum:integer;
begin
 Assign(f, 'Demo.txt');
 reset(f);
 readln(f, s);
 Close(f);


 sum:=0;
 while s <> '' do
  begin
   inc(sum, ord(s[1]) - ord('0'));
   Delete(s, 1, 1);
  end;


 writeln(sum);
 readln;
end.

Добавлено @ 13:48
Заодно здесь можно и проверку на правильность вводимых данных сделать... smile smile
PM   Вверх
Aleche
Дата 19.3.2005, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 4.11.2004
Где: Воронеж

Репутация: нет
Всего: 5



sergej.z!!!!!! smile Имени функции присваивается ее подсчитываемое значение!!И ,на мой взгляд , лучше использовать деление div smile А да еще имя функции должно отличаться от работающих в ней переменных!














PM MAIL ICQ   Вверх
Pakshin A. S.
Дата 19.3.2005, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



М-дя... ВСЕ уже поняли, что умеешь управлять цветом и размером, но вот такие сообщения могут вызвать конфликтные ситуации, т. к. лично я думаю, что такое сообщение в жизни было бы произнесего очень повышенным тоном! Немного убавь...
PM   Вверх
Aleche
Дата 19.3.2005, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 4.11.2004
Где: Воронеж

Репутация: нет
Всего: 5



Вот именно, что вcе уже поняли ,СУВ PAKSHIN A.S.!!!А,если, действительно, мое сообщение воспринято в недружелюбной форме, то ничего повышенным я не хотела сказать, просто красный цвет нравится!!! PakshinA.S., не принемай все близко к сердцу !! smile smile
PM MAIL ICQ   Вверх
sergejzr
Дата 19.3.2005, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: нет
Всего: 360



Цитата(Aleche @ 19.3.2005, 12:49)
sergej.z!!!!!! smile Имени функции присваивается ее подсчитываемое значение!!И ,на мой взгляд , лучше использовать деление div smile А да еще имя функции должно отличаться от работающих в ней переменных!

О! это круто! тогда можно так написать:
Код

function sum(number:Integer):Integer
 var
  sum:=0;
 begin
  while(number>0) do 
  begin
      sum:=sum+(number mod 10);
      number:=number div 10;
  end;
 end;



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Pakshin A. S.
Дата 19.3.2005, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



sergej.z Вообще-то говоря, паскалевско-дельфистский компилятор бы выдал ошибку несовместимости типов при использовании "/", т. к. результат этой операции - вещественное число, а присвоение шло к целочесленному... а что? в сях не так? Я всегда использовал функции разбиения на целую часть и остаток... Надо будет еще раз почитать... smile smile smile
PM   Вверх
Zero
Дата 19.3.2005, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(sergej @ 19.3.2005, 15:10)
тогда можно так написать:

Цитата(sergej @ 19.3.2005, 15:10)
var
  sum:=0;

sergej.z я даже не проверяя код, могу сказать что так написать нельзя.
PM MAIL ICQ   Вверх
sergejzr
Дата 21.3.2005, 01:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: нет
Всего: 360



Цитата(Pakshin @ 19.3.2005, 15:51)
sergej.z Вообще-то говоря, паскалевско-дельфистский компилятор бы выдал ошибку несовместимости типов при использовании "/", т. к. результат этой операции - вещественное число, а присвоение шло к целочесленному... а что? в сях не так? Я всегда использовал функции разбиения на целую часть и остаток... Надо будет еще раз почитать... smile smile smile


Нет, в Си надо самому следить. Обычные грабли новичков: 4/5=0 smile Вси надо в таких случаях хотя бы одно число вещ. писать. например 4.0/5.

Насчёт функций, это верно, ведь для получения целого и остатка у процессора одна комманда. То есть и то и другое одновременно вырешивается. Это как раз операторами / и % нельзя использовать smile Приходится два раза одну и тоже операцию выполнять.

Цитата(Zero @ 19.3.2005, 18:50)
sergej.z я даже не проверяя код, могу сказать что так написать нельзя.

Ясный красный smile Просто не удалил var. имелось ввиду, что вообще без локальных переменных обойтись можно.
(А если паскаль инициализирует 0, то и без первой строки smile )
Код

function sum(number:Integer):Integer
 begin
  sum:=0;//Если паскаль инициализирует нулём по умолчанию, то эту строку даже можно удалить :)
  while(number>0) do 
  begin
      sum:=sum+(number mod 10);
      number:=number div 10;
  end;
 end;



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Pakshin A. S.
Дата 21.3.2005, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Вроде не инициализирует... smile
PM   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0634 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.