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

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Функции на Pascal. (http://www.tehnari.ru/f41/t45826/)

kulisk 17.01.2011 14:41

Функции на Pascal.
 
Здравствуйте. Помогите пожалуйста с программой. Написать и протестировать функцию, которая по заданному натуральному числу определяет количество цифр в нем и сумму цифр на нечетных местах.
Функции знаю не очень, вот что у меня получилось. Помогите пожалуйста исправить. При компиляции выдает Error 113: error in statement в подчеркнутой строке.
Код:

uses crt;
function kolcifr(n:integer):integer;{Функция количества цифр в числе}
var k:integer;
begin
k:=0;
while n<>0 do
begin
k:=k+1;
n:=n div 10;
kolcifr:=k;
end;
function sumcifr(n:integer):integer;{Функция суммы цифр на нечетных местах}
var s:integer;
i:integer;
begin
s:=0;
for i:=1 to kolcifr(n) do
if i mod 2 = 1 then
begin
s:=s+i;
end;
sumcifr:=s;
end;
begin
clrscr;
write('Vvedite chislo: ');
readln(n);
writeln('Kolichestvo cifr v chisle = ',kolcifr(n));
writeln('Summa cifr na nechetnih mestah = ',sumcifr(n));
readln;
end.

Предупреждение:
Ставьте пробелы после знаков препинания. Модератор

Vladimir_S 17.01.2011 14:58

Цитата:

Сообщение от kulisk (Сообщение 447912)
Здравствуйте. Помогите пожалуйста с программой.

Попробую помочь.
Программа содержит (как минимум) две ошибки:
1. Не определена ГЛОБАЛЬНАЯ переменная N.
2. Не закрыта первая функция kolcifr - отсутствует закрывающий "end". Отсюда и сообщение об ошибке.

Vladimir_S 17.01.2011 15:24

Да, кстати - и вторая функция написана неверно: вместо подсчета суммы цифр ЧИСЛА Вы вычисляете сумму нечетных номеров позиций: 1+3+5...

kulisk 17.01.2011 15:45

Помогите пожалуйста сделать эту программу правильно. Очень надо.

Vladimir_S 17.01.2011 15:49

Цитата:

Сообщение от kulisk (Сообщение 447966)
Помогите пожалуйста сделать эту программу правильно. Очень надо.

Хорошо, только если вы мне четко разъясните насчет "нечетных мест":
1. Откуда идет отсчет "мест" - справа или слева?
2. С чего этот отсчет начинается - с нуля или единицы?

kulisk 17.01.2011 15:55

Цитата:

Сообщение от Vladimir_S (Сообщение 447971)
Хорошо, только если вы мне четко разъясните насчет "нечетных мест":
1. Откуда идет отсчет "мест" - справа или слева?
2. С чего этот отсчет начинается - с нуля или единицы?

1. Очсчет идет слева.
2.С еденицы.
Спасибо, что согласились помочь.

Vladimir_S 17.01.2011 16:20

Цитата:

Сообщение от kulisk (Сообщение 447980)
1. Отсчет идет слева.
2. С единицы.

Слева, говорите? Т.е. со старших порядков? Тогда несколько сложнее (справа было бы существенно проще). Ну ладно, слева так слева:
Код:

Var
 N:LongInt;
 Num:Byte;
 Sum1,Sum2:Word;
BEGIN
 Num:=0;
 Sum1:=0;
 Sum2:=0;
 Write('N= ');
 ReadLn(N);
 Repeat
  Num:=Num+1;
  If (Num mod 2)=1 then
  Sum1:=Sum1+(N mod 10)
  else
  Sum2:=Sum2+(N mod 10);
  N:=N div 10;
 Until N=0;
 WriteLn('Number of figures= ',Num);
 Write('Sum of figures on odd places= ');
 If (Num div 2)=1 then
  WriteLn(Sum1)
 else
  WriteLn(Sum2);
 ReadLn;
END.


kulisk 17.01.2011 16:28

Цитата:

Сообщение от Vladimir_S (Сообщение 447993)
Слева, говорите? Т.е. со старших порядков? Тогда несколько сложнее (справа было бы существенно проще). Ну ладно, слева так слева:
[CODE]Var
N:LongInt;
Num:Byte;

Большое спасибо!!!!


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

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