Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Заказы "Сделайте все за меня"


Рекомендуемые сообщения

Помогите кто чем может!!) Надо вот эти программы написать на c++. Заранее большое спасибо.

1. Создать список из целых чисел. Исключить из списка все элементы, равные x. Выполнить в трех вариантах: со стеком, очередью и двунаправленным списком. Каждая операция со списком (инициализация списка, добавление, удаление и просмотр элемента списка) должна оформляться в виде подпрограммы. Ввод-вывод данных файловый.

2. Дан многочлен от одной переменной. Разработать подпрограмму, реализующую подсчет значения многочлена для заданного значения x.

3. В файле input.txt хранится последовательность целых чисел. По входной последовательности построить дерево бинарного поиска и удалить из него все узлы, хранящие нечетные значение

4. Бинарное дерево в файле input.txt представлено следующей структурой:

предок (для корня предок=0); признак поддерева: 0-левое 1-правое; узел:

0 0 7

7 0 25

7 1 12

25 0 3

25 1 18

Построить копию заданного дерева.

5. Исключить из неориентированного графа данную вершину. Использовать представление графа в виде матрицы смежности.

6. Подсчитать количество сильно связных компонент ориентированного графа. Использовать обходы в ширину или в глубину.

Ссылка на комментарий
Поделиться на другие сайты

Здравствуйте. Не могу создать программу для решения задачи на Паскале. Все задачи сделал, кроме этой. Алгоритм не могу составить.

4. Разработайте алгоритм и решите задачу.

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

Ссылка на комментарий
Поделиться на другие сайты

Ммм... нужен исходник или же блок-схема. Сама задача тривиальная, но она из области комбинаторики, т.е. понятие min-max будет лежать в диапазоне... есть конечно формула, но в данном случае она не требуется - все решается на уровне random:

- случайная установка замков в N - диапазоне;

- случайная установка ключей в F(N) - диапазоне;

- случайный подбор ключ-замок в T(N-1) - диапазоне.

Это и есть алгоритм решения.

Исходник нужен?

Изменено пользователем Indomito
Ссылка на комментарий
Поделиться на другие сайты

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

Я может быть чего-то не понимаю, но минимальным количеством проб будет 0, т.е. мы сразу угадали какой ключ от какого замка :) Конечно, вероятность такая довольно мала, но не исключена.

Ну, а так надо три пробы. Сначала подбираем ключ к первому замку, пробуем один ключ, если не подошёл, второй, если не подошёл, значит к этому замку подходит третий ключ. Потом подбираем ключ ко второму замку, проверяем первый, если не подошёл, значит к этому замку подходит второй ключ, а к третьему - первый.

Ссылка на комментарий
Поделиться на другие сайты

немного не так, если решать классически.

1. Нужна матрица проб ошибок.

2. Подбор должен происходить рандомно.

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

Ссылка на комментарий
Поделиться на другие сайты

Оффтоп

немного не так, если решать классически.
1. Нужна матрица проб ошибок.
2. Подбор должен происходить рандомно.

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

Ну, я ни разу не программист. Но если бы встала такая задача, решил именно так, как написал. Не совсем понял что у меня не рандомно. :) Ведь после пробы ключ надо как-то помечать, что он не подошёл, или всё равно сваливать в общую кучу и из неё рандомно опять выбирать? Если второй вариант, то количество проб резко возрастает :)
Алгоритм расстановки ключей и замков я расписывать не стал, потому как тут должно быть и так всё понятно.
Ссылка на комментарий
Поделиться на другие сайты

Язык Паскаль только изучать начали несколько дней назад. Теорию проб и ошибок еще не изучали. Поэтому просто даже не понимаю, в чем смысл данной задачи и как ее реализовать именно в Паскале. Никогда не делал задачи подобного типа. Может хотя бы пример программы скинете?

О Random слышал, что позволяет выбирать числа в случайном порядке :rolleyes:

Ссылка на комментарий
Поделиться на другие сайты

1. Используем Google комбинаторика примеры решения задач Паскаль

2. komb.doc

Я не очень искал схожую задачу, просто искал нечто подобное.

Да, советую использовать Паскаль - Система программирования PascalABC.NET удобный инструмент для изучения языка + многофункциональный.

komb.doc

Ссылка на комментарий
Поделиться на другие сайты

Минимальным количеством необходимых для установления принадлежности ключей к замкам проб ноль не будет - мало правильно угадать, надо еще доказать правильность догадки. А для этого надо, как минимум, вставить два ключа в подходящие замки, то есть минимум - две пробы. А максимум необходимого количества проб - три пробы.

Пробуем ключ 1 на замке 1. Если подходит, пробуем ключ 2 на замке 2. Если подходит, то ключ 3 обязательно подойдет к замку 3, можно не пробовать. Если ключ 2 к замку 2 не подойдет, то он от замка 3, а оставшийся ключ 3 от замка 2, тоже можно не пробовать. Понадобились две пробы.

Теперь случай когда ключ 1 не подошел к замку 1. На том же замке пробуем ключ 2. Если ключ 2 подошел, то остались два ключа (1 и 3) и два замка (2 и 3), нужна еще одна проба, всего будет три пробы. Если ключ 2 не подошел, то, значит, к замку 1 подойдет ключ 3, остается опять же два ключа (1 и 2) и два замка (2 и 3) и нужна еще одна проба.

Итак, минимальное количество необходимых для установления принадлежности проб две, максимальное - три.

Остается вопрос, при чем тут Паскаль? Это чистая математика.

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Тролль "А максимум необходимого количества проб - три пробы." немного не верно, три пробы нужно при условии если один ключ ложный - Cn^m = {n!}/{m! (n-m)!}

Ссылка на комментарий
Поделиться на другие сайты

Минимальным количеством необходимых для установления принадлежности ключей к замкам проб ноль не будет - мало правильно угадать, надо еще доказать правильность догадки. А для этого надо, как минимум, вставить два ключа в подходящие замки, то есть минимум - две пробы. А максимум необходимого количества проб - три пробы.

Пробуем ключ 1 на замке 1. Если подходит, пробуем ключ 2 на замке 2. Если подходит, то ключ 3 обязательно подойдет к замку 3, можно не пробовать. Понадобились две пробы.

Теперь случай когда ключ 1 не подошел к замку 1. На том же замке пробуем ключ 2. Если ключ 2 подошел, то остались два ключа (1 и 3) и два замка (2 и 3), нужна еще одна проба, всего будет три пробы. Если ключ 2 не подошел, то, значит, к замку 1 подойдет ключ 3, остается опять же два ключа (1 и 2) и два замка (2 и 3).

Итак, минимальное количество необходимых для установления принадлежности проб две, максимальное - три.

Остается вопрос, при чем тут Паскаль? Это чистая математика.

Ну в принципе это все логично.Но вот как в Паскале это все сделать? я ума не приложу... а это обязательно

Ссылка на комментарий
Поделиться на другие сайты

Но вот как в Паскале это все сделать? я ума не приложу... а это обязательно
я бы написал' date=' но думаю Тролль напишет раньше :D
Ссылка на комментарий
Поделиться на другие сайты

Indomito, я бы написал, но не понимаю, чем тут должен заниматься Паскаль в его сегодняшнем воплощении в языке программирования? ;) Моделированием процесса подбора ключей на случайном сочетании комбинаций ключей и замков? В условии об этом ни слова. Выводом алгоритма решения? Паскаль для записи готовых алгоритмов, а не их нахождения...

Ссылка на комментарий
Поделиться на другие сайты

Судя по условию

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

Надо написать всего одну строчку, типа

printf "2"

:)

Ссылка на комментарий
Поделиться на другие сайты

Indomito, я бы написал, но не понимаю, чем тут должен заниматься Паскаль в его сегодняшнем воплощении в языке программирования? ;) Моделированием процесса подбора ключей на случайном сочетании комбинаций ключей и замков? В условии об этом ни слова. Выводом алгоритма решения? Паскаль для записи готовых алгоритмов, а не их нахождения...

Я считаю, что Паскаль тут должен работать по типу: ключ подходит? - да или нет, идем дальше.

Типа:

beginwriteln('Первый ключ к первой двери. Подходит?');readln(a);if a='Да' then writeln('Берем второй ключ.')else beginwriteln('Второй ключ подходит к 1му замку?');readln(a);if ......................end;end;
Ссылка на комментарий
Поделиться на другие сайты

По сути да, только зачем диалог то?

1. Генерация замков-ключей.

2. Подбор ключ к замку.

3. Вывод результатов.

ИМХО диалог тут не нужен, т.к. это чисто мат. обработка.

Ссылка на комментарий
Поделиться на другие сайты

AntonyDed

Indomito правильно заметил, никаких readln(a) писать не надо, решение ищет программа, а не ты.

Программу в кратком виде приведу ниже. Программа случайным образом генерирует набор ключей к замкам, а потом подбирает их. По ходу работы программа печатает свои достижения. Если в программу вводить пояснения к каждому ее выбору, получится довольно протяженная беллетристика. Если хочешь, то перед каждым if допиши вывод в словах проверяемого условия. Например, вместо

if 2=k[1] then

надо будет написать

writeln('Первый ключ ко второй двери. Подходит?"); if 2=k[1] then begin writeln('Подошел...')

и так далее. Иногда придется заключать эти операторы в begin ... end

uses crt;var k:array[1..3]of byte; i,j,p,q:byte;begin randomize; repeatclrscr; for i:=1 to 3 do k[i]:=i; for j:=3 downto 1 do begin p:=random(j)+1;q:=k[p];k[p]:=k[j];k[j]:=q end;writeln('Nums of keys:   1 2 3');writeln('Locks of keys: ',k[1]:2,k[2]:2,k[3]:2); writeln;if 1=k[1] then   begin writeln('Z1 - K1'); if 2=k[2] then writeln('Z2 - K2'#10#13'Z3 - K3')                             else writeln('Z2 - K3'#10#13'Z3 - K2') endelse  if 1=k[2] then     begin writeln('Z1 - K2'); if 2=k[1] then writeln('Z2 - K1'#10#13'Z3 - K3')                               else writeln('Z2 - K3'#10#13'Z3 - K1') end else      begin writeln('Z1 - K3'); if 2=k[1] then writeln('Z2 - K1'#10#13'Z3 - K2')                               else writeln('Z2 - K2'#10#13'Z3 - K1') end;write('Once more (1/0)? ');until(readkey<>'1')end.
Изменено пользователем Тролль
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

AntonyDed

Indomito правильно заметил, никаких readln(a) писать не надо, решение ищет программа, а не ты.

Программу в кратком виде приведу ниже. Программа случайным образом генерирует набор ключей к замкам, а потом подбирает их. По ходу работы программа печатает свои достижения. Если в программу вводить пояснения к каждому ее выбору, получится довольно протяженная беллетристика. Если хочешь, то перед каждым if допиши вывод в словах проверяемого условия. Например, вместо

if 2=k[1] then

надо будет написать

writeln('Первый ключ ко второй двери. Подходит?"); if 2=k[1] then begin writeln('Подошел...')

и так далее. Иногда придется заключать эти операторы в begin ... end

uses crt;var k:array[1..3]of byte; i,j,p,q:byte;begin randomize; repeatclrscr; for i:=1 to 3 do k[i]:=i; for j:=3 downto 1 do begin p:=random(j)+1;q:=k[p];k[p]:=k[j];k[j]:=q end;writeln('Nums of keys:   1 2 3');writeln('Locks of keys: ',k[1]:2,k[2]:2,k[3]:2); writeln;if 1=k[1] then   begin writeln('Z1 - K1'); if 2=k[2] then writeln('Z2 - K2'#10#13'Z3 - K3')                             else writeln('Z2 - K3'#10#13'Z3 - K2') endelse  if 1=k[2] then     begin writeln('Z1 - K2'); if 2=k[1] then writeln('Z2 - K1'#10#13'Z3 - K3')                               else writeln('Z2 - K3'#10#13'Z3 - K1') end else      begin writeln('Z1 - K3'); if 2=k[1] then writeln('Z2 - K1'#10#13'Z3 - K2')                               else writeln('Z2 - K2'#10#13'Z3 - K1') end;write('Once more (1/0)? ');until(readkey<>'1')end.

Ой-ой-ой ))) это серьезно ))) Преподаватель вряд ли примет такой вариант, потому что поймет, что я его сам сделать просто не мог ))) А засчет чего вы добиваетесь того, чтобы диалог на экране просто обновлялся при вводе, например, числа 1, а не шел вниз и пополнялся новыми словами и цифрами ? )

Ссылка на комментарий
Поделиться на другие сайты

А засчет чего вы добиваетесь того, чтобы диалог на экране просто обновлялся при вводе, например, числа 1, а не шел вниз и пополнялся новыми словами и цифрами ?

Подозреваю, что вот тут:

clrscr; for i:=1 to 3 do k:=i;

Изменено пользователем kvazimoda
Ссылка на комментарий
Поделиться на другие сайты

Решение задачи на самом деле относится не к программированию, а к логике. Правильная программа по условию на самом деле будет выглядеть так:

begin writeln('Необходимо сделать минимально от 2 до 3 проб, как повезет :) '); readln end.

Но боюсь, что такую программу преподаватель точно не примет ;)

О Random слышал, что позволяет выбирать числа в случайном порядке :rolleyes:
Не совсем так. Она позволяет генерировать последовательность псевдослучайных чисел, но вовсе не гарантирует от их повторения, как и при бросании кубика. Поэтому просто берем числа 1, 2 и 3 и тасуем их в случайном порядке, вот для этого уже применяем random. Алгоритм тасования берем из библии алгоритмов "Искусство программирования" Дональда Кнута. Хотя есть и другой метод, не столь элегантный и гораздо менее экономичный: первое число берем случайным, второе тоже, но берем уже только число, не совпадающее с первым, если нет, берем еще одно число, и так далее.
А засчет чего вы добиваетесь того, чтобы диалог на экране просто обновлялся при вводе, например, числа 1, а не шел вниз и пополнялся новыми словами и цифрами ?
Тут kvazimoda уже все объяснил :)

P.S. Только сейчас заметил, что по поводу условия kvazimoda тоже уже сказал практически то же, что и я:

"Надо написать всего одну строчку, типа printf "2" " :)

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Не совсем так. Она позволяет генерировать последовательность псевдослучайных чисел' date=' но вовсе не гарантирует от их повторения, как и при бросании кубика.[/quote'] тут ты немного ошибаешься, т.к. берёшь за прообраз классическую функцию RND, но она имеет много вариантов реализации, а точнее параметров входных и одним из них фигурирует флаг не повторения в предузнанном диапазоне генерации.
Ссылка на комментарий
Поделиться на другие сайты

temich5000

temich5000

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

...scanf("%s",s); if(s[0]>='+' && s[0]<='9')break; else printf("Error! Once more!\n");}...

Вводится строка, затем проверяется, начинается ли она чем-то годящимся как начало числа, если да, то мы выходим на продолжение работы и там преобразуем ее в нужные нам число и символ, если нет, с возмущенными воплями возвращаемся обратно.

if(s[0]>='+' && s[0]<='9') и есть проверка, начинается ли строка с того символа, с которого может начинаться число. А буква, например, условия не выполнит и будет предложено повторить ввод.

Изменено пользователем Тролль
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Здравствуйте!

Нужна помощь в программировании на C++ Builder.

Возможно ли это?

Программа у меня имеется, но надо её подкорректировать...

Ссылка на комментарий
Поделиться на другие сайты

Здравствуйте!

Нужна помощь в программировании на C++ Builder.

Возможно ли это?

Программа у меня имеется, но надо её подкорректировать...

Я думаю, возможно. :)

Изменено пользователем kvazimoda
Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу



×
×
  • Создать...