Skocz do zawartości
Puchacz1

Współczynniki Chemiczne, C++

Rekomendowane odpowiedzi

Witam, postanowiłem napisać problem do automatycznego ustalania współczynników w równaniach chemicznych.

Jednak metoda która zacząłem budować program jest... bardzo sztywna i przez to pojawiają się problemy z warunkami które mnożą się a których nie potrafię rozwiązać. Kod wygląda tak:

 

#include <sstream>#include <iostream>#include <stdio.h>#include <stdlib.h>using namespace std;int main(){					char strNapis;							cout << "Podaj Pierwszy Znak : ";				cin >> strNapis;						int liczba;							cout << "Podaj wartosc : ";				cin >> liczba;			char strNapis_2;							cout << "Podaj drugi Znak : ";				cin >> strNapis_2;						int liczba_2;							cout << "Podaj wartosc : ";				cin >> liczba_2;						char strNapis_3;							cout << "Podaj trzeci Znak : ";				cin >> strNapis_3;						int liczba_3;							cout << "Podaj wartosc : ";				cin >> liczba_3;			char strNapis_4;							cout << "Podaj czwarty Znak : ";				cin >> strNapis_4;						int liczba_4;							cout << "Podaj wartosc : ";				cin >> liczba_4;						char strNapis_5;							cout << "Podaj Pierwszy Znak Drugiej Grupy : ";				cin >> strNapis_5;						int liczba_5;							cout << "Podaj wartosc : ";				cin >> liczba_5;// druga grupa 				char strNapis_6;							cout << "Podaj Pierwszy Znak : ";				cin >> strNapis_6;						int liczba_6;							cout << "Podaj wartosc : ";				cin >> liczba_6;			char strNapis_7;							cout << "Podaj drugi Znak : ";				cin >> strNapis_7;						int liczba_7;							cout << "Podaj wartosc : ";				cin >> liczba_7;						char strNapis_8;							cout << "Podaj trzeci Znak : ";				cin >> strNapis_8;						int liczba_8;							cout << "Podaj wartosc : ";				cin >> liczba_8;			char strNapis_9;							cout << "Podaj czwarty Znak : ";				cin >> strNapis_9;						int liczba_9;							cout << "Podaj wartosc : ";				cin >> liczba_9;	//suma kontrolna				cout << strNapis << ( ( liczba == 1 ) ? 0x32 : liczba ) << strNapis_2 << ( ( liczba_2 == 1 ) ? 0x32 : liczba_2 ) << strNapis_3 << ( ( liczba_3 == 1 ) ? 0x32 : liczba_3 ) << strNapis_4 << ( ( liczba_4 == 1 ) ? 0x32 : liczba_4 ) << " + " << strNapis_5 << ( ( liczba_5 == 1 ) ? 0x32 : liczba_5 ) << " ------> " << strNapis_6 << ( ( liczba_6 == 1 ) ? 0x32 : liczba_6 ) << strNapis_7 << ( ( liczba_7 == 1 ) ? 0x32 : liczba_7 ) << " + " << strNapis_8 << ( ( liczba_8 == 1 ) ? 0x32 : liczba_8 ) << strNapis_9 << ( ( liczba_9 == 1 ) ? 0x32 : liczba_9 ) << "\n";		//porownanie stringow, instrukcje warunkowe, dodawanie wartosci podstawnikow															 if(strNapis==strNapis_5)							  {							  int dodawanie_liczb = liczba + liczba_5;								cout << strNapis << dodawanie_liczb << endl;							  }							 if(strNapis_2==strNapis_5)							  {							  int dodawanie_liczb_2 = liczba_2 + liczba_5;								cout << strNapis_2 << dodawanie_liczb_2 << endl;								  }							 if(strNapis_3==strNapis_5)							  {							  int dodawanie_liczb_3 = liczba_3 + liczba_5;								cout << strNapis_3 << dodawanie_liczb_3 << endl;							  }							 if(strNapis_4==strNapis_5)							  {							  int dodawanie_liczb_4 = liczba_4 + liczba_5;								cout << strNapis_4 << dodawanie_liczb_4 << endl;														  }// instrukcje porownujace 1 znak :)// instrukcje porownujace 2 znak :)							 if(strNapis_2==strNapis)							  {							  int dodawanie_liczb_8 = liczba_2 + liczba;									  cout << "wyswietlam wynik dodawania4 : " << strNapis_2 << dodawanie_liczb_8 << endl; 																	  }							 if(strNapis_2==strNapis_4)							  {							 int dodawanie_liczb_10 = liczba_2 + liczba_4;									  cout << "wyswietlam wynik dodawania6 : " << strNapis_2 << dodawanie_liczb_10 << endl; 																	  }// instrukcje porownujace 3 znak :)							 if(strNapis_3==strNapis)							  {							 							  int dodawanie_liczb_11 = liczba_3 + liczba;									  cout << "wyswietlam wynik dodawania7 : " << strNapis_3 << dodawanie_liczb_11 << endl; 																	  }							 if(strNapis_3==strNapis_2)							  {							  int dodawanie_liczb_12 = liczba_3 + liczba_2;									  cout << "wyswietlam wynik dodawania8 : " << strNapis_3 << dodawanie_liczb_12 << endl; 																	  }								  // instrukcje porownujace 4 znak :)							 if(strNapis_4==strNapis)							  {							  int dodawanie_liczb_14 = liczba_4 + liczba;									  cout << "wyswietlam wynik dodawania10 : " << strNapis_4 << dodawanie_liczb_14 << endl; 																	  }							 if(strNapis_4==strNapis_3)							  {							  int dodawanie_liczb_16 = liczba_4 + liczba_3;									  cout << "wyswietlam wynik dodawania12 : " << strNapis_4 << dodawanie_liczb_16 << endl; 																	  }							 if (strNapis_6==strNapis_8)								 { int dodawanie_liczb_17 = liczba_6 + liczba_8;								   cout << "wyswietlam wynik dodawania : " << strNapis_6 << dodawanie_liczb_17 << endl;								 }							 if (strNapis_6==strNapis_9) 								 { int dodawanie_liczb_18 = liczba_6 + liczba_9;								   cout << "wyswietlam wynik dodawania : " << strNapis_6 << dodawanie_liczb_18 << endl;								 }							 if (strNapis_7==strNapis_8)								 { int dodawanie_liczb_19 = liczba_7 + liczba_8;								   cout << "wyswietlam wynik dodawania : " << strNapis_7 << dodawanie_liczb_19 << endl;								 }							 if (strNapis_7==strNapis_9)		 								 { int dodawanie_liczb_20 = liczba_7 + liczba_9;								   cout << "wyswietlam wynik dodawania : " << strNapis_7 << dodawanie_liczb_20 << endl;								 }	 cout << "wyswietl"<< dodawanie_liczb_20 << "\n";				}

jak już wspomniałem to rozwiązanie jest bardzo sztywne ponieważ umożliwia zawsze tą samą liczbę współczynników do wpisania. Czy istnieje możliwość dynamicznego tworzenia zmiennych wg. pewnego wzoru ?. Czy może jest możliwość deklarowania np. 20 zmiennych ale w trakcie użytkowania programu wybrać aby były używane tylko kilka początkowych.

 

Co właściwie powinienem zrobić ( z czego skorzystać aby skrócić kod i pozbyć się tak wielu warunków do spełnienia ) jakie daje mi sprawdzenie każdego znaku po kolei. Po sprawdzeniu każdego z nich musiałbym zapisać stos nowych warunków (!) do każdego z nich a zajęło by to wieki. Na pewno jest jakiś sposób obejścia tego. Możecie mi coś podpowiedzieć ?.

 

Program oczywiście jest nie skończony z braku wiedzy jak zapisać taki stos warunków :). Ale chcę się dowiedzieć i poprawić to co spartoliłem :).

Edytowane przez Puchacz1

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...