Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2011, 14:46   #1
Student1992
Пользователь
 
Регистрация: 07.11.2011
Сообщений: 16
По умолчанию сумма цифр введенного числа

Добрый день, в общем нашел следующую задачу: вводить число - надо найти сумму его цифр.
например введем число 123=1+2+3=6
вот как решил ее я:
Код:
program task2;
uses crt;
var
   number:string;
function numbersString(s:string):integer;
 var sum,i:integer;
 begin
  sum:=0;
  for i:=1 to length(s) do begin
    sum:=sum+StrToInt(s[i]);
  end;
  numbersString:=sum;
end;
begin
write('Введите число: ');
readln(number);
writeln(numbersString(number));
end.
как можно ее решить по другому?
Student1992 вне форума Ответить с цитированием
Старый 07.11.2011, 15:04   #2
rubius2008
Форумчанин
 
Регистрация: 19.03.2010
Сообщений: 409
По умолчанию

Через целочисленное деление (div) и остаток от деления (mod)
Есть вопросы, пишите в ЛС.
rubius2008 вне форума Ответить с цитированием
Старый 07.11.2011, 15:07   #3
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от rubius2008 Посмотреть сообщение
Через целочисленное деление (div) и остаток от деления (mod)
Кстати, можно обойтись и без целочисленного деления, используя лишь остаток от деления.
Вадим Мошев вне форума Ответить с цитированием
Старый 07.11.2011, 15:25   #4
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Кстати, можно обойтись и без целочисленного деления, используя лишь остаток от деления.
заинтересовал) а как?
Poma][a вне форума Ответить с цитированием
Старый 07.11.2011, 15:27   #5
Хамяг
Форумчанин
 
Аватар для Хамяг
 
Регистрация: 22.08.2008
Сообщений: 105
По умолчанию

Код:
var
  k,c: Integer;
begin
  Readln(c);
  k:=0;
  while c > 0 do
  begin
    k:=k+c mod 10;
    c:=c div 10;
  end;
  Writeln(k);
  Readln;
end.
Хамяг вне форума Ответить с цитированием
Старый 07.11.2011, 16:03   #6
Student1992
Пользователь
 
Регистрация: 07.11.2011
Сообщений: 16
По умолчанию

Не успел скинуть) Но уже решил.
Код:
program task2;
uses crt;
var
   number:integer;
function sumNumber(num:integer):integer;
var sum,buff:integer;
begin
sum:=0;
buff:=num;
 while buff <> 0 do
  begin
      sum:=sum + buff mod 10;
      buff:=buff div 10; 
  end;
  sumNumber:=sum;
end;
begin
write('Введите число: ');
readln(number);
 writeln('Сумма цифр в числе: ',sumNumber(number)); 
end.
Student1992 вне форума Ответить с цитированием
Старый 07.11.2011, 16:03   #7
Student1992
Пользователь
 
Регистрация: 07.11.2011
Сообщений: 16
По умолчанию

только вопрос появился, минус ко всему число относиться? или только к одной цифре?
Student1992 вне форума Ответить с цитированием
Старый 07.11.2011, 19:18   #8
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Сообщение от Student1992 Посмотреть сообщение
только вопрос появился, минус ко всему число относиться? или только к одной цифре?
в смысле? ты про отрицательные числа? если да тогда сумма цифр все равно положительная, и употреби функцию abs.
Poma][a вне форума Ответить с цитированием
Старый 07.11.2011, 21:21   #9
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
заинтересовал) а как?
Вообще, знаете, мне кажется, что этот способ открыл я сам (не выставляю себя никуда).

Но, внимание: алгоритм находит ПОЛНУЮ СУММУ введённого числа, то есть суммирование цифр числа и результата до тех пор, пока не будет получено число ИЗ ОДНОГО РАЗРЯДА, то есть, если мы ввели число 8888, то на выходе моего алгоритма мы получим не 32, а 5.
А вот и код

Код:

var n: integer // например

begin
	read(n):
	if (n mod 9) = 0
		then
		 Write(9)
		
		else
		 Write(n mod 9);
		 
end.
Вадим Мошев вне форума Ответить с цитированием
Старый 07.11.2011, 21:36   #10
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Вообще, знаете, мне кажется, что этот способ открыл я сам (не выставляю себя никуда).

Но, внимание: алгоритм находит ПОЛНУЮ СУММУ введённого числа, то есть суммирование цифр числа и результата до тех пор, пока не будет получено число ИЗ ОДНОГО РАЗРЯДА, то есть, если мы ввели число 8888, то на выходе моего алгоритма мы получим не 32, а 5.
А вот и код

Код:

var n: integer // например

begin
	read(n):
	if (n mod 9) = 0
		then
		 Write(9)
		
		else
		 Write(n mod 9);
		 
end.
не( это чё то не то....
Poma][a вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сумма цифр данного числа Sergey Zhlobo Общие вопросы C/C++ 18 03.02.2011 12:53
Сумма цифр введенного трехзначного числа. Дельфи by -ORTODOX- Помощь студентам 20 02.02.2011 14:21
Сумма цифр числа... Dimak67 Microsoft Office Excel 5 09.04.2010 00:46
Сумма цифр из числа. AlterNatioN Фриланс 5 02.03.2010 21:18
сумма цифр целого числа mihsel Microsoft Office Excel 8 13.04.2009 13:57