Potřebovala bych pomoct s tímto domácím úkolem.Vůbec si s tím nevím rady...Mám jenom část..
Mám sestavit program, který určí výslednou teplotu vody, při smíšení dvou různých množství vody o různých teplotách (použití kalorimetrické rovnice).
Vstup: - hmotnost a teplota prvního vzorku vody
- hmotnost a teplota druhého vzorku vody
Výstup: Výsledná teplota po smíchání
Program po zobrazení výsledné teploty nabídne možnost řešit další úlohu nebo skončit.
--
--
--
Vím, že ta kalorimetrická rovnice má vzorec:--- m1 * c * (t-t1) + C * (t-t1) = m2 * c * (t2-t) ---
a zatám mám z programu toto:
--
Uses crt;
const c = 4200;
var t1,t2,m1,m2,c:real;
begin
writeln('Hmotnost 1 [kg]: ');
readln(t1);
writeln('Teplota 1 [K]: ');
readln(m1);
writeln('Hmotnost 2 [kg]: ');
readln(t2);
writeln('Teplota 2 [K]: ');
readln(m2);
m1*c*(t-t1)+D*(t-t1)= m2*c*(t2-t)
writeln;
writeln('Celkova teplota po smichani:');
end.
Fórum › Pascal
Pomoc s domácím úkolem
Podle mne je zbytečné zpočítávat do rovnice i původní teplo C * (t - t1) - nebo co to je, opravte mě, jestli se mýlím :-)... čili rovnice by vypadala asi nějak: c1 * m1 * (t1 − t) = c2 * m2 * (t − t2) a jestli-že se jedná o tutéž vodu, pak c1 = c2 a jde krátit, čili výsledná rovnice by byla pouze: m1 * (t1 − t) = m2 * (t − t2)
Co se týče programu, tak nemůžeš mít stejný identifikátor pro dvě a víc symblů - máš tam "c" jako konstantu i proměnnou.
Používání knihovny CRT, když z ní žádnou funkci nebereš je také zbytečné (kompiler by to měl sice odstranit sám, ale proč si přidělávat práci :-) )
No a co se týče tý nabídky OPAKOVÁNÍ nebo skončení, tak to musíš buď celé uzavřít do cyklu, nebo tam definovat návěstí (návěstí se učiteli předpokládám nebude líbit - není-li tak zvrhlý jako já ;-) )
čili to vidím asi takhle:
var
m1,t1,t,m2,t2 : real; {vsechny promenne z rovnice budou zde}
ukonci : char; {pomocna promenna, ktera uchova hodnotu jestli chci pokracovat nebo ukoncit}
begin
ukonci := 'n'; {jaka koliv hodnota, krome 'a', coz znamena ukonceni programu}
while ukonci <> 'a' do
begin
write('Zadej hmotnost 1 [kg]: ');
readln(m1);
write('Zadej teplotu 1 [K]: ');
readln(t1);
write('Zadej hmotnost 2 [kg]: ');
readln(m2);
write('Zadej teplotu 2 [K]: ');
readln(t2); {az sem je to jasny, ted se ale rovnice musi predelat do tvaru t = xxx, nebo pouzit dalsi pomocnou promennou}
t := (m1 * t1 + m2 * t2) / (m1 + m2); {m1 + m2 se nesmi rovnat nule}
writeln('Celkova teplota je: ',t);
writeln('Chcete-li ukoncit program napiste 'a': ');
readln(ukonci);
end;
end.
Nabídka ukončování nebo pokračování se dá udělat mnohlem lépe, ale tohle by mělo stačit
To KIIV : Přesně dvakrát.
Moje stránka.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
P0moc s domacím úkolem — založil Halvin
Pomoc, pomoc s úkolem (matice v Delphi) — založil maxikp
Pomoc s ukolem — založil Janickaaa1919
Pomoc s úkolem — založil Markéta
Pomoc s úkolem v C++ — založil zaltex
Moderátoři diskuze