Страница 1 из 1

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

СообщениеДобавлено: 08.10.2008 00:11:20
fs444
Как средствами Pascal вытащить из числа 1509 цифры 5 и 0? Я разбираю 1509 на тысячи (1), сотни (5), десятки(0) и единицы (9), нахожу среди них 5 и 0, сдигаю на два разряда влево число единиц (9), но вот как мне соединить бывшие тысячами десятки (1) и сдвинутые влево единицы, я не знаю. Как мне это сделать?

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

СообщениеДобавлено: 08.10.2008 00:26:51
bw
Постановка задачи:
> Как средствами Pascal вытащить из числа 1509 цифры 5 и 0?

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

..bw

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.
;

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

СообщениеДобавлено: 08.10.2008 17:20:44
fs444
Я вам неправильно все объяснил. Вот текст задания:

Добавлено спустя 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.

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.


Вообще, по хорошему, организовать бы циклик - но лень думать.

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

СообщениеДобавлено: 08.10.2008 18:49:01
Padre_Mortius
а не проще будет работать с числом как с массивом символов?

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.

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

СообщениеДобавлено: 09.10.2008 02:04:16
bw
> l:= l + n mod 10 * m;

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

..bw

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

СообщениеДобавлено: 09.10.2008 09:36:00
SergeySmlInf
Задача в том, чтобы не "вытащить", а получить новое число...

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.

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

СообщениеДобавлено: 09.10.2008 13:27:22
Михаил Крамер
Сергей, а в чём отличие моей программы от Вашей?

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

СообщениеДобавлено: 09.10.2008 15:40:40
SergeySmlInf
А ни в чем.
Просто я на вашу не посмотрел... :shock:
У меня эту задачу 9-классники решали, вот я первую подвернувшуюся и закатал...
А просмотрел только самое начало...