Member 13366714 Ответов: 3

Код C++ для выполнения сжатия последовательности ДНК.


1.вход представляет собой большие последовательности оснований ДНК (я,е) последовательность любой длины 4 буквы (А,Т,Г,Ц) в произвольном порядке. например, atgcccctgggaagtgaaaatgcccc........
2.преобразовать=00
t=01
g=10
с=11
3. затем разбейте последовательность на 8 бит
4. преобразуйте каждое 8-битное значение в соответствующее десятичное значение
5. преобразуйте каждое десятичное значение в соответствующее значение ASCII.
6. Теперь рассмотрим первые 16 символов ASCII последовательности,сравним их с каждым следующим 16 символами.
7.для каждого сравнения выводите только позицию и изменение символа.
т.е.. 1@, Что означает, что 1-я позиция заменяется на@. не меняйте общие термины.

Что я уже пробовал:

я попробовал только логику вручную

Jochen Arndt

Это похоже на домашнее задание, для которого вы не получите код здесь.

Попробуйте сами. Если вы где-то застряли, покажите, что вы пробовали, и объясните свои проблемы. Тогда мы постараемся вам помочь.

Richard MacCutchan

"я попробовал только логику вручную"
Тогда превратить это в код не должно быть слишком сложно.

3 Ответов

Рейтинг:
2

OriginalGriff

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

Попробуйте сами, возможно, вы обнаружите, что это не так сложно, как вы думаете!

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


Рейтинг:
2

Patrice T

Вы не задали ни одного вопроса или проблемы, вы просто вставили задание.
Ваше заявление кажется мне странным:
- 4 и 5 - это преобразование 8-битного значения в 8-битное???
- 6 этот шаг ищет только повторы блоков по 16 и с расстоянием, кратным 16 тоже, это означает, что повторы с расстояниями, отличными от 16, вас не интересуют.
- 7 тоже странно, так как @ в ascii, это также кодировка для taaa, откуда вы знаете, что есть что ?
-----
Мы не делаем вашу домашнюю работу.
Домашнее задание предназначено не для того, чтобы проверить ваши навыки просить других людей выполнять вашу работу, а для того, чтобы заставить вас думать и помочь вашему учителю проверить ваше понимание пройденных вами курсов, а также проблем, возникающих при их применении.
Любая ваша неудача поможет учителю выявить ваши слабости и наметить меры по их исправлению.
Любая ваша неудача поможет вам узнать, что работает, а что нет, это называется "методом проб и ошибок".
Так что попробуйте, перечитайте свои уроки и начинайте работать. Если вы застряли на конкретной проблеме, покажите свой код и объясните эту точную проблему, мы можем помочь.

Как программист, ваша задача-создавать алгоритмы это решает конкретные проблемы, и вы не можете полагаться на кого-то другого, чтобы вечно делать это за вас, поэтому есть время, когда вам придется научиться этому. И чем скорее, тем лучше.
Когда вы просто просите решение, это все равно что пытаться научиться водить машину, обучая кого-то другого.
Создание алгоритма-это в основном поиск математики и необходимая адаптация к вашей реальной задаче.

Идея "развития" заключается в том, что это слово предполагает: "систематическое использование научно-технических знаний для достижения конкретных целей или требований." BusinessDictionary.com[^]
Это не то же самое, что "быстро гуглите и сдавайтесь, если я не могу найти точно правильный код".


Рейтинг:
0

KarstenK

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

Подумайте о том, чтобы использовать классы, чтобы придать вашему коду лучшую архитектуру. Лучше разбить каждую задачу на одну функцию или класс, чем суммировать все результаты в какой-то одной функции или классе. массив. Этот массив должен быть массивом typedef ваших результатов.

Вам нужно будет сделать некоторые смещение бита и введите приведение где-нибудь в вашем коде:

unsigned char byte = (dna1<<6) | (dna2<<4) | (dna3<<2) | (dna4<<0);
int value = (int) byte;
char c = (char) value;
Не полагайтесь на то, что код подходит именно вам!!!

Совет: напишите несколько тестовых фрагментов для проверки вашего кода.