Как вытащить из числа 1509 цифры 5 и 0?

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

Как вытащить из числа 1509 цифры 5 и 0?

Сообщение fs444 » 08.10.2008 00:11:20

Как средствами Pascal вытащить из числа 1509 цифры 5 и 0? Я разбираю 1509 на тысячи (1), сотни (5), десятки(0) и единицы (9), нахожу среди них 5 и 0, сдигаю на два разряда влево число единиц (9), но вот как мне соединить бывшие тысячами десятки (1) и сдвинутые влево единицы, я не знаю. Как мне это сделать?
fs444
новенький
 
Сообщения: 38
Зарегистрирован: 09.09.2008 23:55:30

Re: Как вытащить из числа 1509 цифры 5 и 0?

Сообщение bw » 08.10.2008 00:26:51

Постановка задачи:
> Как средствами Pascal вытащить из числа 1509 цифры 5 и 0?

Решение задачи:
> WriteLn(5);
> WriteLn(0);

..bw
Аватара пользователя
bw
постоялец
 
Сообщения: 359
Зарегистрирован: 01.12.2005 11:36:23
Откуда: Усть-Илимск

Re: Как вытащить из числа 1509 цифры 5 и 0?

Сообщение Михаил Крамер » 08.10.2008 14:19:06

Код: Выделить всё
var
    i: Word;
begin;
    i:= 1509;
    Writeln(i div 1000);
    Writeln((i mod 1000) div 100);
    Writeln((i mod 100) div 10);
    Writeln(i mod 10);
end.


А про сдвиги, и задвиги - не въехал. В чём задача то?

А! Дошло! Видимо, решение такое:
Код: Выделить всё
var i, j: Word;
begin
    i:= 1509;
    j:= i div 1000 *10 + i mod 10;
    writeln(j);
end.
;
Михаил Крамер
новенький
 
Сообщения: 73
Зарегистрирован: 08.02.2008 14:26:40

Re: Как вытащить из числа 1509 цифры 5 и 0?

Сообщение fs444 » 08.10.2008 17:20:44

Я вам неправильно все объяснил. Вот текст задания:

Добавлено спустя 16 минут 2 секунды:
Я сделал так:
Код: Выделить всё
Program l6_n16_dano_4zn_chislo_n;
Var n,one_n,dec_n,hun_n,thu_n:Longint;
Begin
  Writeln('Введите 4-зн. число');
  Readln(n);
  one_n:=n Mod 10;
  dec_n:=(n Div 10) Mod 10;
  hun_n:=(n Div 100) Mod 10;
  thu_n:=n Div 1000;
  If (thu_n<>0) And (thu_n<>5) Then Write(thu_n);
  If (hun_n<>0) And (hun_n<>5) Then Write(hun_n);
  If (dec_n<>0) And (dec_n<>5) Then Write(dec_n);
  If (one_n<>0) And (one_n<>5) Then Write(one_n);
Readln;
End.
Вложения
Текст задания.JPG
Текст задания.JPG (10.13 КБ) Просмотров: 13525
fs444
новенький
 
Сообщения: 38
Зарегистрирован: 09.09.2008 23:55:30

Re: Как вытащить из числа 1509 цифры 5 и 0?

Сообщение Михаил Крамер » 08.10.2008 18:24:04

А причём тут сдвиги? Или вы хотите в результате получить тоже число, а не просто вывести на экран цифры?

Добавлено спустя 7 минут 26 секунд:
Тогда так можно:
Код: Выделить всё
    Program l6_n16_dano_4zn_chislo_n;
    Var n,one_n,dec_n,hun_n,thu_n, l, m:Longint;
    Begin
      Writeln('Введите 4-зн. число');
      Readln(n);
      one_n:=n Mod 10;
      dec_n:=(n Div 10) Mod 10;
      hun_n:=(n Div 100) Mod 10;
      thu_n:=n Div 1000;
      l:= 0;
      m:= 1;
      If (one_n<>0) And (one_n<>5) Then
      begin
          l:= l + one_n * m;
          m:= m * 10;
      end;
      If (dec_n<>0) And (dec_n<>5) Then
      begin
          l:= l + dec_n * m;
          m:= m * 10;
      end;
       If (hun_n<>0) And (hun_n<>5) Then
       begin
          l:= l + hun_n * m;
          m:= m * 10;
      end;
      If (thu_n<>0) And (thu_n<>5) Then
       begin
          l:= l + thu_n * m;
          m:= m * 10;
      end;
      writeln(l);
      Readln;
    End.


Вообще, по хорошему, организовать бы циклик - но лень думать.
Михаил Крамер
новенький
 
Сообщения: 73
Зарегистрирован: 08.02.2008 14:26:40

Re: Как вытащить из числа 1509 цифры 5 и 0?

Сообщение Padre_Mortius » 08.10.2008 18:49:01

а не проще будет работать с числом как с массивом символов?
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Как вытащить из числа 1509 цифры 5 и 0?

Сообщение Михаил Крамер » 08.10.2008 19:49:18

Padre_moris, оно конечно проще - но не в духе учебных задач. Я думаю, что задача то как раз на работу с цифрами.

О, кстати, вот вам и более изящное решение:
Код: Выделить всё
var n, l, m: integer;
begin
    Readln(n);
    l:= 0; m:= 1;
    while n <> 0 do
    begin
        if (n mod 10 <> 0) and (n mod 10 <>5) then
        begin
             l:= l + n mod 10 * m;
             m:= m * 10;
        end;
        n:= n div 10;
   end;
   Writeln(l);
end.
Михаил Крамер
новенький
 
Сообщения: 73
Зарегистрирован: 08.02.2008 14:26:40

Re: Как вытащить из числа 1509 цифры 5 и 0?

Сообщение bw » 09.10.2008 02:04:16

> l:= l + n mod 10 * m;

Лучше бы так написать:
l:= l + (n mod 10) * m;

..bw
Аватара пользователя
bw
постоялец
 
Сообщения: 359
Зарегистрирован: 01.12.2005 11:36:23
Откуда: Усть-Илимск

Re: Как вытащить из числа 1509 цифры 5 и 0?

Сообщение SergeySmlInf » 09.10.2008 09:36:00

Задача в том, чтобы не "вытащить", а получить новое число...

var a,b,c,ch:integer;
begin
write('a=');
read(a);
b:=0;
c:=1;
while a>0 do
begin
ch:=a mod 10;
a:=a div 10;
if (ch<>0) and (ch<>5) then
begin
b:=b+ch*c;
c:=c*10;
end;
end;
writeln(b);
end.
// десятиричная система - ПОЗИЦИОННАЯ!



end.
SergeySmlInf
новенький
 
Сообщения: 40
Зарегистрирован: 02.10.2007 07:59:26
Откуда: Смоленск

Re: Как вытащить из числа 1509 цифры 5 и 0?

Сообщение Михаил Крамер » 09.10.2008 13:27:22

Сергей, а в чём отличие моей программы от Вашей?
Михаил Крамер
новенький
 
Сообщения: 73
Зарегистрирован: 08.02.2008 14:26:40

Re: Как вытащить из числа 1509 цифры 5 и 0?

Сообщение SergeySmlInf » 09.10.2008 15:40:40

А ни в чем.
Просто я на вашу не посмотрел... :shock:
У меня эту задачу 9-классники решали, вот я первую подвернувшуюся и закатал...
А просмотрел только самое начало...
SergeySmlInf
новенький
 
Сообщения: 40
Зарегистрирован: 02.10.2007 07:59:26
Откуда: Смоленск


Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

Рейтинг@Mail.ru