problem z programem do liczenia SEM

0

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;/

0

Ja bym zrobił klasę i wczytał to tablicy wszystko co masz.

0

tylko jak to mniej wiecej napisac

0

Musiał bym znać wzory itp.. Zapewne ty studiujesz chemie a ja zawsze miałem 2 jak będę miał wzór to zrobię.

user image

user image

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

0

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

0
#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.

0

A moglbys mi jeszce w skrocie tak objasnic jak .ebilowi;p jak sklecic te tablice?

0

tzn? tablica jest już przecież zadeklarowana... Jeżeli chcesz z niej wyciągnąć jakiś element to tab[cyfra].zmienna

0
 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.

0

chodzilo mi raczej o:

 ogniwo tab[a];

przyjmie to w ogole jakis kompilator ?

0

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.

0

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

0

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));
}
0
#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;
}
 
0

wsumie to juz nic. ale Wielkie Dzieki i przepraszam za klopot

1 użytkowników online, w tym zalogowanych: 0, gości: 1