Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.15;
Скачать: CL | DM;

Вниз

Задачка   Найти похожие ветки 

 
Nikolay M. ©   (2004-07-28 15:52) [0]

Дан кусок кода:

int i, j=20;
for (i = 0; i < j; i--)
printf(".");

Надо напечатать 20 раз "."
Что делает это код в действительности?
Исправить ошибку 3-мя способами: 1. Добавить символ, 2. Убрать символ, 3. Заменить один символ на другой.

Добавить и заменить - понятно, а вот удалить пока не получается :( Возможно, просто задача некорректная...


 
Jeer ©   (2004-07-28 15:59) [1]

Так может j лишняя:)


 
Игорь Шевченко ©   (2004-07-28 16:00) [2]


>  3. Заменить один символ на другой.


j-- вместо i-- ?


 
Ega23 ©   (2004-07-28 16:01) [3]

А как с "Добавить символ"?
А, понял! i=40


 
Nikolay M. ©   (2004-07-28 16:03) [4]


> Игорь Шевченко ©   (28.07.04 16:00) [2]

Имхо, да.
Хотя, возможно, сработает более кучерявый способ: < на +.


 
Vitaly ©   (2004-07-28 16:04) [5]


> А, понял! i=40

и чего получится?


 
Ega23 ©   (2004-07-28 16:05) [6]

int i, j=20;
for (i = 40; i < j; i--)
printf(".");


 
Sandman25 ©   (2004-07-28 16:05) [7]

[3] Ega23 ©   (28.07.04 16:01)

Нет
j=-20


 
Игорь Шевченко ©   (2004-07-28 16:06) [8]


> Хотя, возможно, сработает более кучерявый способ: < на +.


За это сразу расстреливать :) Из рогатки тремя очередями.


 
Nikolay M. ©   (2004-07-28 16:06) [9]


> Ega23 ©   (28.07.04 16:05) [6]
> int i, j=20;
> for (i = 40; i < j; i--)
> printf(".");

Тело цикла не выполнится ни разу.


 
Sandman25 ©   (2004-07-28 16:06) [10]

Нет, стормозил :(


 
Vitaly ©   (2004-07-28 16:07) [11]

Добавить?
for (i = 0; -i < j; i--)


 
Nikolay M. ©   (2004-07-28 16:08) [12]


> Игорь Шевченко ©   (28.07.04 16:06) [8]
> > Хотя, возможно, сработает более кучерявый способ: < на
> +.
> За это сразу расстреливать :) Из рогатки тремя очередями.

Ага :)
Решение из разряда "Счастье для следующего поколения программистов". Но ведь должно сработать.
Хотя, конечно, сначала приходит в голову i <> j :)


 
Sandman25 ©   (2004-07-28 16:08) [13]

[11] Vitaly ©   (28.07.04 16:07)

Точно.


 
Ega23 ©   (2004-07-28 16:08) [14]

А, ну да. :о)  Что-то я истину с ложью перепутал..  :о)


 
Nikolay M. ©   (2004-07-28 16:09) [15]


> Хотя, конечно, сначала приходит в голову i <> j

В смысле поменять i и j.


 
nikkie ©   (2004-07-28 16:09) [16]

>Хотя, возможно, сработает более кучерявый способ: < на +.
сработает, конечно.


 
Игорь Шевченко ©   (2004-07-28 16:09) [17]

Sandman25 ©   (28.07.04 16:05) [7]


> j=-20


?

Цикл не сработает, так как

for (i = 0; i < j; i--)

не выполнится, 0 > -20


 
ИдиотЪ   (2004-07-28 16:09) [18]

Nikolay M. ©
один способ применять или все три можно? и по-скольку раз?


 
Sandman25 ©   (2004-07-28 16:10) [19]

ИМХО через удалить невозможно - перебор всех вариантов это доказывает.


 
Sandman25 ©   (2004-07-28 16:11) [20]

[17] Игорь Шевченко ©   (28.07.04 16:09)

Я знаю. См. [10] :)


 
Nikolay M. ©   (2004-07-28 16:11) [21]


> ИдиотЪ   (28.07.04 16:09) [18]

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


 
Sandman25 ©   (2004-07-28 16:13) [22]

[21] Nikolay M. ©   (28.07.04 16:11)

int i, j=20;
for (i = 0; i < j(*; i*)--)
printf(".");

Удаляется несколько символов


 
Nikolay M. ©   (2004-07-28 16:17) [23]


> Sandman25 ©   (28.07.04 16:13) [22]

У меня вариант с удалением одного символа, но печатается далеко не 20 символов, а намного больше :)


 
Игорь Шевченко ©   (2004-07-28 16:17) [24]

Sandman25 ©   (28.07.04 16:13)

syntax error : missing ";" before ")"


 
nikkie ©   (2004-07-28 16:19) [25]

разве можно в for одним ; обходиться?


 
Sandman25 ©   (2004-07-28 16:19) [26]

[24] Игорь Шевченко ©   (28.07.04 16:17)

Точно, спасибо.


 
Sandman25 ©   (2004-07-28 16:22) [27]

int i(*, j*)=20;
for ((*i = 0*); i(* < j*); i--)
printf(".");

Куча символов удаляется, получается
int i=20;
for (; i; i--)
printf(".");


 
Nikolay M. ©   (2004-07-28 16:24) [28]


> Sandman25 ©   (28.07.04 16:22) [27]
> int i(*, j*)=20;
> for ((*i = 0*); i(* < j*); i--)
> printf(".");
>
> Куча символов удаляется, получается
> int i=20;
> for (; i; i--)
> printf(".");


Если в слове "вода" сделать 4 ошибки, получится слово "пиво"? :)


 
Sandman25 ©   (2004-07-28 16:25) [29]

Символы комментариев спутал с дельфийскими.
/* */, конечно же.


 
Sandman25 ©   (2004-07-28 16:26) [30]

[28] Nikolay M. ©   (28.07.04 16:24)

Устрой полный перебор


 
Nikolay M. ©   (2004-07-28 16:32) [31]


> Sandman25 ©   (28.07.04 16:26) [30]

Уже :)
Правда, в уме, конечно :)
Если в 20 удалить 0, будет печататься ~ 2^(sizeof(int)-1) + 2 раз. Т.е. 20 точек все-таки напечатаются...


 
Sandman25 ©   (2004-07-28 16:39) [32]

[31] Nikolay M. ©   (28.07.04 16:32)

Можно удалить, например, i из слова int, создать свой класс nt, и реализовать operator-- в виде this++  :)



Страницы: 1 вся ветка

Текущий архив: 2004.08.15;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.04 c
3-1090466241
raptorus
2004-07-22 07:17
2004.08.15
Уважаемые мастера подскажите как можно просмотреть кодировку файл


14-1090840734
Белый Крыс
2004-07-26 15:18
2004.08.15
Слава Одину! Неужели на форуме Игры появился модератор???


6-1087268007
genemy
2004-06-15 06:53
2004.08.15
именованные каналы


4-1088780499
vajo
2004-07-02 19:01
2004.08.15
процент копирования файла


4-1089136483
Гном1
2004-07-06 21:54
2004.08.15
Как получить доступ к панели задач