• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Задача в Паскале

mariicka

Ученик
Регистрация
19 Май 2015
Сообщения
5
Реакции
0
Баллы
0
Задача в Паскале

Помогите решить задачу.Вот что у меня получилось, но это не правильно.

program prim1;
var m, n: integer;
k: integer;
begin
writeln('Введите N=');
readln(n);
m:=n;k:=0;
while m <>0 do
begin
k:=k+1; m:= m div 10;
end;
writeln('B числе ',n,'- ',k, ' цифр!');
readln;
end.
 
Только пункт Г нужен или что ?
 
Помогите решить задачу.
Да пожалуйста - делов-то куча...
Код:
Var
 n,Sign,Sum2:Integer;
 Num,Sum1,First,i:Byte;

Begin
 Write('n = ');
 Readln(n);
 Num:=Trunc(Ln(n)/Ln(10))+1;
 if (Num mod 2)=1 then Sign:=1 else Sign:=-1;
 Sum1:=0;
 Sum2:=0;
 for i:=1 to Num do
  begin
   First:=(n mod 10);
   Sum1:=Sum1+First;
   Sum2:=Sum2+Sign*First;
   Sign:=-Sign;
   n:=n div 10;
  end;
 Writeln('Number of digits = ',Num);
 Writeln('Sum of digits = ',Sum1);
 Writeln('First digit = ',First);
 Writeln('Alternating sum of digits = ',Sum2);
End.
 
У меня другой вариант:

uses SysUtils;
var n,i,sum:integer;
s:string;
begin
Write('Chislo = ');
Readln(n);
s:=IntToStr(n);
sum:=0;
for i:=1 to Length(s) do
if (i mod 2)<>0 then
sum:=sum+(Ord(s)-Ord('0'))
else
sum:=sum-(Ord(s)-Ord('0'));
Writeln('Summa = ',sum);
Readln;
end.
 
Евгений, спасибо за решение, поясните пожалуйста эту строку.
sum:=sum+(Ord(s)-Ord('0'))
 
У Владимира более математически.


sum:=sum+(Ord(s)-Ord('0')) - берём код символа, вычитаем из него код ноля и прибавляем (или вычитаем ) к сумме.
 
Последнее редактирование:
Назад
Сверху