Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2011, 00:59   #1
Виндовс 7
Пользователь
 
Регистрация: 04.12.2011
Сообщений: 12
Печаль Циклы.Исправьте код,а то сам ошибки не могу найти.

Подсчитать количество N-значных натуральных чисел,в которых сумма цифр непарная,а младшая цифра тоже непарная(младшая цифра я так думаю это 123->3).

Вот мой код

program nat_chisla;
uses Crt;
label 99;
var i,a,N,sum,r:byte;
begin
readln(N);
sum:=0;
for i:=10 to N do
begin
while i>0 do
begin
a:=i mod 10;
writeln(a);
if (a mod 2=0)then goto 99 else
sum:=sum+a;
i:=i div 10;
end;
if(sum=0)then goto 99 else
r:=r+1;
99:;
end;
writeln(r);
end.

Тип байт поставил чтобы раньше выйти с бесконечного цикла.

Последний раз редактировалось Виндовс 7; 11.12.2011 в 02:16.
Виндовс 7 вне форума Ответить с цитированием
Старый 11.12.2011, 03:16   #2
kuy
Форумчанин
 
Аватар для kuy
 
Регистрация: 05.09.2011
Сообщений: 109
По умолчанию

для while j применить и ошибку не выдаст:
Код:
program Project2;
{$APPTYPE CONSOLE}

uses
  SysUtils;
 label 99;
 var a,N,sum,r,i,j:byte;
 begin
 readln(N);
 sum:=0;
 for i:=10 to N do
 begin
 j:=i;
 while j>0 do
 begin
 a:=j mod 10;
 writeln(a);
 if (a mod 2=0)then goto 99 else
 sum:=sum+a;
 j:=j div 10;
 end;
 if(sum=0)then goto 99 else
 r:=r+1;
 99:;
 end;
 writeln(r);
 readln;
 end.
kuy вне форума Ответить с цитированием
Старый 11.12.2011, 17:07   #3
Виндовс 7
Пользователь
 
Регистрация: 04.12.2011
Сообщений: 12
По умолчанию

kuy все равно неправильно. Попробуй ввести например число 125. Ничего не будет считаться.
Но все равно спс.
Виндовс 7 вне форума Ответить с цитированием
Старый 11.12.2011, 17:24   #4
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
{Подсчитать количество N-значных натуральных чисел,
в которых сумма цифр непарная,а младшая цифра
 тоже непарная(младшая цифра я так думаю это 123->3).}
Function SumOfDigit(X:longint):integer;
var s:integer;
begin
s:=0;
while (x>0) do
begin
s:=s+x mod 10;
X:=x div 10;
end;
 SumOfDigit:=s;
end;
var n:integer;
a,b,i:longint;
begin
readln(n);
a:=1;b:=1;
for i:=1 to n-1 do
a:=a*10;
b:=a*10-1;
for i:=a to b do
if odd(sumofdigit(i)) and odd(i) then writeln(i);
readln;
end.
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 11.12.2011, 23:20   #5
Виндовс 7
Пользователь
 
Регистрация: 04.12.2011
Сообщений: 12
По умолчанию

Mad_Cat спс,но я ещё функции не изучал.Но прога работает правильно.

Последний раз редактировалось Виндовс 7; 12.12.2011 в 02:19.
Виндовс 7 вне форума Ответить с цитированием
Старый 18.12.2011, 02:23   #6
Виндовс 7
Пользователь
 
Регистрация: 04.12.2011
Сообщений: 12
По умолчанию

Случайно на одном сайте нашёл похожую задачку с кодом.Немного его подкоректировал и все правильно работает.
У кого есть желание можете посмотреть.
Код:
uses crt;
var n,p,i,j,k:longint;
    s:byte;
begin
clrscr;
repeat
write('Введите количество цифр от 1 до 9 n=');
readln(n);
until n in [1..9];
j:=1;
for i:=1 to n do
j:=j*10;{определяем степень 10}
writeln(n,'-значные числа с нечетной суммой цифр и четной последней цифрой:');
k:=0;
for i:=j div 10 to j-1 do{от в 10 раз меньше до на 1 меньше}
 begin
  p:=i;s:=0;
  while p>0 do
   begin
    s:=s+p mod 10;{считаем сумму цифр числа}
    p:=p div 10;
   end;
  if odd(s)and(i mod 2>0) then{если сумма нечетная, а последняя цифра нечетная}
  k:=k+1;{считаем}
 end;
write('Всего таких чисел=',k);
readln
end.
Виндовс 7 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не могу найти ошибки, тема классы в С++ нона Помощь студентам 1 16.11.2011 02:44
Не могу найти причину ошибки pastuhdima Помощь студентам 0 06.10.2011 00:24
Не могу найти две ошибки. Lunex.08 Общие вопросы C/C++ 10 22.10.2009 09:44
Не могу найти ошибки в задачах Кипятилка Помощь студентам 4 01.07.2009 17:58