Hi ich habe ein wirklich großes Problem und ich hoffe ihr könnt mir helfen.
Ich sitze gerade an einer Hausarbeit fürs Studium und komme einfach nicht weiter. Das Programm soll später einmal die Molamasse eines eingegebenen Stoffes berechnen. Heißt ein Stoff wird eingegeben z.B: CH3CH2OH das Programm erkennt 2 mal C 6 mal H und ein mal O in einer Datenbank ist die jeweilige MAsse hinterlegt also hier: H=1,008 C=12,01 O=16 berechnet wird dann 6*1,008+2*12,01+1*16. Habe jetzt eine schleife geschrieben die den Stoff einlesen müsste und die einzelnen Atome bzw. Häufigkeiten in eine Liste schreibt. aber jetzt weiß ich nicht wie ich wieder auf die Elemente in dieser Liste zugreifen kann um damit weiter zu rechnen.
Hier schon ma mein Ansatz:
schon einmal vielen dank!
Ich sitze gerade an einer Hausarbeit fürs Studium und komme einfach nicht weiter. Das Programm soll später einmal die Molamasse eines eingegebenen Stoffes berechnen. Heißt ein Stoff wird eingegeben z.B: CH3CH2OH das Programm erkennt 2 mal C 6 mal H und ein mal O in einer Datenbank ist die jeweilige MAsse hinterlegt also hier: H=1,008 C=12,01 O=16 berechnet wird dann 6*1,008+2*12,01+1*16. Habe jetzt eine schleife geschrieben die den Stoff einlesen müsste und die einzelnen Atome bzw. Häufigkeiten in eine Liste schreibt. aber jetzt weiß ich nicht wie ich wieder auf die Elemente in dieser Liste zugreifen kann um damit weiter zu rechnen.
Hier schon ma mein Ansatz:
PHP:
#include <iostream>
using namespace std;
int main ()
{
string Molekuel;
struct stoff
{
char atom;
int haeufigkeit;
stoff *next;
};
cin >> Molekuel;
int laenge = Molekuel.length();
stoff *Anker = 0;
stoff *node = new stoff;
node->next = Anker;
for (int i=0; i < laenge; i++)
{
if(64 < Molekuel[i] < 91) // Großbuchstaben erkenennen mit ASCII Tabelle
{
i++; // eine Stelle weitegehen
if (47 < Molekuel [i] < 58) // ZAhlen erkennen
{
i--; // wurde eine ZAhl erkannt gehe wieder zurüch (um Atombezteichnungen aus einen Buchstaben zu erkennen)
node-> atom = Molekuel [i];}
if (96 < Molekuel [i] < 123) // Erkenenn von kleinbuchstaben
{
i--; // wurde ein Kleinbuchstaben erkannt gehen eine stelle zurück
node -> atom = Molekuel [i]; //schreibe den vorangegangenen Großbuchstaben in die Liste
i++; //gehen wieder vor zum Kleinbuchstaben
node -> atom += Molekuel [i];} //und hänge diesen an den Großbuchstaben in der Liste an
}
if (47 < Molekuel [i] < 58) // Wird eine Zahl erkannt
{ i++; //Gehe eine Stelle weiter
if (47 < Molekuel [i] < 58) //gucke ob auf ZAhl eine weitere folgt
{ i--; // wenn ja gehe eine Stelle zurück
node -> haeufigkeit = Molekuel [i] * 10; // Multipliziere Zahl mit 10 (aus Einstelliger Zahl wird zweistellige) dann schreibe die in Liste
i++; // gehe eine stelle weiter
node -> haeufigkeit += Molekuel [i]; // Hänge 2. Zahl an erste an
}
else // Wenn auf die 1. ZAhl keine 2. folgt
{
i--; // gehe eine Stelle zurück
node -> haeufigkeit = Molekuel [i]; // schreibe die Zahl in die List
}
}
}
Anker =0;
cout << << endl;
cout << Molekuel << endl;
system("Pause");
}