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 uswich 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