Коллекция лытдыбров - Задачка [entries|archive|friends|userinfo]
Dvas

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

Задачка [Mar. 17th, 2007|01:49 pm]
Previous Entry Add to Memories Tell A Friend Next Entry
Для тех, кто знаком с языком C.
Рассказал мне однокурсник, так что, возможно, боян.
Есть код:
#include <stdio.h>
void main (void)
{
   int i, N=20;
   for ( i = 0 ; i < N ; i-- )
     printf ("*");
}

Придумать три способа изменить в нем один символ так, чтобы программа выводила 20 звездочек.
Символы можно только заменять: удалять и добавлять нельзя.
Два решения так себе, а третье - клевое, я как нашел - так мне эта задача понравилась.
LinkLeave a comment

Comments:
[User Picture]
From:[info]b1eck@lj
Date:March 17th, 2007 - 09:13 am
(Link)
Пробел - это символ? (Выходит, что да, иначе зачем N=20 и i = 0 написаны неодинаково ;-))
Если нет, то у меня только два решения...
[User Picture]
From:[info]dvasnickolas@lj
Date:March 17th, 2007 - 05:01 pm
(Link)
Пробел -- символ
From:(Anonymous)
Date:March 17th, 2007 - 01:30 pm

не работает!

(Link)
в данном виде прога заполняет экран туевой хучей звёздочек. i++ надо.
[User Picture]
From:[info]dvasnickolas@lj
Date:March 17th, 2007 - 05:01 pm

Re: не работает!

(Link)
Спасибо, а пост почитать не пробовали :)?
From:[info]back_in_usa@lj
Date:March 17th, 2007 - 04:15 pm
(Link)
1) i ^ N
2) -i < N
3) i--1
[User Picture]
From:[info]dvasnickolas@lj
Date:March 17th, 2007 - 05:03 pm
(Link)
Ой, четвертый способ нарисовался :)
From:[info]back_in_usa@lj
Date:March 17th, 2007 - 05:10 pm
(Link)
В первом способе ошибка: должно быть & вместо ^. Причем точное количество напечатанных звездочек в этом варианте будет зависеть от архитектуры (способа представления отрицательных чисел).
[User Picture]
From:[info]dvasnickolas@lj
Date:March 17th, 2007 - 05:14 pm
(Link)
Стоп. i & N вывалится на первой же итерации, там же i = 0;
Но я когда его придумывал просто написал i + N
From:[info]back_in_usa@lj
Date:March 18th, 2007 - 12:57 pm
(Link)
Да, с побитовыми операциями не получается.
From:[info]back_in_usa@lj
Date:March 17th, 2007 - 05:13 pm
(Link)
Ну, тогда:

N--
[User Picture]
From:[info]b1eck@lj
Date:March 18th, 2007 - 08:41 am
(Link)
1. i + N имелось в виду?
3. Это как? %)
From:[info]back_in_usa@lj
Date:March 18th, 2007 - 12:57 pm
(Link)
1) см. ветку обсуждения.
3) из переменной i вычесть -1.
[User Picture]
From:[info]b1eck@lj
Date:March 18th, 2007 - 04:07 pm
(Link)
i--1 - это компилится? У меня вот нет... Хотя согласен, идея здравая.
From:[info]back_in_usa@lj
Date:March 18th, 2007 - 04:59 pm
(Link)
Мне негде проверить. Но, вроде, ничего незаконного в этой записи быть не должно - унарный минус имеет высокий приоритет, а скобки в выражениях факультативны.
From:[info]back_in_usa@lj
Date:March 19th, 2007 - 03:26 pm
(Link)
Попробовал на gcc - не компилится.