Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Множества, Паскаль (http://www.tehnari.ru/f41/t73515/)

gabriela 19.05.2012 20:59

Множества, Паскаль
 
дана последовательность из n натуральных чисел.написать программу,которая выводит в возрастающем порядке все цифры,которые не входят ни в одно число,кратные заданному числу k

Vladimir_S 19.05.2012 21:08

А чему могут быть кратны цифры? Только 2, 3 или 4. То есть k - один из этих делителей? Или может быть, не "кратные", а "кратное"?

gabriela 20.05.2012 11:05

описалась)))кратное

Vladimir_S 20.05.2012 16:49

Цитата:

Сообщение от gabriela (Сообщение 735018)
описалась)))кратное

Ну тогда-то что...
Код:

Var
 n,i:Byte;
 x,k:LongInt;
 S:Set of Byte;

Procedure Figur(V:LongInt);
var
 fig:Byte;
begin
 repeat
  fig:=V mod 10;
  If Not(fig in S) then S:=S+[fig];
  V:=V div 10;
 until V=0;
end;

Begin
 Write('n = ');
 Readln(n);
 Write('k = ');
 Readln(k);
 Writeln('Enter ',n,' numbers:');
 For i:=1 to n do
  begin
  Write(i:3,'  ');
  Readln(x);
  If (x mod k)=0 then Figur(x);
  end;
 For i:=0 to 9 do
  If Not(i in S) then write(i:2);
 Readln
End.


gabriela 28.05.2012 19:45

Вложений: 1
?почему она какие-то странные числа выводит?

Vladimir_S 28.05.2012 20:28

Цитата:

Сообщение от gabriela (Сообщение 739503)
?почему она какие-то странные числа выводит?

Ну... видимо я не так понял задание. Вообще-то четче формулировать надо! Читаем:
Цитата:

Сообщение от gabriela (Сообщение 734871)
дана последовательность из n натуральных чисел.написать программу,которая выводит в возрастающем порядке все цифры,которые не входят ни в одно число, кратное заданному числу k

В Вашем примере к числам, кратным k=3, относятся 12 и 9, вот 1, 2 и 9 и не вошли в перечень. Или надо было понимать так, что цифры надо вывести не вообще любые, а только те, что входят во вводимые числа? Тогда так и надо писать! А у Вас, замечу, сказано ВСЕ цифры.

gabriela 28.05.2012 20:40

это такое условие в задачнике......как тогда исправить чтобы выводились цифры только те, что входят во вводимые числа?

Vladimir_S 28.05.2012 21:03

Цитата:

Сообщение от gabriela (Сообщение 739539)
это такое условие в задачнике......как тогда исправить чтобы выводились цифры только те, что входят во вводимые числа?

А вот так:
Код:

Type
 St=Set of Byte;
Var
 n,i:Byte;
 x,k:LongInt;
 S,S1:St;

Procedure Figur(V:LongInt; Sf_in:St; var Sf_out:St);
var
 fig:Byte;
 Sf:St;
begin
 Sf:=Sf_in;
 repeat
  fig:=V mod 10;
  If Not(fig in Sf) then Sf:=Sf+[fig];
  V:=V div 10;
 until V=0;
 Sf_out:=Sf;
end;

Begin
 S:=[];
 S1:=[];
 Write('n = ');
 Readln(n);
 Write('k = ');
 Readln(k);
 Writeln('Enter ',n,' numbers:');
 For i:=1 to n do
  begin
  Write(i:3,'  ');
  Readln(x);
  If (x mod k)=0 then Figur(x,S,S) else Figur(x,S1,S1);
  end;
 For i:=0 to 9 do
  If Not(i in S) and (i in S1) then write(i:2);
 Readln
End.


gabriela 28.05.2012 21:38

sf_in-это исходное множество,sf_out-множество цифр,которые есть в исходных числах?и еще каким образом происходит сортировка по возрастанию?

Vladimir_S 29.05.2012 09:47

Цитата:

Сообщение от gabriela (Сообщение 739576)
sf_in-это исходное множество,sf_out-множество цифр,которые есть в исходных числах?

Угу. Точнее так. В процедуру запускается некое исходное множество цифр и анализируемое число. Дальше это множество дополняется теми цифрами, которое оно не содержит, но которые имеются в числе. Выдается такое вот "расширенное" множество.
Цитата:

Сообщение от gabriela (Сообщение 739576)
и еще каким образом происходит сортировка по возрастанию?

Да просто перебираются 10 цифр от 0 до 9, и если цифра есть в числах, не делящихся на k, и ее нет в числах, делящихся на k, то она выводится на экран.


Часовой пояс GMT +4, время: 05:58.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.