Anfängerfrage aber äusserst dringend!!!!!!!!!



  • ich muss ein programm schreiben das eine dns kette liest und dann anschliessend di kette auf den schirm druckt und die prozentwehrte angibt:
    zB ADN: ATCGTACCGGTAGTACGGT
    das programm soll dann sagen: ATCGTACCGGTAGTACGGT
    di kette besteet zu x a% aus A und zu Y aus G usw

    ich habe versucht ein schleife zu schreiben aber die mag nicht recht funktionieren

    bin dankbar für jede hilfe

    danke

    #include <iostream>
    using namespace std;

    int main()
    {
    int a=0,g=0,c=0,t=0;

    char A,T,G,C,X,ADN;

    cout <<"entrez adn"<< endl;
    cin>>X;
    do {
    cin >>X;
    ADN=ADN+X;
    switch (X)
    {
    case 'A':
    a=a+1;
    break;

    case 'G':
    g=g+1;
    break;

    case 'C':
    c=c+1;
    break;

    case 'T':
    t=t+1;
    break;
    }
    }
    while ( X=='G' && X=='C' && X=='T' && X=='A');

    }



  • Kleiner Hack:

    #include <string>
    #include <iostream>
    using namespace std;
    
    int main() {
       string dns;
       cout << "Enter DNA-sequence: ";
       cin >> dns;
       int a=0,g=0,c=0,t=0, len = dns.length();
       for(int i=0; i < len; i++) {
          switch(dns[i]) {
             case 'a':
             case 'A':
                a++;
                break;
             case 'g':
             case 'G':
                g++;
                break;
             case 'c':
             case 'C':
                c++;
                break;
             case 't':
             case 'T':
                t++;
                break;
          }
       }
       cout << "% of A: " << (a * 100.0f / len) << endl;
       cout << "% of G: " << (g * 100.0f / len) << endl;
       cout << "% of C: " << (c * 100.0f / len) << endl;
       cout << "% of T: " << (t * 100.0f / len) << endl;
       return 0;
    }
    

    BTW: Bist du Franzose?



  • Hi,

    erst mal muss ich maulen 😃 : 🙄 BENUTZE DIE CODE TAGS 🙄

    so und nun ne mögliche Lösung für dein Problem:

    #include <iostream>
    #include <string>
    
    using namespace std; // Man sollte drauf verzichten imo (aber um es ähnlich deinem Code zu machen hab ich es gelassen)
    
    int main()
    {
      cout << "Enter DNA: ";
      cout.flush();
      string adn_input;
      cin >> adn_input;
      unsigned int a = 0, c = 0, g = 0, t = 0;
      for(unsigned int i = 0; i < adn_input.size(); ++i)
      {
        if(adn_input[i] == 'A')
          ++a;
        else if(adn_input[i] == 'C')
          ++c;
        else if(adn_input[i] == 'G')
          ++g;
        else if(adn_input[i] == 'T')
          ++t;
      }
      cout << "Vorkommen der einzelnen Zeichen in %: " << endl;
      cout << " A: " << a * 100 / adn_input.size() << endl;
      cout << " C: " << c * 100 / adn_input.size() << endl;
      cout << " G: " << g * 100 / adn_input.size() << endl;
      cout << " T: " << t * 100 / adn_input.size() << endl;
      cout << " Es waren insgesamt " << adn_input.size() << " Zeichen." << endl;
      return 0;
    }
    

    MfG

    // EDIT Musste mal nen Schreibfehler korrigieren. 🙄
    // Tja und nu is mir noch was aufgefallen *g*
    Man könnte die For-Schleife auch wie folgt machen, mir ist es auch erst aufgefallen als ich den Post darüber gesehen habe.

    for(unsigned int i = 0; i < adn_input.size(); ++i)
      {
        if(adn_input[i] == 'A' || adn_input[i] == 'a')
          ++a;
        else if(adn_input[i] == 'C' || adn_input[i] == 'c')
          ++c;
        else if(adn_input[i] == 'G' || adn_input[i] == 'g')
          ++g;
        else if(adn_input[i] == 'T' || adn_input[i] == 't')
          ++t;
      }
    


  • Der Titel ist ja auch mal top! Vielleicht mal dieses hier durchlesen:
    http://www.catb.org/~esr/faqs/smart-questions.html


Anmelden zum Antworten