Комплементарная ДНК (C )

#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, если вы хотите это использовать. Если вы хотите предварительно выделить строку, вам нужно инициализировать ее с правильным размером.