Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 17.01.2011, 14:41   #1 (permalink)
kulisk
Member
 
Регистрация: 15.12.2010
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Функции на 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.
Предупреждение:
Ставьте пробелы после знаков препинания. Модератор

Последний раз редактировалось Max; 17.01.2011 в 14:43 Причина: ...
kulisk вне форума   Ответить с цитированием

Старый 17.01.2011, 14:41
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Вам даже не придется пользоваться поиском, вот аналогичные темы

Функции на Паскале
Процедуры, функции
График функции
C# массивы и функции

Старый 17.01.2011, 14:58   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от kulisk Посмотреть сообщение
Здравствуйте. Помогите пожалуйста с программой.
Попробую помочь.
Программа содержит (как минимум) две ошибки:
1. Не определена ГЛОБАЛЬНАЯ переменная N.
2. Не закрыта первая функция kolcifr - отсутствует закрывающий "end". Отсюда и сообщение об ошибке.
Vladimir_S вне форума   Ответить с цитированием
Старый 17.01.2011, 15:24   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Да, кстати - и вторая функция написана неверно: вместо подсчета суммы цифр ЧИСЛА Вы вычисляете сумму нечетных номеров позиций: 1+3+5...
Vladimir_S вне форума   Ответить с цитированием
Старый 17.01.2011, 15:45   #4 (permalink)
kulisk
Member
 
Регистрация: 15.12.2010
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Помогите пожалуйста сделать эту программу правильно. Очень надо.
kulisk вне форума   Ответить с цитированием
Старый 17.01.2011, 15:49   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

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

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 17.01.2011, 15:55   #6 (permalink)
kulisk
Member
 
Регистрация: 15.12.2010
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Хорошо, только если вы мне четко разъясните насчет "нечетных мест":
1. Откуда идет отсчет "мест" - справа или слева?
2. С чего этот отсчет начинается - с нуля или единицы?
1. Очсчет идет слева.
2.С еденицы.
Спасибо, что согласились помочь.
kulisk вне форума   Ответить с цитированием
Старый 17.01.2011, 16:20   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от kulisk Посмотреть сообщение
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.
Vladimir_S вне форума   Ответить с цитированием
Старый 17.01.2011, 16:28   #8 (permalink)
kulisk
Member
 
Регистрация: 15.12.2010
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Слева, говорите? Т.е. со старших порядков? Тогда несколько сложнее (справа было бы существенно проще). Ну ладно, слева так слева:
[CODE]Var
N:LongInt;
Num:Byte;
Большое спасибо!!!!
kulisk вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




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

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.