Jestem nowy w te klocki i potrzebuje konkretnej rady co zrobic.
Mam do przygotowania program do liczenia SEM ogniwa. Nie wiem nawet jak opisac moj problem zebyscie mnie nie wysmieli, no ale sprubuje;p mam nazwe ogniwa, jego potencjal stand. i liczbe el. ( np Fe/Fe2+, 0.754, 2), musze to jakos pogrupowac tak zeby, przy wpisaniu nazwy ogniwa program pobral dane, czyli potencjal i liczbe el. i obliczyl oglny potenckjal tego ogniwa, tylko zupelnie nie wiem jak ugrysc ta sprawe;/
Ja bym zrobił klasę i wczytał to tablicy wszystko co masz.
tylko jak to mniej wiecej napisac
Musiał bym znać wzory itp.. Zapewne ty studiujesz chemie a ja zawsze miałem 2 jak będę miał wzór to zrobię.
Do drugiego jest potrzebne stężenie jonów metalu w roztworze w mol . dm-3, bo do pierwszego pewnie nie masz danych
class ogniwo
{
private:
public:
string nazwa;
double ps;
double le;
double c;
double sem;
};
Później byś tylko sprawdzał nazwę i wyświetlał SEM
E1=E01-(RTlog(C1)/n1/F);
E2=E02-(RTlog(C2)/n2/F);
SEM=(E1-E2);
R, T i F to stale, E1 E2, to potencjaly pologniw,
czyli musialbym zrobic, np mam 9 pologniw, i 9 klas czy jak?, i jak to rozruznic, ze podaje pier jedna pologniwo, a potem drugie, i zeby na koncu mi SEM policzylo
#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
class ogniwo
{
private:
public:
string nazwa;
double ps;
double le;
double c;
double sem;
};
int main(int argc, char *argv[])
{
int a;
cout<<"Podaj liczbe ogniw";
cin>>a;
ogniwo tab[a];
for(int i=0; i<a; i++)
{
cout<<"Podaj nazwe ogniwa";
cin>>tab[i].nazwa;
cout<<"Podaj ps";
cin>>tab[i].ps;
cout<<"Podaj le";
cin>>tab[i].le;
tab[i].c=(twoj wzór);
tab[i].sem=(tab[i].ps+(0.059/le)*log(c));
}
string s;
cout<<"Podaj nazwe ogniwa: ";
cin>>s;
int i=0;
while(true)
{
if(tab[i].nazwa==s)
{
cout<<"SEM = "<<tab[i].sem;
break;
}
i++;
}
system("PAUSE");
return EXIT_SUCCESS;
}
Pewnie jakiś głupi błąd w składni zrobiłem, ale to naprawisz.
A moglbys mi jeszce w skrocie tak objasnic jak .ebilowi;p jak sklecic te tablice?
tzn? tablica jest już przecież zadeklarowana... Jeżeli chcesz z niej wyciągnąć jakiś element to tab[cyfra].zmienna
int a;
cout<<"Podaj liczbe ogniw";
cin>>a;
ogniwo tab[a];
chyba nie bardzo tak to ma wygladać
"a" to jest liczba twoich ogniw... Nie znasz liczby więc wpisujesz ją na początku
cin>>a;
a później deklarujesz tablice która ma "a" elementów. Jest ona typu ogniwo
To jest klasa
class ogniwo
{
private:
public:
string nazwa;
double ps;
double le;
double c;
double sem;
};
A teraz wyobraź sobie, że każdy element tablicy zawiera w sobie zmienne które są w klasie już bardziej dobitnie się nie da.
chodzilo mi raczej o:
ogniwo tab[a];
przyjmie to w ogole jakis kompilator ?
No, ale czego ty w tym nie rozumiesz? "ogniwo" jest to typ, możesz go użyć bo jest zadeklarowana taka klasa, "a" to jest liczba typu int którą podajesz wcześniej.
chodzi mi o takie cos ze mam :
ognwo ps le
fe/fe2+ 1.23 2
al/al3+ 0.23 3
. . .
taka jakby tabele i musze podac nazwe dwcuh ogniw( wybrac z tej tabeli dwa ogniwa), dla kazdego jest liczone potencjal E2 i E1 ze wzoru E1=ps-(0.059/n1)*log(c)) E2=ps-(0.052n2)*log(c))
i na samym koncu mam SEM=E1-E2
Tutaj podajesz je
for(int i=0; i<a; i++)
{
cout<<"Podaj nazwe ogniwa";
cin>>tab[i].nazwa;
cout<<"Podaj ps";
cin>>tab[i].ps;
cout<<"Podaj le";
cin>>tab[i].le;
tab[i].c=(twoj wzór);
tab[i].sem=(tab[i].ps+(0.059/le)*log(c));
}
#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
class ogniwo
{
private:
public:
string nazwa;
double ps;
double le;
double c;
double e1;
double e2;
double sem;
};
int main(int argc, char *argv[])
{
int a;
cout<<"Podaj liczbe ogniw";
cin>>a;
ogniwo tab[a];
for(int i=0; i<a; i++)
{
cout<<"Podaj nazwe ogniwa";
cin>>tab[i].nazwa;
cout<<"Podaj ps";
cin>>tab[i].ps;
cout<<"Podaj le";
cin>>tab[i].le;
tab[i].c=(twoj wzor);
tab[i].e1=(tab[i].ps-(0.059/tab[i].le)*log(tab[i].c));
tab[i].e2=(tab[i].ps-(0.052/tab[i].le)*log(tab[i].c));
tab[i].sem=tab[i].e1-tab[i].e2;
}
string s;
cout<<"Podaj nazwe ogniwa: ";
cin>>s;
int i=0;
while(true)
{
if(tab[i].nazwa==s)
{
cout.precision(5);
cout<<"SEM = "<<tab[i].sem;
break;
}
i++;
}
system("PAUSE");
return EXIT_SUCCESS;
}
wsumie to juz nic. ale Wielkie Dzieki i przepraszam za klopot