Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.036 c
1-1091023975
race1
2004-07-28 18:12
2004.08.15
хитрый массив


3-1090422734
Kapitan
2004-07-21 19:12
2004.08.15
Аутентификация в SAM из ХП


1-1091489439
AleKo
2004-08-03 03:30
2004.08.15
FastReport -> Excel


1-1091450628
sdw_syscoder
2004-08-02 16:43
2004.08.15
Компонент TProgressBar


3-1090225634
CrazyElk
2004-07-19 12:27
2004.08.15
Как получить старое значение поля в onValidate?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский