Перейти к содержанию

Помогите решить пожалуйста


Рекомендуемые сообщения

Прошу помощи. Язык - Pascal. Заранее спасибо.

Требуется подсчитать, сколько дней прошло с начала 2010 года до указанной даты в 2010 году.

Входные данные

Вводятся два числа, разделенных пробелом - число, месяц.

Выходные данные

Вывести одно число - количество дней.

Примеры тестов:

входные данные

2 1

выходные данные

2


входные данные

31 12

выходные данные

365

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

Входные данные

Вводятся 5 натуральных чисел, меньших 1000. Числа разделены пробелом.

Выходные данные

Вывести полученную последовательность. Числа не должны содержать ведущих нулей (то есть не должны начинаться с нуля).

Примеры тестов:

входные данные

1 2 3 4 5

выходные данные

5 4 3 2 1


входные данные

23 543 100 230 7

выходные данные

7 32 1 345 32

Вводятся три цифры. Требуется составить из них наибольшее возможное четное число.

Входные данные

Вводятся три цифры, разделенные пробелом. Гарантируется, что хотя бы одна из них отлична от нуля и хотя бы одна цифра четная.

Выходные данные

Вывести одно трехзначное число (без пробелов). Число не может начинаться с нуля.

Примеры тестов

входные данные

2 4 3

выходные данные

432


входные данные

0 0 1

выходные данные

100

Ссылка на комментарий

zaki

Я не учусь в универе. Я самостоятельно изучаю язык. Нашёл старые задачки. Что-то не совсем получается.

Добавлено спустя 3 минуты 15 секунд:

Ещё хочется посмотреть разные способы решения. Например вторую задачку если подумать, то можно решить не числовыми значениями, а строковыми. Но это не подходит ко всем вводимым числам.

Ссылка на комментарий
zaki

Я не учусь в универе. Я самостоятельно изучаю язык. Нашёл старые задачки. Что-то не совсем получается.

Добавлено спустя 3 минуты 15 секунд:

Ещё хочется посмотреть разные способы решения. Например вторую задачку если подумать, то можно решить не числовыми значениями, а строковыми. Но это не подходит ко всем вводимым числам.

Тогда молодец! Но почему мы за тебя должны изучать ЯП? Ладно ты бы спросил про какую то функцию или что там...Я сам пхп учу, часто прошу помочь. Но я не прошу реализовать всю задачу.

Ссылка на комментарий

zaki

Я наверно неправильно сформулировал вопрос. Я прошу подсказать мне как наименее затратно решить эти задачи. Или функцию, процедуру подскажите пожалуйста.

Ссылка на комментарий

1. можно тупо записать в массив из 12 элементов количество дней в каждом месяце, а потом до N-1 месяца из входных данных плюсовать числа с массива, а потом прибавить кол-во дней из даты.

2. да, можно записать строку, потом записать ее с конца до начала и удалить нули после пробелов.

3. ищешь минимальное четное, ставишь в правый разряд, а остальные числа записываешь по убыванию

Ссылка на комментарий

Две решил. Но последняя не получается. Точнее получается, но не со всеми значениями.


var
a,b,c,n,m,m1,m2,k,l:word;
begin
//repeat
readln(a,b,c);
(*until*) if ((a<>0) or (b<>0) or (c<>0)) and ((a mod 2=0) or (b mod 2=0) or (c mod 2=0))
then begin
m:=a; k:=b; l:=c;
if (b then begin
m:=b;
k:=a;
l:=c;
end;
if (c then begin
m:=c;
k:=b;
l:=a;
end;
n:=m;
m1:=k;
m2:=l;
if m1>l
then begin
m1:=l; m2:=k;
end;
write(m2,m1,n);
(*n:=m2*100+m1*10+n;
write(n);*)
end
else exit;
end.
program zp;

С какими значениями не проходит узнать не получается. Так как проверяет удалённый сервер. Где может быть ошибка?

Ссылка на комментарий

по-моему у тебя не все условия покрываются., попробуй как то так сделать:


var
numArrayIn : array [1..3] of byte;
numArrayOut : array [1..2] of byte;
i, imin, temp: byte;

begin

readln(numArrayIn[1],numArrayIn[2],numArrayIn[3]); // не помню какой там ввод, если честно

// в цикле находим минимальное четное
temp := 10;
for i:=1 to 3 do
begin
if ((numArrayIn[i] < temp) and (numArrayIn[i] mod 2 = 0)) then
begin
temp := numArrayIn[i];
imin := i;
end;
end;

// --------------
temp := 1;
for i:=1 to 3 do
begin
if (i <> imin) then
begin
numArrayOut[temp] := numArrayIn[i];
temp := temp + 1;
end;
end;

if (numArrayOut[1] < numArrayOut[2]) then
writeln(numArrayOut[2],numArrayOut[1],numArrayIn[imin])
else
writeln(numArrayOut[1],numArrayOut[2],numArrayIn[imin])

end.

синтаксис правда не помню нихера да и намудрил скорее всего и проще можно было сделать

Ссылка на комментарий

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...