Модераторы     Правила  
  Судовой журнал
  В помощь разработчику | Правила раздела
  Программистские голо...

Боцманы:  CTAKAH, cthulhu

 Страница   из 15    |  Показывать   на странице
Старые сначала  Тема: Программистские головоломки.
Grossmutters_G
Поручик



Сообщений: 1882

В этой теме я бы очень хотел обратиться в первую очередь к инструменту программиста-разработчика - к языку программирования, на котором он ваяет свои шедевры.

Вот задачка первая, язык программирования "С":
Нижеприведенный кусок кода должен был выполнять следующие действия, а именно: выдать на экран 20 знаков "*"... Но в спешке, программист Вася вместо "++" после переменной i написал "--"...

Задача: исправить код так, чтобы он выполнял надлежащие ему действия путем замены или добавления (но не обоих действий сразу) всего только одного символа в приведенном фрагменте.

====================================
int i;
for(i=0;i<20;i--)
&nbps;&nbps;&nbps;printf("*");
====================================

Подсказка: говорят, что существует 3 решения данной задачи; мне известны 2 верных, и одно - спорное;

По возможности, хотелось бы получить от заинтересованных минимум два варианта решения, с объяснениями

Возможно, многие уже знают подобную задачу или быстро соображают, решайте все равно Но будьте добры объяснить решение вдруг кто-то не знает Или де дайте подумать остальным - выбор ваш

Итак, в путь!
----------------------
"Было бы величайшей ошибкой думать...",-В.И.Ленин
08 Апреля 2005 23:55      
Кот Матроскин
Бывший океанец
Сообщений: 9825988

Первое, что приходит в голову: вместо
for(i=0;i
09 Апреля 2005 00:22      
Кот Матроскин
Бывший океанец
Сообщений: 9825988

Черт, все отрезало :-(
В общем надо написать не "и меньше 20", a "-i меньше 20"
09 Апреля 2005 00:23      
CrystalSoul
Бывший океанец
Сообщений: 9825988

$x=0;

for($x=0; -$x< 20; $x--) {
echo "*";
}
echo "< br>< br>";

for($x=40; $x< 20; $x--) {
echo "*";
}
echo "< br>< br>";
09 Апреля 2005 00:36      
Кот Матроскин
Бывший океанец
Сообщений: 9825988

CrystalSoul пишет:
$x=0;

for($x=0; -$x< 20; $x--) {
echo "*";
}
echo "< br>< br>";

for($x=40; $x< 20; $x--) {
echo "*";
}
echo "< br>< br>";


Второй вариант не покатит. У тебя i инициализируется со значением 40, условие "i меньше 20" не выполнено при первом же проходе. Программа не напечатает вообще ничего.
09 Апреля 2005 00:40      
CrystalSoul
Бывший океанец
Сообщений: 9825988

M_e_p_h_i_s_t_o пишет:
Второй вариант не покатит. У тебя и инициализируется со значением 40, условие "и меньше 20" не выполнено при первом же проходе. Программа не напечатает вообще ничего.

ты прав, я загнул...
09 Апреля 2005 00:42      
Кот Матроскин
Бывший океанец
Сообщений: 9825988

одно из решении

for(int i=0;i+20;i--)printf("*");

т.к второи параметр for расматривается как боолеан, а боолеан == истене, если он положительное число
09 Апреля 2005 00:46      
Кот Матроскин
Бывший океанец
Сообщений: 9825988

nu a ?

====================================
int i;
for(i=0;i
09 Апреля 2005 00:50      
Кот Матроскин
Бывший океанец
Сообщений: 9825988

еколомонийнбабаjoкеан
09 Апреля 2005 00:58      
Кот Матроскин
Бывший океанец
Сообщений: 9825988

никак не получается наити 3-ии вариант, походу он очень гуру'оидныи
09 Апреля 2005 00:58      
Кот Матроскин
Бывший океанец
Сообщений: 9825988

Це не загадка, а вот повеселее:
1. if(x!=x) {
2. System.out.println("JLS rulez: " + x.class);
3. }

Если попасть во 2 строчку, чего на консоль выведет?
Подсказка: В JLS всё описанно...Есть очень много вариантов
09 Апреля 2005 03:03      
Кот Матроскин
Бывший океанец
Сообщений: 9825988

[OFFTOPIC] но мне интерессно как он во вторую строчку попадет
09 Апреля 2005 03:26      
Кот Матроскин
Бывший океанец
Сообщений: 9825988

ну а если даже и попадет, то видимо адресc в памяти покажет
09 Апреля 2005 03:30      
Impulsive
Шкипер



Сообщений: 100

Спорное, так как минимум 20 выведет точно

int i;
for(i=0;i
09 Апреля 2005 03:43      
Impulsive
Шкипер



Сообщений: 100

Блин,

вместo "i--" вставить "i-i"
09 Апреля 2005 03:45      
Кот Матроскин
Бывший океанец
Сообщений: 9825988

если не вставлять, такои же еффецт
09 Апреля 2005 03:53      
Grossmutters_G
Поручик



Сообщений: 1882

Оба правильных варианта были представленны уважаемыми коллегами в данной теме (M_e_f_i_s_t_o и another)...
Существует спорное решение; оно не правильно в смысле поставленной задачи, т.к. выводит 21 звездочку. Многие склоняются к мнению, что оно ошибочно считается третьим решением, итак, вот оно (очень сходно с решением M_e_f_i_s_t_o), возможно, его хотел показать Impulsive:

int i;
for(i=0;~i<20;i--)
   printf("*");
----------------------
"Было бы величайшей ошибкой думать...",-В.И.Ленин
09 Апреля 2005 10:55      
Grossmutters_G
Поручик



Сообщений: 1882

Impulsive пишет:
Блин,

вместo "i--" вставить "i-i"

Это бесконечный цикл
----------------------
"Было бы величайшей ошибкой думать...",-В.И.Ленин
09 Апреля 2005 10:56      
Grossmutters_G
Поручик



Сообщений: 1882

знак "больше" - последовательность символов "&", "g", "t" и ";"
знак "меньше" - последовательность символов "&", "l", "t" и ";"
знак "копирайт" - догадаетесь сами?
>
----------------------
"Было бы величайшей ошибкой думать...",-В.И.Ленин
09 Апреля 2005 11:05      
Grossmutters_G
Поручик



Сообщений: 1882

Хмм, прошу прощения за искаверканный ник, M_e_p_h_i_s_t_o.
----------------------
"Было бы величайшей ошибкой думать...",-В.И.Ленин
09 Апреля 2005 11:10      
 Страница   из 15    |  Показывать   на странице
Перейти в
© Stanislav Neuberger 2001-∞ · Служба поддержки