Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Задача в Паскале (http://www.tehnari.ru/f41/t102592/)

mariicka 19.05.2015 18:31

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

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.

mariicka 19.05.2015 18:32

под буквой г

MagentaTiger 19.05.2015 18:45

Только пункт Г нужен или что ?

mariicka 19.05.2015 19:28

да. только г

Vladimir_S 19.05.2015 19:37

Цитата:

Сообщение от mariicka (Сообщение 1132108)
Помогите решить задачу.

Да пожалуйста - делов-то куча...
Код:

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.


Евгений 19.05.2015 20:10

У меня другой вариант:

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[i])-Ord('0'))
else
sum:=sum-(Ord(s[i])-Ord('0'));
Writeln('Summa = ',sum);
Readln;
end.

mariicka 19.05.2015 21:13

Евгений, спасибо за решение, поясните пожалуйста эту строку.
sum:=sum+(Ord(s[i])-Ord('0'))

Евгений 19.05.2015 21:38

У Владимира более математически.


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


Часовой пояс GMT +4, время: 11:46.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.