Форум: "Потрепаться";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];
ВнизКурс молодого бойца (читать - программиста) Найти похожие ветки
← →
OneFragLeft © (2004-12-25 02:07) [0]Напишите, пожалуйста, все типичные задачи,
которые должен уметь выполнять начинающий
программист, осваивающий Delphi. Т.е. вроде:
уметь запуздырить иконку в трей и т.д.
p.s.: Стандартные алгоритмические задачки не предлагать,
а задачи, связанные с программированием в Delphi и Win32.
← →
default © (2004-12-25 02:10) [1]вот эту реши попробуй
"Есть массив, упорядоченный по возрастанию, например, 0123456789
Надо его переупорядочить "горкой в центре": 0246897531
Цифры приведены для примера, на самом деле массив может быть любой заданной
длины N,
и числа там тоже любые, только что упорядоченные.
Основная проблема - сделать это за время O(N) с затратами памяти меньшими, чем
O(N).
Решение лучше всего оформить в виде процедуры ReOrder(a:array of Integer); "
с пятничных задачек осталась
← →
Profi © (2004-12-25 02:15) [2]default © (25.12.04 2:10) [1]
Встречный вопрос: в массиве четное или нет число элементов?
← →
Игорь Шевченко © (2004-12-25 02:16) [3]
> уметь запуздырить иконку в трей
Этого он уметь не должен. И лоток CDROMа тоже не должен уметь выдвигать. А самое главное, он не должен уметь прятать процесс под XP.
Таких не берут в программисты.
← →
default © (2004-12-25 02:17) [4]Profi © (25.12.04 02:15) [2]
N-любое(целое неотрицательное)
она так и не была решена кстати
← →
Profi © (2004-12-25 02:21) [5]default © (25.12.04 2:17) [4]
Просто если N - четное, то симметричная горка не получится.
← →
Просто Джо © (2004-12-25 02:22) [6]Игорь Шевченко © (25.12.04 02:16) [3]
Вот-те на - огорошили человека!
:)
← →
default © (2004-12-25 02:23) [7]Profi © (25.12.04 02:21) [5]
пример-то дан для чётного N=10
← →
Johnmen © (2004-12-25 02:25) [8]>OneFragLeft © (25.12.04 02:07)
>p.s.: Стандартные алгоритмические задачки не предлагать,
>а задачи, связанные с программированием в Delphi и Win32.
Не быть тебе программистом...
← →
Profi © (2004-12-25 02:25) [9]default © (25.12.04 2:23) [7]
Ок! Слева четные, справа нет. Либо то что больше (четное оно или нет) в центре. Понял.
← →
OneFragLeft © (2004-12-25 02:34) [10]Johnmen © (25.12.04 2:25) [8]
Да вроде и не собираюсь:)
← →
Johnmen © (2004-12-25 02:37) [11]>OneFragLeft © (25.12.04 02:34) [10]
>Да вроде и не собираюсь:)
А зачем вопрос? Для общего развития?
← →
OneFragLeft © (2004-12-25 02:47) [12]Да просто можно было собрать все ответы на типичные задачи.
Сделать FAQ и показывать его всем новичкам:), чтобы не приставали с
заезжеными на сто рядов вопросами. По-моему будет толк.
Да и самому интересно узнать что я ещё не делал.
← →
Johnmen © (2004-12-25 02:56) [13]>OneFragLeft © (25.12.04 02:47) [12]
>Да и самому интересно узнать что я ещё не делал.
Такое впечатление, что ты ещё ничего не делал...:)
Ибо страстное желание поучить и поделать факи для других возникает именно у новичков...
← →
olookin © (2004-12-25 03:06) [14]А вам не надоело выяснять свойства программиста? Ведь вообще пока неясно, что есть как таковой программист...
← →
VMcL © (2004-12-25 09:57) [15]>>olookin © (25.12.04 03:06) [14]
Почему неясно? Мне, например, ясно. Программист, врач, учитель etc. - это профессии.
← →
Ega23 © (2004-12-25 10:01) [16]Реши задачу нахождения путей Гамильтона в графе.
← →
Blackman © (2004-12-25 11:07) [17]>Ega23 © (25.12.04 10:01) [16]
Пугаешь ? :) Кто такой граф Гамильтон ?
← →
Sanek_Metaller © (2004-12-25 12:03) [18]>А самое главное, он не должен уметь прятать процесс под XP.
А можно уметь прятать taskmgr от пользователя?:D
← →
Kerk © (2004-12-25 12:07) [19]
> Игорь Шевченко © (25.12.04 02:16) [3]
>
> > уметь запуздырить иконку в трей
>
>
> Этого он уметь не должен. И лоток CDROMа тоже не должен
> уметь выдвигать. А самое главное, он не должен уметь прятать
> процесс под XP.
>
> Таких не берут в программисты.
Нет, Игорь. Он должен это уметь.. И иконку в трей запуздырить и лоток выдвинуть.. задачи разные бывают.
← →
GrayFace © (2004-12-25 12:27) [20]Blackman © (25.12.04 11:07) [17]
Пугаешь ? :) Кто такой граф Гамильтон ?
LOL
← →
Чеширский_Кот © (2004-12-25 12:33) [21]написать компьютерную игру в шахматы, способную обыгрывать хотя бы своего создателя
← →
GrayFace © (2004-12-25 12:41) [22]Главное, что должен узнать новечок - это местонахождение справок и английский язык.
Неплохая идея. Я - за такие разделы:
По Delphi:
основные сочетания клавишь (Ctrl+Space, Ctrl+Shift+Up/Down, Ctrl+J)
указатели
числа с плавающей точкой
Bitmap.Scanline
особенности работы с объектами(virtual и др, что есть ссылка на функцию объекта)
свойство WindowProc у наследников TControl
По WinAPI:
принципы вкратце
перебор всех окон
сообщения и оконные процедуры
запуздыривание в трэй
SystemParametersInfo, GetSystemMetrics и др. полезности
перебор всех процессов
узнавание %CPU
работа с регионами
горячие клавиши и хуки
перехват
прятанье под NT
← →
Mystic © (2004-12-25 13:12) [23]Типичные задачи:
1) работа со справкой и поиском;
2) решение алгоритмических задач;
3) решение архитектурных задач.
← →
OneFragLeft © (2004-12-25 15:49) [24]А если под бойцом понимать КНОПКОКИДАТЕЛЯ?
То как?
← →
Rule © (2004-12-25 16:23) [25]помоему главное - это желание, если будут способности плюс к вышеуказанному, то процесс будет продвигаться быстрее ... а уметь ничего не надо, в процессе научишься ...
← →
OneFragLeft © (2004-12-25 16:42) [26]Согласен.
Может вопрос не так поставил.
Надо было вот так:
Какие программы должен написать начинающий, чтобы освоить основные приёмы работы в Дельфи.
А когда он будет их делать, то у него возникнет куча проблем, которые ему придётся решать,
в том числе и лоток открыть, и иконку поместить в трэй и др.
P.S.:
Расскажите, пожалуйста, как сделать на Дельфи программу (только на WinAPI(вообще ни разу не писал)),
чтобы при запуске появлялась форма с надписью типа "Hello, World" и кнопка "Ок" для закрытия.
PPS: Надо же с чего-то начинать:)
Johnmen © (25.12.04 2:56) [13]
Не сочтите за скромность, но я считаю, что ещё ничего я ещё не написал.
Пишу только для себя, по необходимости. Думаю многие с этого начинают.
Причём я не имею образования программиста и даже не учусь на него, а занимаюсь
ради удовольствия и для общего развития.
Спасибо за внимание.
← →
Aldor_ (2004-12-25 17:07) [27]
> Ega23 © (25.12.04 10:01) [16]
> Реши задачу нахождения путей Гамильтона в графе.
Угу, да еще за время, меньшее чем O(n!), тогда этот новичок еще и премию получит, может даже Нобелевскую, ибо докажет, что вс NP-полные задачи имеют решение за полиномиальное время :)
P.S. Прошу прощение за растопыривание пальцев :)
← →
uny © (2004-12-25 17:10) [28]>Пишу только для себя
думаю оно и есть - приносит положительное - значит потом деньгами на подобное может и уговорят)
← →
Artic (2004-12-25 17:17) [29]Так много рассказали, я ничего не понял. Про премию интересно а с чего начать не говорите.
← →
OneFragLeft © (2004-12-25 17:24) [30]Кстати, я считаю, что каждый юзер должен уметь работать
с каким-нибудь языком программирования, а не только специалист
должен это уметь.
Никто же не говорит, что в Ворде должен сидеть наборщик!
А Дельфи чем лучше?
← →
default © (2004-12-25 17:27) [31]OneFragLeft © (25.12.04 17:24) [30]
ну зачем так
каждому своё
Artic (25.12.04 17:17) [29]
с получения премии)
попробуй реши задачу [1]
← →
Rule © (2004-12-25 18:21) [32]ага, а каждый гражданин должен знать законы, кодексы и все поправки, имея при этом огромную дома библиотеку, и каждый должен знать бухгалтерию, чтобы знать как ему начисляется зарплата и экономику должен знать и строение автомобиля досконально и мог его отремонтировать а ещё если он на самолете летает, то уметь водить самолет, если на поезде, то поезд и так далее
помоему юзеру не надо программировать ... потомучто он просто юзур ... каждому свое
а автору могу сказать, есть куча учебников, и многие пошаговые ... советую взять гед ещё и задачи для самостоятельного решения есть, вот пару таких учебников пройтись и все....
а вот ещё надо определиться с направлением развития (можно там по базам данных выступать, можно по железу и низкому уровню ... ну мало ли чего интересного бывает)
← →
OneFragLeft © (2004-12-25 21:22) [33]to Rule:
А я и не говорю, что юзер должен знать досканально,
но что-нибудь примитивненькое уметь делать должен.
Нет, я не говорю о полных ламерах, которые толко и
умеют что в косынку поиграть, файлик скопировать.
Но если жизнь человека тесно связана с компьютером, то
он должен уметь общаться с ним, в том числе и "научить"
его (написать программу). Уметь писать программы -
это часть компьютерной грамотности.
← →
SSX-Sys_Team (2004-12-25 22:54) [34]Задачка простая:
Имеется матрица n x n - 1)транспонировать ее; 2)все элементы, сумма цифр которых четная заменить на "1";
Задача посложнее:
то же самое, только с 3D matrix ;)
← →
Плохиш © (2004-12-26 00:13) [35]
> OneFragLeft © (25.12.04 21:22) [33]
Ничего, ничего, повзрослешь, успокоишься
← →
default © (2004-12-26 00:45) [36]OneFragLeft © (25.12.04 21:22) [33]
кстати довольно характерная черта людей - когда они что-то неплохо знают считать это за сомо собой разумеешееся и требовать того же от других
всё же лучше исходить из объективности
← →
OneFragLeft © (2004-12-26 00:49) [37]default © (26.12.04 0:45) [36]
Польщён, конечно, но это не про меня.
"Я знаю, что ничего не знаю." (слова не мои)
← →
Хакер © (2004-12-26 00:52) [38]default © (26.12.04 0:45) [36]
ага, я например неплохо знаю тему срытия %)))
н0 не могу по разным причинам говорить на эту тему тут:(((
← →
Хакер © (2004-12-26 00:52) [39]OneFragLeft © (26.12.04 0:49) [37]
> "Я знаю, что ничего не знаю." (слова не мои)
золотые слова
← →
Игорь Шевченко © (2004-12-26 00:55) [40]Kerk © (25.12.04 12:07) [19]
> Нет, Игорь. Он должен это уметь.. И иконку в трей запуздырить
> и лоток выдвинуть.. задачи разные бывают.
Роман, а смысл долга уметь это делать ? Задач, которые требуют таких вот умений, очень ограниченное количество и они уже давным-давно решены, судя по обилию иконок в трее и "выдвигателей лотков CD-ROM" на разного рода download-сайтах. Я, к стыду своему, не знаю, кому может в здравом уме и твердой памяти придти в голову пользоваться программой, выдвигающей этот злополучный лоток, когда его можно выдвинуть кнопкой на самом устройстве. CD-ROM"ов без кнопок я за свою не очень короткую жизнь еще не видел, вряд ли чего-то пропустил.
С уважением,
← →
default © (2004-12-26 00:56) [41]OneFragLeft © (26.12.04 00:49) [37]
туда же
может правда формулировка чуть другая в оригинале
"чем больше знаешь тем больше понимаешь что ничего не знаешь"
← →
Хакер © (2004-12-26 00:57) [42]Игорь Шевченко © (26.12.04 0:55) [40]
ага, я ещё НЕ разу никогда не юзал спец-прогу для видвигания лотка :)))
← →
OneFragLeft © (2004-12-26 01:03) [43]Вот тут возник ещё один вопрос:
А каких программ ещё нет? Кому что нужно?
Хочу начать делать то, что никто ещё не делал.
Чтобы возникали передо мной задачи, готовые
ответы на которые, нельзя найти.
Подкиньте идей. А то вроде есть программы для всего,
но программисты что-то ещё делают:)
← →
default © (2004-12-26 01:06) [44]OneFragLeft © (26.12.04 01:03) [43]
попробуй для начала сделать [1]
несомненно неплохая алгоритмическая задача
← →
OneFragLeft © (2004-12-26 01:08) [45]если честно, то я не понял что значит:
Основная проблема - сделать это за время O(N) с затратами памяти меньшими, чем O(N).
Поясните, пожалуйста.
← →
default © (2004-12-26 01:13) [46]OneFragLeft © (26.12.04 01:08) [45]
линейный рост времени работы алгоритма как функции её числа
то есть к примеру на два элемента тратиться 4 секунды, на три элемента будет тратиться 6 секунд, на четыре 8 и тд
а используемая дополнительная память должна не зависеть от числа элементов либо расти по порядку медленне чем N
например, LogN*N
← →
OneFragLeft © (2004-12-26 01:16) [47]Т.е. я могу создать ещё один такой-же массив?
← →
default © (2004-12-26 01:18) [48]OneFragLeft © (26.12.04 01:16) [47]
тогда рост памяти будет линейно зависеть от числа элементов что не допускает условие
"с затратами памяти меньшими, чем
O(N)."
← →
OneFragLeft © (2004-12-26 01:20) [49]ага, ясно.
Т.е. могу использовать только одну-две переменные?
← →
default © (2004-12-26 01:24) [50]OneFragLeft © (26.12.04 01:20) [49]
да, какое-то ограниченное количество памяти либо память в зависимости от числа элементов массива должна расти медленне чем растёт линейная функция
← →
OneFragLeft © (2004-12-26 02:43) [51]Вот так должно быть?
procedure ReOrder;
var B,i,j,n:integer;
S:Array[0..9] of Integer;
begin
i:=1;//счётчик
n:=10;//кол-во элементов в массиве (просто не знаю как это программно посчитать)
//ну а дальше ясно
While i<round(n/2) do
begin
B:=S[i];
For j:=i to n-i do
begin
S[j]:=S[j+1];
end;
S[n-i]:=B;
i:=i+1;
end;
Знаний маловато, поэтому не смог сделать чтобы в процедуру посылался массив.
Проверил на работоспособность с чётным и нечётным количеством элементов.
Вроде работает...
← →
default © (2004-12-26 02:58) [52]OneFragLeft © (26.12.04 02:43) [51]
тут заведомо нелинейное время
лучше тогда не трогай её
на счёт решения - я сам его не знаю пока)
← →
OneFragLeft © (2004-12-26 03:14) [53]А как узнать, существует ли оно вообще.
Может и нет решения.
← →
MBo © (2004-12-26 07:07) [54]>OneFragLeft © (26.12.04 03:14) [53]
Решение существует.
Ограничения на размер памяти и время связаны вот с чем -
1. несложно создать второй такой же массив и скопировать нужные элементы на нужные места - т.е. это путь с большими затратами памяти.
2. Возможно многократно сложным образом переставлять элементы в исходном массиве, пока не придем к нужному порядку - это требует существенно более, чем n^2 операций - т.е. путь с большими затратами памяти.
Так вот задача состоит в том, чтобы использовать только несколько дополнительных переменных, и минимизировать число операций (перестановок). Задача любопытна, в частности, тем, что, поразмыслив, находишь решение для конкретного N, но оно может не работать для других размеров массива.
← →
Igorek © (2004-12-26 09:49) [55]OneFragLeft © (25.12.04 2:07)
>все типичные задачи,
>которые должен уметь выполнять начинающий
> программист, осваивающий Delphi
- читать хорошие книги о Delphi
- пользоваться F1, MSDN, DelphiWorld, Google, VCL sources
- пробовать все на практике
- хорошенько поискать ответ на вопрос прежде чем постить на форумы
Все это должен уметь не только начинающий, но начинающему этого пока достаточно.
Игорь Шевченко © (25.12.04 2:16) [3]
Ну ты меня успокоил. :-)
MBo © (26.12.04 7:07) [54]
Я вот не понял как формируется новый массив:
- последнее, предпоследнее слева от него, предпредпоследнее справа ...
или
- первое слева, второе справа, третье слева за первым, четвертое - справа за вторым
?
← →
MBo © (2004-12-26 10:04) [56]>как формируется новый массив:
четные элементы (считая с нуля) - в первой половине, нечетные - во второй в обратном порядке, т.е. второй твой способ.
← →
default © (2004-12-26 13:12) [57]MBo © (26.12.04 10:04) [56]
можно подсказочку:
затраты времени O(1) или всё-таки зависят от числа элементов?
← →
Igorek © (2004-12-26 15:13) [58]
> сделать это за время O(N)
← →
default © (2004-12-26 16:26) [59]Igorek © (26.12.04 15:13) [58]
я имел ввиду память
но из "Так вот задача состоит в том, чтобы использовать только несколько дополнительных переменных, и минимизировать число операций (перестановок)."
ясо что затраты памяти O(1), а не например O(LogN)
← →
GrayFace © (2004-12-28 11:59) [60]default © (26.12.04 0:45) [36]
кстати довольно характерная черта людей - когда они что-то неплохо знают считать это за сомо собой разумеешееся и требовать того же от других
всё же лучше исходить из объективности
Вообще-то он прав, просто выразился вначале неверно. А вот это верно: Уметь писать программы - это часть компьютерной грамотности.
MBo © (26.12.04 7:07) [54]
Так вот задача состоит в том, чтобы использовать только несколько дополнительных переменных, и минимизировать число операций (перестановок).
В принципе, можно создавать очень большой массив, которого будет заведомо достаточно - условию это не противоречит.
Igorek © (26.12.04 9:49) [55]
- хорошенько поискать ответ на вопрос прежде чем постить на форумы
А я с этим не согласен. ИМХО, достаточно искать в F1 и MSDN, а уж Google и т.п. - это после форумов. Если уж искать, то искать на форумах. А если вопрос не стандартный, то и пытаться искать не стоит.
default © (26.12.04 16:26) [59]
я имел ввиду память
но из "Так вот задача состоит в том, чтобы использовать только несколько дополнительных переменных, и минимизировать число операций (перестановок)."
ясо что затраты памяти O(1), а не например O(LogN)
Видимо, решения с O(logN) и т.п. просто не получится выдумать.
Страницы: 1 2 вся ветка
Форум: "Потрепаться";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];
Память: 0.62 MB
Время: 0.04 c