Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2009, 13:50   #1
Armorer
Подтвердите свой е-майл
 
Регистрация: 07.04.2007
Сообщений: 120
По умолчанию Можно ли решить такую задачу не используя условный оператор?

Две очень похожие задачи. Первую у меня получилось решить без условия вторую нет.

Цитата:
1.Дни пронумерованы следующим образом: 0 -Воскресенье 1 - Понедельник ... 6 - Суббота. Дано целое число K. Определить номер дня недели для K-го дня года если известно, что первый день года - четверг.
Я решил так:
Код:
  Readln(N);
  Writeln((N+3) mod 7);

Цитата:
2.Дни пронумерованы следующим образом: 1 - Понедельник ... 6 - Суббота 7 -Воскресенье. Дано целое число K. Определить номер дня недели для K-го дня года если известно, что первый день года - суббота.
Вторую получается только так:
Код:
  Readln(N);
  N := (N+5) mod 7;
  if N = 0 then
    N := 7;
  Writeln(N);
Можно ли решить вторую не используя условие?
Armorer вне форума Ответить с цитированием
Старый 10.03.2009, 14:21   #2
Svetlag
Пользователь
 
Аватар для Svetlag
 
Регистрация: 24.02.2009
Сообщений: 85
По умолчанию

Можно массив ввести arr из семи элементов - 7,1,2,3,4,5,6. И обращаться к нему
Код:
Writeln( arr[ ((N+5) mod 7) +1]);
.
Svetlag вне форума Ответить с цитированием
Старый 10.03.2009, 17:50   #3
Armorer
Подтвердите свой е-майл
 
Регистрация: 07.04.2007
Сообщений: 120
По умолчанию

Спасибо, я даже не подумал об этом=)

Но дело в том что это задачи из задачника по программированию. В нём все задачи сгруппированы по темам. Это из темы про целые числа. Массивы и условия идут потом. Думаю, что эта задача должна решатся без них.

Вот еще задача из самой первой темы ввод/вывод, та же проблема, не могу без условия=)

Цитата:
Даны коэффициенты квадратного уравнения A, B, C. Найти корни, считать что дискриминант положительный. Вывести сначала меньший корень потом больший.
Код:
  Readln( A, B, C );
  D := sqrt(B*B - 4*A*C);
  A := 2*A;
  X1 := (-B + D)/A;
  X2 := (-B - D)/A;
  if X2 > X1 then //можно ли по другому?
    Writeln(X1, X2)
  else
    Writeln(X2, X1);
Armorer вне форума Ответить с цитированием
Старый 10.03.2009, 18:42   #4
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Вторая задачка:
Код:
N := (N + 5) mod 7;
N := N + ((7 - N) div 7) * 7;
//если N > 0, то второе слагаемое равно 0
Росли вроде умными, выросли дурнями... (c)А.Васильев

Последний раз редактировалось Greblin; 10.03.2009 в 18:48.
Greblin вне форума Ответить с цитированием
Старый 15.10.2009, 12:13   #5
verginia
Новичок
Джуниор
 
Регистрация: 15.10.2009
Сообщений: 1
По умолчанию

Цитата:
Сообщение от Armorer Посмотреть сообщение
Спасибо, я даже не подумал об этом=)

Но дело в том что это задачи из задачника по программированию. В нём все задачи сгруппированы по темам. Это из темы про целые числа. Массивы и условия идут потом. Думаю, что эта задача должна решатся без них.

Вот еще задача из самой первой темы ввод/вывод, та же проблема, не могу без условия=)



Код:
  Readln( A, B, C );
  D := sqrt(B*B - 4*A*C);
  A := 2*A;
  X1 := (-B + D)/A;
  X2 := (-B - D)/A;
  if X2 > X1 then //можно ли по другому?
    Writeln(X1, X2)
  else
    Writeln(X2, X1);
write(min(x1,x2),max(x1,x2));
verginia вне форума Ответить с цитированием
Старый 15.10.2009, 12:53   #6
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Код:
write(min(x1,x2),max(x1,x2));
А в Turbo Pascal такие функции есть?
Но если их нет, то их можно написать самому (без условных операторов):
Код:
function Min (A, B: Integer): Integer;
begin
  Min := (A + B - Abs (A - B)) div 2;
end; {func Min}

function Max (A, B: Integer): Integer;
begin
  Max := (A + B + Abs (A - B)) div 2;
end; {func Max}
Arigato вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите решить такую задачу: Haret Паскаль, Turbo Pascal, PascalABC.NET 12 20.12.2015 11:36
нужно решить задачу используя указатели С++ Nastusha Помощь студентам 4 08.02.2009 22:45
Условный оператор в Borland C++ 3.1 Xeon332 Помощь студентам 8 30.01.2009 17:08
Условный оператор IF в Си Zid@ne Помощь студентам 7 24.12.2008 20:02