Другие языки программирования и технологии

Дано натуральное число п. Найти знакочередующуюся сумму цифр числа n:

Найти знакочередующуюся сумму цифр числа n: пусть запись n в десятичной системе есть akak-1...а0 , найти S=ak -ak-1 +..+(-1)k a0.Помогите кто может (k k-1 это нижние индексы(-1)k здесь верхний индекс
Var i, n, n1,a, s, k, znak :integer;
begin
write('vvedite chislo n ');
readln(n); n1:=n;
k:=0; {количество цифр}
while n1 <> 0 do
begin
k:=k+1;
n1 := n1 div 10;
end;

if k mod 2 = 0 then znak:=-1 else znak:=1 ;
s:=0;
while n <> 0 do
begin
a:=n mod 10;
s:=s+a*znak;
znak:=znak*(-1);
n := n div 10;
end;
writeln ( 'Знакочередующаяся сумма цифр числа = ', s);
end.
ПИ
Павел Измайлов
56 353
Лучший ответ
Находишь сколько цифр и складываешь.
Var i, n, n1,a, s, k, znak :integer;
begin
write('vvedite chislo n ');
readln(n); n1:=n;
k:=0; {количество цифр}
while n1 <> 0 do
begin
k:=k+1;
n1 := n1 div 10;
end;

if k mod 2 = 0 then znak:=-1 else znak:=1 ;
s:=0;
while n <> 0 do
begin
a:=n mod 10;
s:=s+a*znak;
znak:=znak*(-1);
n := n div 10;
end;
writeln ( 'Знакочередующаяся сумма цифр числа = ', s);
end.
На C# если нужно:

namespace ConsoleApplication18
{
class Program
{
static void Main(string[] args)
{
int n, n1, s, a, k, znak;
Console.WriteLine(" Введите число n =");
n = int.Parse(Console.ReadLine());
n1 = n;
k = 0;
while (n1 != 0)
{
k = k + 1;
n1 = n1 / 10;

}

if (k / 2 == 0)
{
znak = -1;
}
else
{
znak = 1;
}
s = 0;
while( n!=0 )
{
a = n % 10;
s = s + a * znak;
znak = znak * -1;
n = n / 10;

}
Console.WriteLine("Знакочередующаяся сумма цифр числа ={0}", s);
Console.ReadKey();

}
}
}

Похожие вопросы