PDA

Просмотр полной версии : Две задачи на про цедуры и финкции по Turbo Pascal (помогите,пожалуйста)



GordonF
12.12.2007, 16:39
Очень наужна помощь)пожалуйста,помогите в написании двух задач:
1) Написать процедуру (функцию) определения количества дней, прошедших от даты T1 до T2 (год не меняется).
Record year: 1000..3000; month: 1..12; day: 1..31;end;

2) Дано натуральное число N (типа longint). Составить программу вывода цифр, входящих в десятичную запись числа (в порядке возрастаня). Использовать множество.

Заранее огромное спасибо!надеюсь на вашу помощь)

Хыиуду
13.12.2007, 11:13
1. Уже было, поищи по форуму.
2. Перевести число в строку, каждый символ строки перевести в число и внести во множество, потом пройтись в цикле от 0 до 9: если соответствующее число есть во множестве, вывести

GordonF
13.12.2007, 18:32
Ну первую я сделал,а вот со второй..как-то я туплю..не могли бы вы код написать..хотя бы основные моменты)

Хыиуду
14.12.2007, 11:38
s:=str(N);
for i:=1 to length(N) do
if not (s[i] in my_set) then include(s[i],my_set);
for c:='0' to '9' do
if c in my_set then write(c);

BBB
14.12.2007, 12:51
s:=str(N);
for i:=1 to length(N) do
if not (s[i] in my_set) then include(s[i],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.

Serge_Bliznykov
15.12.2007, 00:43
for i:=1 to length(N) do
может всё же Length(s) ???? :-)))))

BBB
17.12.2007, 09:43
Serge_Bliznykov, Да, конечно :)

Хыиуду
17.12.2007, 11:00
BBB, Serge Bliznykov, спасибо за исправления, но мой код - как раз на Паскале ;)

BBB
17.12.2007, 12:45
BBB, Serge Bliznykov, спасибо за исправления, но мой код - как раз на Паскале ;)
Хе, век живи, век учись :) /это я о себе/ Не знал (или напрочь забыл), что есть для работы с множествами процедуры Include / Exclude:

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.

Хыиуду
18.12.2007, 11:30
Хотя вру, сам уже забыл, что подпрограмма str в Паскале - процедура, а не функция. Эх, ПХП зохавывает мозг ;)

GordonF
23.12.2007, 16:30
Спасибо огромное!)
Парни,вот есть еще один вопрос..задачка,ну никто не знает как сделать..со многими разговаривал..а очень нужно)

Использовать подпрограммы (ввода, вывода, обрабатывающей части). Дан массив целых чисел A[M,N], где M,N<=10. Вставить последнюю стоку после строки, в которой находится заданное число К.

Хыиуду
24.12.2007, 11:17
1. Пройти в цикле по массиву, найти строку с числом К. Пусть она будет с номером А.
2. Все строки, начиная с М, кончая А+1 включительно, перенести на 1 вниз. Т. е. в М+1 строку копируется М-я, в М-ю - М-1-я и т.д.
3. В А+1-ю строку копируется М+1-я