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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2013, 15:39   #1
Guagpro
 
Регистрация: 21.01.2013
Сообщений: 9
По умолчанию Вычислить какая цифра правее через подпрограмму

Дано натуральное число. Если в нем есть цифра a и b, то определить, какая из них расположена в числе правее. Если одна или обе эти цифры встречаются в числе несколько раз, то должны быть рассмотрны самые правые из одинаковых цифр.

Помогите плиз чет сижу пробую ни фига не получается
Guagpro вне форума Ответить с цитированием
Старый 21.01.2013, 15:43   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Как пробуешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.01.2013, 15:57   #3
Guagpro
 
Регистрация: 21.01.2013
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Как пробуешь?
Код:
function prav(n,a,b:integer):integer;
begin
if (n div 10)=a then
writeln('a pravee')
else
writeln('b pravee');
end;
var
l,a,b,n:integer;
begin
writeln('a=');
readln(a);
writeln('b=');
readln(b);
writeln('n=');
readln(n);
l:=prav(n,a,b);
end.
Guagpro вне форума Ответить с цитированием
Старый 21.01.2013, 16:01   #4
Guagpro
 
Регистрация: 21.01.2013
Сообщений: 9
По умолчанию

блин мод не див
Код:
function prav(n,a,b:integer):integer;
begin
if (n mod 10)=a then
writeln('a pravee')
else
writeln('b pravee');
end;
var
l,a,b,n:integer;
begin
writeln('a=');
readln(a);
writeln('b=');
readln(b);
writeln('n=');
readln(n);
l:=prav(n,a,b);
end.
Как теперь тогда если допустим у меня число 12345 а=4 в=1 будет выводить в правее

Последний раз редактировалось Guagpro; 21.01.2013 в 16:05.
Guagpro вне форума Ответить с цитированием
Старый 21.01.2013, 16:12   #5
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

есть два варианта:
1) преобразовать число в строку и сравнивать позиции цифр в данной строке
2) делать то, что вы делали в примере (именно с div), пока исходное число не сравняется с нулем примерно так:
Код:
I := 0; Ia :=0; Ib := 0;
repeat
  if (N div 10 = a) and (Ia = 0) then Ia := I;
  if (N div 10 = b) and (Ib = 0) then Ib := I;
  I := I + 1;
  N := N mod 10;  
until N <> 0;
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 21.01.2013, 16:17   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

DiemonStar, Вы mod и div перепутали местами.
Кстати, если встречена а или б, то идти далее по числу не имеет смысла, т.к. уже понятно, какая из цифр правее.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 21.01.2013 в 16:20.
BDA вне форума Ответить с цитированием
Старый 21.01.2013, 16:21   #7
Guagpro
 
Регистрация: 21.01.2013
Сообщений: 9
По умолчанию

Цитата:
Сообщение от DiemonStar Посмотреть сообщение
[/CODE]
Код:
function prav(n,a,b:integer):integer;
var
L:byte;
begin
L:=0;
while L=0 do
if (n mod 10)=a then
begin
L:=1;
writeln('a pravee');
end
else
if (n mod 10)=b then
begin
L:=1;
writeln('b pravee');
end;
end;
var
l,a,b,n:integer;
begin
writeln('a=');
readln(a);
writeln('b=');
readln(b);
writeln('n=');
readln(n);
L:=prav(n,a,b);
end.
Пытался сделать так но что то не получается все равно

Цитата:
Сейчас попробую как вы сказали
Guagpro вне форума Ответить с цитированием
Старый 21.01.2013, 16:27   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Код:
procedure prav(n, a, b: integer);
begin
  while n <> 0 do
  begin
    if n mod 10 = a then
    begin
      writeln('a pravee');
      exit;
    end
    else if n mod 10 = b then
    begin
      writeln('b pravee');
      exit;
    end;
    n := n div 10;//забыли делить
  end;
  writeln('nikto :)');
end;

var
  a, b, n: integer;

begin
  writeln('a=');
  readln(a);
  writeln('b=');
  readln(b);
  writeln('n=');
  readln(n);
  prav(n, a, b);
  readln;
end.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 21.01.2013, 16:29   #9
Guagpro
 
Регистрация: 21.01.2013
Сообщений: 9
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Код:
procedure prav(n, a, b: integer);
begin
  while n <> 0 do
  begin
    if n mod 10 = a then
    begin
      writeln('a pravee');
      exit;
    end
    else if n mod 10 = b then
    begin
      writeln('b pravee');
      exit;
    end;
    n := n div 10;//забыли делить
  end;
  writeln('nikto :)');
end;

var
  a, b, n: integer;

begin
  writeln('a=');
  readln(a);
  writeln('b=');
  readln(b);
  writeln('n=');
  readln(n);
  prav(n, a, b);
  readln;
end.
Да да спасибо) Щас сам уже заметил деление)
Guagpro вне форума Ответить с цитированием
Старый 22.01.2013, 11:23   #10
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
DiemonStar, Вы mod и div перепутали местами.
Спасибо. Косякнул.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить из массива все элементы, последняя цифра которых нечетная и сжать массив.(через процедуры и функции) Proskurina Паскаль, Turbo Pascal, PascalABC.NET 5 23.09.2012 12:43
массив из N целых положительных чисел. Определить наименьшую цифру у каждого числа. через подпрограмму ( Free Pascal ) Алексей НТ Паскаль, Turbo Pascal, PascalABC.NET 1 21.05.2012 19:19
Какая сортировка в запросе через Adodataset? googl БД в Delphi 5 16.05.2012 16:26
Определить, какая цифра расположена левее – максимальная или минимальная мария2507 Microsoft Office Excel 4 22.12.2009 16:41
Программа, определяющую, какая цифра введена – четная или нечетная. JustinTI Помощь студентам 6 21.12.2008 12:03