Две задачи на про цедуры и финкции по Turbo Pascal (помогите,пожалуйста)
Очень наужна помощь)пожалуйста,помогите в написании двух задач:
1) Написать процедуру (функцию) определения количества дней, прошедших от даты T1 до T2 (год не меняется).
Record year: 1000..3000; month: 1..12; day: 1..31;end;
2) Дано натуральное число N (типа longint). Составить программу вывода цифр, входящих в десятичную запись числа (в порядке возрастаня). Использовать множество.
Заранее огромное спасибо!надеюсь на вашу помощь)
1) Написать процедуру (функцию) определения количества дней, прошедших от даты T1 до T2 (год не меняется).
Record year: 1000..3000; month: 1..12; day: 1..31;end;
2) Дано натуральное число N (типа longint). Составить программу вывода цифр, входящих в десятичную запись числа (в порядке возрастаня). Использовать множество.
Заранее огромное спасибо!надеюсь на вашу помощь)
1. Уже было, поищи по форуму.
2. Перевести число в строку, каждый символ строки перевести в число и внести во множество, потом пройтись в цикле от 0 до 9: если соответствующее число есть во множестве, вывести
2. Перевести число в строку, каждый символ строки перевести в число и внести во множество, потом пройтись в цикле от 0 до 9: если соответствующее число есть во множестве, вывести
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ну первую я сделал,а вот со второй..как-то я туплю..не могли бы вы код написать..хотя бы основные моменты)
s:=str(N);
for i:=1 to length(N) do
if not (s in my_set) then include(s,my_set);
for c:='0' to '9' do
if c in my_set then write(c);
for i:=1 to length(N) do
if not (s in my_set) then include(s,my_set);
for c:='0' to '9' do
if c in my_set then write(c);
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Хыиуду писал(а):s:=str(N);
for i:=1 to length(N) do
if not (s in my_set) then include(s,my_set);
for c:='0' to '9' do
if c in my_set then write(c);
Ну, на Паскале это выглядит как-то вот так

Код: Выделить всё
var s : string;
i, N : longint;
my_set : set of char;
c : char;
begin
str(N, s);
for i:=1 to length(S) do
my_set := my_set + [ s[i]]; { проверять на то, что s[i] уже содержится }
{ в my_set необязательно }
for c:='0' to '9' do
if c in my_set then
writeln(c);
end.
-
- Сообщения: 375
- Зарегистрирован: 31 авг 2007, 03:06
может всё же Length(s) ???? :-)))))for i:=1 to length(N) do
Serge_Bliznykov, Да, конечно 

BBB, Serge Bliznykov, спасибо за исправления, но мой код - как раз на Паскале 

Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Хе, век живи, век учисьХыиуду писал(а):BBB, Serge Bliznykov, спасибо за исправления, но мой код - как раз на Паскале![]()

Declaration:
procedure Include(var S: set of T; I:T);
Хотя мой код так же верен. Можно писать и так, и эдак.
Правда, тот же Help Паскаля в описании Include примечает (

The construct Include (S,I) corresponds to S := S + (I) but the Include
procedure generates more efficient code.
Хотя вру, сам уже забыл, что подпрограмма str в Паскале - процедура, а не функция. Эх, ПХП зохавывает мозг 

Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.