Решите плиз задачку .. в долгу не останусь.. только сегодня надо...

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
enotys
Сообщения: 6
Зарегистрирован: 11 дек 2007, 20:25

Задача вроде легкая но допереть не могу...
Вывести на экран в возрастающем порядке все четырехзначные натуральные числа, все цифры которых являются соседями в натуральном ряде. Примерами таких чисел являются 4756 и 7645. Найти кол-во и среднее арифметическое этих чисел..
Заранее спасибо... у меня сроки до завтра .. так что если у кого решение есть выложите пожалуйста... 50 кину на счет кто сегодня выложит решение...
enotys
Сообщения: 6
Зарегистрирован: 11 дек 2007, 20:25

на Паскале...
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Код: Выделить всё

function iskomoe(x:integer):boolean;
var res:boolean; i,j:byte; s:string;
begin
  s:=str(x);
  for i:=1 to 6 do
  begin
     res:=true
     for j:=i to i+3 do 
     if pos(chr(ord('0')+j, s)=0 then
     begin
         res:=false;
         break;
     end;
     if res then 
     begin
        iskomoe:=true;
        exit;
     end;
  end;
  iskomoe:=false;
end;
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
BBB
Сообщения: 1298
Зарегистрирован: 27 дек 2005, 13:37

Хыиуду,
Функция вернет FALSE на первой же итерации цикла, если число не содержит цифру 1.
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

Код: Выделить всё

uses crt;

var
X : Integer;

function func1(N:Integer):Boolean;
var s: string;
    i: Integer;
    c: Char;
begin
Str(N, S);
func1 := false;
if length(s) <> 4 then exit;
repeat
c := #0;
for i := 1 to 3 do
   if s[i+1] < s[i] then
      begin
      c := s[i];
      s[i] := s[i+1];
      s[i+1] := c;
      end;
until c=#0;
Func1 := (ord(s[2])-ord(s[1])=1) and (ord(s[3])-ord(s[2])=1) and (ord(s[4])-ord(s[3])=1);
end;

begin
ClrScr;
For X := 1000 to 9999 do
   if func1(X) then Write(X:8);
Readkey;
end.
Функция Func1 определяет, удовлетворяет ли число заданному признаку или нет. Кол-во и среднее арифметическое, думаю и сами сможете, если подумаете
It's a long way to the top if you wanna rock'n'roll
enotys
Сообщения: 6
Зарегистрирован: 11 дек 2007, 20:25

Спасибо огромное... Среднее арифметическое и кол-во я и сам найду..
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

BBB писал(а):Хыиуду,
Функция вернет FALSE на первой же итерации цикла, если число не содержит цифру 1.
Спасибо, исправил. Там надо было ставить не break, а exit
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить