Forum PCLab.pl: Program do obliczania dawek nawozowych - problem przy "module mieszania" - Forum PCLab.pl

Skocz do zawartości

Dodaj obrazek

Otwarty

Ikona Najnowsze pliki

Strona 1 z 1
  • Nie możesz rozpocząć nowego tematu
  • Nie możesz odpowiadać w tym temacie

Program do obliczania dawek nawozowych - problem przy "module mieszania" Oceń temat: -----

#1 Użytkownik jest niedostępny   lukas_gab Ikona

  • Dyskutant
  • PipPip
  • Grupa: Forumowicze
  • Postów: 41
  • Dołączył: Pt, 16 Lut 07

Napisany 15 Marzec 2007 - 17:00

Witam!

Tata mnie poprosił o program do obliczania dawek nawozowych tyle że nie jestem aż tak dobrym matematykiem ... więc prosze o pomoc .

Głównie chodzi o to że ...

Jest woda i ta woda ma w sobie dane składniki : N P K Mg Ca i jest ich w iluś tam mg/l .... Potrzebujemy wode w której jest ileś tam mg/l tych składników... do tego celu mamy nast. nawozy: Saletre Wapniową Saletre Potasową Sal. Magnezową i MonofosforanPotasu . Każdy z tych nawozów ma w sobie dwa składniki np. Sal.Wap. ma 15,5%N i 19%Ca na 1kg , Sal.Pot ,a 13,5%N i 38%K na 1kg.... itd. ale chodzi o to że program ma wybrać odpowiednie ilości nawozów w kilogramach , żeby X ilości pożywki miała dany skład przy uwzględnieniu wartości początkowej jaka już tam jest. Niby prosta ale jak dam zależnosć żeby dobierać Sal.Wap. tyle żeby było 300mg/l N , a następnie żeby dobierało Sal.Pot. tyle zeby było 500mg/l K to w tym samym momencie zwiększy się ilość N ( bo w Sal.Pot. jest równierz 13,5%N ) więc należy dobrać odpowiednią ilość obu nawozów , żeby wartosci były takie same lub zbliżone do rządanych . Jak by każdy nawóz miał jedynie jeden składnik w sobie to by nie było problemu a tak to nie wiem jak ułożyć zaleznosci , żeby odpowiednio umieszac ... Proszę o pomoc - to głównie problem matematyczny , programuje w c++ , nie zadobrze ale wpisanie kodu to pestka - mnie interesuje jak mu powiedzieć żeby to mieszał ... Prosze o pomoc i proszę się nie śmiać

#2 Użytkownik jest niedostępny   mieszek Ikona

  • Nieźle porąbany facet
  • PipPipPipPipPip
  • Grupa: Forumowicze
  • Postów: 9688
  • Dołączył: So, 15 Mar 03

Napisany 15 Marzec 2007 - 17:53

Musiałbyś utworzyć równanie i je rozwiązywać. Np. potrzebujesz 12 kg N, 6 kG Ca i 17 kg K
Sal.Wap. 0,155*N + 0,19*Ca - Xkg
Sal.Pot 0,135*N + 0,38*K - Ykg
X*(0,155*N + 0,19*Ca) + Y*(0,135*N + 0,38*K) = 12*N + 6*Ca + 17 *K
Tworzymy z tego układ równań i szukamy X i Y.

#3 Użytkownik jest niedostępny   lukas_gab Ikona

  • Dyskutant
  • PipPip
  • Grupa: Forumowicze
  • Postów: 41
  • Dołączył: Pt, 16 Lut 07

Napisany 15 Marzec 2007 - 18:15

Nie rozumiem tego ... mozesz to rozwinąć ? Dlaczego zawartosć gramową N w 1kg mnożysz z ilością jaką chcemy otrzymać ? i dlaczego mnożysz na końcu 12*N a przecierz jest to samo co 12*12 ( N=12) ?? Może jestem troche przyciemniony dzisiaj ale prosze wytłumacz jak ty to widzisz ?

---edycja----

Mówie z programowanie nie jestem orłem ...wymyśłiłem coś co oblicza w przybliżeniu .... i napisałem w Turbo c++ i nie wiem dlaczego nie chce działać ... oswiecicie mnie ?

kod :

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Dakometr.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//---deklaracja stałych
//---deklaracje zmiennych----------------------------------
float pN,pP,pK,pMg,pCa,zN,zP,zK,zMg,zCa,kN,kP,kK,kMg,kCa,
iloscPozywki,SalWap,SalPot,SalMag,Mono,SalWapw,SalPotw,SalMagw,Monow;
//---zerowanie parametrów----------------------------------
pN=0;
pP=0;
pK=0;
pMg=0;
pCa=0;
zN=0;
zP=0;
zK=0;
zMg=0;
zCa=0;
iloscPozywki=0;
SalWap=0;
SalPot=0;
SalMag=0;
Mono=0;
//---odczyt zmiennych--------------------------------------
pN=StrToFloat(pN->Text);
pP=StrToFloat(pP->Text);
pK=StrToFloat(pK->Text);
pMg=StrToFloat(pMg->Text);
pCa=StrToFloat(Ca->Text);
zN=StrToFloat(zN->Text);
zP=StrToFloat(zP->Text);
zK=StrToFloat(zK->Text);
zMg=StrToFloat(zMg->Text);
zCa=StrToFloat(zCa->Text);
iloscPozywki=StrToFloat(iloscPozywki->Text);
//---zmienne potrzebne-------------------------------------
kN=(zN-pN)/(10000*iloscPozywki);
kP=(zP-pP)/(10000*iloscPozywki);
kK=(zK-pK)/(10000*iloscPozywki);
kMg=(zMg-pMg)/(10000*iloscPozywki);
kCa=(zCa-pCa)/(10000*iloscPozywki);
//---------------------------------------------------------

for (kCa!=(SalWap*0.19)) { /*obliczanie ilości Saletry Wapniowej dla Ca*/
SalWap+=0.00001 ;
}
kN=kN-(0.155*SalWap ); /*Zmiana koncowej potrzebnej ilości N po dodaniu "SalWap" ilości Saletry Wapniowej*/
/*dla Ca */

for (kP!=(Mono*0.23) {
Mono+=0.00001;
}
kK=kK-(Mono*0.29);

for (kK!=(SalPot*0.38) { /*obliczanie ilości Saletry Potasowej dla K*/
SalPot+=0.00001;

}

kN=kN-(0.135*SalPot); /*Zmiana koncowej potrzebnej ilości N po dodaniu "SalPot" ilości Saletry Potasowej*/
/*dla K */

for(kMg!=(SalMag*0.09){ /*obliczanie ilości Saletry Magnezowej dla Mg*/
SalMag+=0.00001 ;
}
kN=kN-(SalMag*0.11 ); /*Zmiana koncowej potrzebnej ilości N po dodaniu "SalMag" ilości Saletry Magnezowej*/
/*dla Mg */

SalPotw->Text=SalPotw;
SalMagw->Text=SalPotw;
SalWapw->Text=SalPotw;
Monow->Text=SalPotw;

}
//-----------------------------------------------------------------------





i




//---------------------------------------------------------------------------

#ifndef DakometrH
#define DakometrH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TGroupBox *GroupBox1;
TEdit *pN;
TEdit *pK;
TEdit *pP;
TEdit *pMg;
TEdit *pCa;
TLabel *Label1;
TLabel *Label2;
TLabel *Label3;
TLabel *Label4;
TLabel *Label5;
TLabel *Label6;
TLabel *Label7;
TLabel *Label8;
TLabel *Label9;
TLabel *Label10;
TGroupBox *GroupBox2;
TLabel *Label11;
TLabel *Label12;
TLabel *Label13;
TLabel *Label14;
TLabel *Label15;
TLabel *Label16;
TLabel *Label17;
TLabel *Label18;
TLabel *Label19;
TLabel *Label20;
TEdit *zN;
TEdit *zK;
TEdit *zP;
TEdit *zMg;
TEdit *zCa;
TGroupBox *GroupBox3;
TEdit *iloscPozywki;
TLabel *Label21;
TButton *Button1;
TEdit *SalWapw;
TEdit *SalPotw;
TEdit *SalMagw;
TEdit *Monow;
TLabel *Label22;
TLabel *Label23;
TLabel *Label24;
TLabel *Label25;
TGroupBox *GroupBox4;
TLabel *Label26;
TLabel *Label27;
TLabel *Label28;
TLabel *Label29;
TLabel *Label30;
void __fastcall Button1Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif



i błędy ..... :
[C++ Error] Dakometr.cpp(40): E2288 Pointer to structure required on left side of -> or ->*
[C++ Error] Dakometr.cpp(41): E2288 Pointer to structure required on left side of -> or ->*
[C++ Error] Dakometr.cpp(42): E2288 Pointer to structure required on left side of -> or ->*
[C++ Error] Dakometr.cpp(43): E2288 Pointer to structure required on left side of -> or ->*
[C++ Error] Dakometr.cpp(44): E2451 Undefined symbol 'Ca'
[C++ Error] Dakometr.cpp(45): E2288 Pointer to structure required on left side of -> or ->*
[C++ Error] Dakometr.cpp(46): E2288 Pointer to structure required on left side of -> or ->*
[C++ Error] Dakometr.cpp(47): E2288 Pointer to structure required on left side of -> or ->*
[C++ Error] Dakometr.cpp(48): E2288 Pointer to structure required on left side of -> or ->*
[C++ Error] Dakometr.cpp(49): E2288 Pointer to structure required on left side of -> or ->*
[C++ Error] Dakometr.cpp(50): E2288 Pointer to structure required on left side of -> or ->*
[C++ Error] Dakometr.cpp(59): E2378 For statement missing ;
[C++ Error] Dakometr.cpp(65): E2378 For statement missing ;
[C++ Error] Dakometr.cpp(70): E2378 For statement missing ;
[C++ Error] Dakometr.cpp(78): E2378 For statement missing ;
[C++ Error] Dakometr.cpp(84): E2288 Pointer to structure required on left side of -> or ->*
[C++ Error] Dakometr.cpp(85): E2288 Pointer to structure required on left side of -> or ->*
[C++ Error] Dakometr.cpp(86): E2288 Pointer to structure required on left side of -> or ->*
[C++ Error] Dakometr.cpp(87): E2288 Pointer to structure required on left side of -> or ->*
[C++ Warning] Dakometr.cpp(89): W8004 'kN' is assigned a value that is never used



nie wiem co jest źle ... tutaj program oblicza wszystko poza N - moim zdaniem N nie można obliczyć dokładnie ... co o tym myślicie ? Nie śmiać się ze mnie ;)

Ten post był edytowany przez lukas_gab dnia: 15 Marzec 2007 - 20:05


#4 Użytkownik jest niedostępny   mieszek Ikona

  • Nieźle porąbany facet
  • PipPipPipPipPip
  • Grupa: Forumowicze
  • Postów: 9688
  • Dołączył: So, 15 Mar 03

Napisany 16 Marzec 2007 - 12:11

Cytuj

Dlaczego zawartosć gramową N w 1kg mnożysz z ilością jaką chcemy otrzymać ? i dlaczego mnożysz na końcu 12*N a przecierz jest to samo co 12*12 ( N=12) ?? Może jestem troche przyciemniony dzisiaj ale prosze wytłumacz jak ty to widzisz

12*N bo miało być 12 kg N, tak przykładowo. To nie jest wzór chemiczny, tylko równanie matematyczne :E
I nie mnożę zawartości gramowej tylko zamieniłem procenty na ułamki.
Przykro mi, jeżeli nie łapiesz takich podstawowych spraw to nie jestem w stanie Ci pomóc. Nie jestem pedagogiem i nie potrafię nauczyć podstaw matematyki.

Strona 1 z 1
  • Nie możesz rozpocząć nowego tematu
  • Nie możesz odpowiadać w tym temacie

1 Użytkowników czyta ten temat
0 użytkowników, 1 gości, 0 anonimowych