#string #dna-sequence
#строка #днк-последовательность
Вопрос:
Задача: написать код для новой строки Днк в соответствии с ее шаблоном. Чтобы вы знали, в строках ДНК символы «A» и «T» дополняют друг друга, как «C» и «G». DNA_strand ("ATTGC") //returns "TAACG"
Пример: или Мой код => DNA_strand ("GTAT") //returns "CATA"
#include <string>
#include <vector>
#include <iostream>
std::string DNAStrand(const std::stringamp; dna)
{
std::string Sym;
std::string c;
std::stringstream s;
s << Sym;
s >> c;
for(int i = 0; i < dna.size() - 1; i ) {
switch (dna[i]) {
case ('A'):
Sym[i] = 'T';
break;
case ('T'):
Sym[i] = 'A';
break;
case ('C'):
Sym[i] = 'G';
break;
case ('G'):
Sym[i] = 'C';
break;
default:
std::cout << "invalid";
} return c.str();
}
int main() {
std::cout << DNAStrand("ATTGC") << "n"; //retun "TAACG"
std::cout << DNAStrand("GTAT") << "n"; //retun "CATA"
}
}
Комментарии:
1. В чем ваш вопрос? Что делает этот код при запуске? Почему это неправильно? Показать пример ввода, желаемый результат и текущий результат; полностью объяснить проблемы; полностью процитировать сообщения об ошибках.
Ответ №1:
Вы создали a vector<string>
, но в if
операторах вы устанавливаете элементы vector
в char
s . Вы хотите построить а string
, а не а vector<string>
.
Вы должны заменить последующие if
операторы на else if
, или использовать switch
оператор. В противном if
случае операторы, следующие за удовлетворенным if
утверждением, выполняются без необходимости.
Замените это vector
на ostringstream. Называя поток как s
, вы бы добавили char
имя c
с s << c
помощью . В конце повторения dna
верните s.str()
.
Комментарии:
1. как я должен заменить вектор на ostringstream ?? Я немного в замешательстве
2. @PooryaKeshavarzi Вы устанавливаете символы в качестве элементов вектора строк. Избавьтесь от вектора и вместо этого переместите символы в ostringstream. Затем получите результат, вызвав .str() в ostringstream .
3. Я обновил свой вопрос. Подскажите, что изменить
4. Прочитайте документацию для string и ostringstream, если вы хотите это использовать. Если вы хотите предварительно выделить строку, вам нужно инициализировать ее с правильным размером.