Задачка для программистов№ 1
Автор: Большой Грызь
Дата : 27-07-04, Втр, 05:06:18

Есть кусок кода, написанный на С:

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


Можно ли исправить этот код так, чтобы он напечатал двадцать точек:

1) изменив всего один символ в коде программы
2) добавив --//--
3) удалив --//--
Жизнь человека немного стоит по сравнению с его делом.
Но чтобы делать дело, надо жить.
(Э. Хемингуэй)

[ 27-07-04, Tue, 12:12:31 Отредактировано: Большой Грызь ]
Профиль 

Задачка для программистов№ 2
Автор: Эльдар
Дата : 27-07-04, Втр, 07:24:11

я не программист, но мне кажется, что
можно изменить j=20 на j=-20
Профиль 

Задачка для программистов№ 3
Автор: Большой Грызь
Дата : 27-07-04, Втр, 07:30:50

Неверно - цикл не выполнится ни разу.
Жизнь человека немного стоит по сравнению с его делом.
Но чтобы делать дело, надо жить.
(Э. Хемингуэй)
Профиль 

Задачка для программистов№ 4
Автор: a-dagger
Дата : 27-07-04, Втр, 07:31:44

Нееее, тогда i сразу будет больше j и не появится ни одной точки.
Фсе граматичиские ашипки в маих пастах зделаны мной намерино, в здравам уме и тфёрдой памети.
Профиль 

Задачка для программистов№ 5
Автор: Эльдар
Дата : 27-07-04, Втр, 07:36:54

i<j - это условие выполнения цикла или завершения?
Профиль 

Задачка для программистов№ 6
Автор: Большой Грызь
Дата : 27-07-04, Втр, 07:38:07

Эльдар, условие выполнения.
Жизнь человека немного стоит по сравнению с его делом.
Но чтобы делать дело, надо жить.
(Э. Хемингуэй)
Профиль 

Задачка для программистов№ 7
Автор: Эльдар
Дата : 27-07-04, Втр, 07:39:56

тогда -- заменить на ++, только это помоему замена 2х символов
Профиль 

Задачка для программистов№ 8
Автор: Большой Грызь
Дата : 27-07-04, Втр, 07:44:25

Угу. Это замена двух символов. По условию - можно заменить/удалить/добавить лишь один символ.
Жизнь человека немного стоит по сравнению с его делом.
Но чтобы делать дело, надо жить.
(Э. Хемингуэй)
Профиль 

Задачка для программистов№ 9
Автор: Эльдар
Дата : 27-07-04, Втр, 07:46:20

придумал: -i<j
Профиль 

Задачка для программистов№ 10
Автор: Урод и мразь
Дата : 27-07-04, Втр, 07:46:22

1,2 - можно
3 - нельзя
Если первое слово Гагарина было: "Поехали!", то последнее слово Икара - "Приплыли!"
Профиль 

Задачка для программистов№ 11
Автор: Большой Грызь
Дата : 27-07-04, Втр, 07:48:53

Эльдар, верно. На второй вопрос ты ответил.
А как быть с еще двумя?

УиМ а док-во?
Жизнь человека немного стоит по сравнению с его делом.
Но чтобы делать дело, надо жить.
(Э. Хемингуэй)

[ 27-07-04, Tue, 14:49:03 Отредактировано: Большой Грызь ]
Профиль 

Задачка для программистов№ 12
Автор: Эльдар
Дата : 27-07-04, Втр, 07:56:15

а первый вопрос связан с синтаксисом CИ? ну скажем так:
for (i = 0; i < j i--)
Профиль 

Задачка для программистов№ 13
Автор: Большой Грызь
Дата : 27-07-04, Втр, 07:58:15

Угу.. вопрос таки связан с синтаксисом С.

Но я не понял, какое изменение ты сделал.
Жизнь человека немного стоит по сравнению с его делом.
Но чтобы делать дело, надо жить.
(Э. Хемингуэй)
Профиль 

Задачка для программистов№ 14
Автор: Эльдар
Дата : 27-07-04, Втр, 08:00:32

там должна быть ; )
Профиль 

Задачка для программистов№ 15
Автор: Большой Грызь
Дата : 27-07-04, Втр, 08:07:50

Это неверный синтаксис.
Жизнь человека немного стоит по сравнению с его делом.
Но чтобы делать дело, надо жить.
(Э. Хемингуэй)
Профиль 

Задачка для программистов№ 16
Автор: Урод и мразь
Дата : 27-07-04, Втр, 08:09:13

добавить и изменить можно, убрать нет.
Если первое слово Гагарина было: "Поехали!", то последнее слово Икара - "Приплыли!"
Профиль 

Задачка для программистов№ 17
Автор: Большой Грызь
Дата : 27-07-04, Втр, 08:22:10

УиМ, это не док-во давай док-во, КАК можно.
Жизнь человека немного стоит по сравнению с его делом.
Но чтобы делать дело, надо жить.
(Э. Хемингуэй)
Профиль 

Задачка для программистов№ 18
Автор: Gunslinger
Дата : 27-07-04, Втр, 09:27:42

1->

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

Профиль 

Задачка для программистов№ 19
Автор: Большой Грызь
Дата : 27-07-04, Втр, 09:30:24

Gunslinger, верно. Есть ещё один вариант замены Но хитрее
Жизнь человека немного стоит по сравнению с его делом.
Но чтобы делать дело, надо жить.
(Э. Хемингуэй)
Профиль 

Задачка для программистов№ 20
Автор: Gunslinger
Дата : 27-07-04, Втр, 09:31:52

А серьезно 3 вариант возможен?
Что то я его не вижу...
Профиль 

Задачка для программистов№ 21
Автор: Большой Грызь
Дата : 27-07-04, Втр, 09:48:56

На 3-й вопрос ответа, как мне кажется, нет.

Но на 1-й вопрос есть еще один вариант ответа, кроме того, что ты привел.
Жизнь человека немного стоит по сравнению с его делом.
Но чтобы делать дело, надо жить.
(Э. Хемингуэй)
Профиль 

Задачка для программистов№ 22
Автор: Урод и мразь
Дата : 27-07-04, Втр, 10:41:39

for (i = 0; i + j; i--)
for (i = 0; -i < j; i--)
Если первое слово Гагарина было: "Поехали!", то последнее слово Икара - "Приплыли!"
Профиль 

Задачка для программистов№ 23
Автор: Большой Грызь
Дата : 27-07-04, Втр, 10:59:58

Угу

Ловите очередную задачку.

Дано:
1) есть компьютер с процессором, любая команда которого может прочитать из памяти за один раз только один байт.
2) есть таймер, который раз в секунду вызывает процедуру прерывания, увеличивающую некоторую целочисленную переменную в памяти (счётчик), длина которой четыре байта.
Необходимо:
Прочитать точное значение счётчика не запрещая прерывания (!)
Проблема:
Процессор умеет читать лишь по одному байту за раз, т.е. 4-байтную переменную невозможно прочитать одной командой, а, значит, между чтениями последовательных байтов может произойти прерывание, которое изменит значение счётчика.

Решение?
Жизнь человека немного стоит по сравнению с его делом.
Но чтобы делать дело, надо жить.
(Э. Хемингуэй)
Профиль 

Задачка для программистов№ 24
Автор: Gunslinger
Дата : 27-07-04, Втр, 11:32:02

Класс задача, в жизни бы не догадалься,
Вынес задачу на обсуждение в фирме где я работаю и нашел ответ:
int i, j=20;
for (i = 0; i + j; i--)
   printf("." );

На 20-ом обороте i+j будет равняться 0, и цикл остановиться.

А еще есть?
Профиль 

Задачка для программистов№ 25
Автор: Урод и мразь
Дата : 27-07-04, Втр, 11:35:53

> Прочитать точное значение счётчика не запрещая прерывания (!)

точное значение в какой момент?

Читаем 4 байта. Читаем ещё раз. Сравниваем. Если изменились - только что произошло прерывание, читаем третий раз.

Если первое слово Гагарина было: "Поехали!", то последнее слово Икара - "Приплыли!"
Профиль 

Задачка для программистов№ 26
Автор: Большой Грызь
Дата : 27-07-04, Втр, 11:36:46

Ганслингер, УиМ опередил в 22-ом посте

А "еще" - без понятия я нашёл только два.
Жизнь человека немного стоит по сравнению с его делом.
Но чтобы делать дело, надо жить.
(Э. Хемингуэй)
Профиль 

Задачка для программистов№ 27
Автор: Большой Грызь
Дата : 27-07-04, Втр, 11:38:00

Читаем 4 байта. Читаем ещё раз. Сравниваем. Если изменились - только что произошло прерывание, читаем третий раз.

Правильно

Жизнь человека немного стоит по сравнению с его делом.
Но чтобы делать дело, надо жить.
(Э. Хемингуэй)
Профиль 

Задачка для программистов№ 28
Автор: Gunslinger
Дата : 27-07-04, Втр, 11:41:16

Упс, Посты задом наперед идут

А скорость выполнения одной команды чему равняеться?
Может он может все 4 команды считывания выполнить за секунду?

Ну можно считывать по одному байту справа налево, так что если счетчик и измениться
мы об этом не узнаем...

А вообще какова скорость выполнения одной команды?
Профиль 

Задачка для программистов№ 29
Автор: Большой Грызь
Дата : 27-07-04, Втр, 11:47:28

Скорость выполнения одной команды достаточно высока, чтобы время, затраченное даже на сотню чтений из памяти, было ничтожно мало по сравнению с секундой.

По одному байту, что слева направо, что справа налево - не поможет Возьми пример не с байтами, а с цифрами: на счетчике 0099, считываем справа налево 9, 9, приходит прерывание и превращает 0099 в 0100, считываем дальше 1 и 0. И получили мы 0199, что и близко не стоит ни с 0099, ни с 0100

Но УиМ опять успел дать ответ
Жизнь человека немного стоит по сравнению с его делом.
Но чтобы делать дело, надо жить.
(Э. Хемингуэй)
Профиль 

Задачка для программистов№ 30
Автор: Gunslinger
Дата : 28-07-04, Срд, 01:48:55

Понятно
А вообще то мое "Еще?" в прошлом посте было об еще задачах на эту тему.
Профиль 


Вы не зарегистрированы либо не вошли в портал!!!
Регистрация или вход в портал - в главном меню.



 Просмотров:   002619    Постингов:   000030