Poslao: 01 Apr 2018 17:02
|
offline
- mpman

- Mod u pemziji
- Pridružio: 12 Okt 2010
- Poruke: 10910
|
Pre par meseci napravio sam program za proračun donje koturače kod dizalica. Pravio sam više programa i stavio ih pod klase. Tj. imam više klasa i svaka može da radi kao zaseban program kada bi se prekopirala u drugi projekat, tj. klase su međusobno nezavisne, a stavio sam da budu kao klase da bi ih objedinio u jedan program sa izbornikom (da ne otvaram četiri različita programa za izradu grafičkog rada).
Dve stvari bih voleo da uradim, a ne znam kako.
Prvo, kada program utvrdi da kuka, recimo ne zadovoljava potrebe, da pokrene program od početka i da očisti prozor. Ja sam to nekako traljavo rešio. Priložiću i ceo kod na kraju posta. Zanima me da li postoji neki elegantniji način koji bi manje 'bagovao'.
Druga stvar. Voleo bih da mi se izveštaj ispiše u nekom tekstualnom fajlu. Kako to izvesti?
Hvala unapred.
#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
/*
*
*/
class izboruzeta
{
public:
int provera()
{
if (system("CLS")) system("clear");
int exitpoint;
float Q; // Težina
cout << "Nazivna nosivost Q[t]:" << endl;
cin >> Q;
int pk; // Pogonska klasa
cout << "Pogonska klasa:" << endl;
cin >> pk;
float K;
switch(pk)
{
case 1:
K=4.5;
break;
case 2:
K=5;
break;
case 3:
K=6.3;
break;
case 4:
K=7.1;
break;
default:
cout << "! ! ! G R E S K A ! ! !" <<endl;
cout << "Pogonska klasa ne moze biti manja od 1 niti veca od 4!"<<endl;
cout << "Pokrenite program ponovo." << endl;
cin >> exitpoint;
return 0;
}
}
};
class kuka
{
public:
int racun()
{
if (system("CLS")) system("clear");
int exitpoint;
float Q; // Težina
cout << "Nazivna nosivost Q[t]:" << endl;
cin >> Q;
int pk; // Pogonska klasa
cout << "Pogonska klasa:" << endl;
cin >> pk;
float sigmad;
switch(pk)
{
case 1:
sigmad=8.50;
break;
case 2:
sigmad=7;
break;
case 3:
sigmad=6;
break;
case 4:
sigmad=6;
break;
default:
cout << "! ! ! G R E S K A ! ! !" <<endl;
cout << "Pogonska klasa ne moze biti manja od 1 niti veca od 4!"<<endl;
cout << "Pokrenite program ponovo." << endl;
cin >> exitpoint;
return 0;
}
char exit;
exit='T';
while (exit=='T')
{
cout << endl;
cout << "K U K A" << endl;
cout << "[T.2.7; T.2.10]" << endl;
cout << endl;
cout << endl;
cout << "Unesite odgovarajuce parametre:" << endl;
cout << endl;
cout << "Tip kuke:" << endl;
string tipkuke;
cin.ignore();
getline(cin,tipkuke);
float a1;
cout << "a1 [mm]" << endl;
cin >> a1;
a1=a1/10;
float a2;
cout << "a2 [mm]" << endl;
cin >> a2;
a2=a2/10;
float b1;
cout << "b1 [mm]" << endl;
cin >> b1;
b1=b1/10;
float b2;
cout << "b2 [mm]" << endl;
cin >> b2;
b2=b2/10;
float h1;
cout << "h1 [mm]" << endl;
cin >> h1;
h1=h1/10;
float h2;
cout << "h2 [mm]" << endl;
cin >> h2;
h2=h2/10;
cout << "Unesite odnos 1:"<<endl;
int odnos;
cin >> odnos;
float b1p;
float b2p;
b1p=b1-(2*h1/odnos);
b2p=b2-(2*h2/odnos);
cout << "Vrednost b1' [mm]:" << b1p <<", b2' [mm]:" << b2p << endl;
cout << endl;
cout << "Unete vrednosti podataka za kuku:" << endl;
cout << "a1 [cm]:" << a1 << endl;
cout << "a2 [cm]:" << a2 << endl;
cout << "b1 [cm]:" << b1 << endl;
cout << "b2 [cm]:" << b2 << endl;
cout << "h1 [cm]:" << h1 << endl;
cout << "h2 [cm]:" << h2 << endl;
cout << "b1' [cm]:" << b1p << endl;
cout << "b2' [cm]:" << b2p << endl;
cout << endl;
cout << "O P T E R E C E NJ A K U K E" << endl;
float Aa;
float Ab;
float e1;
float e2;
float IA;
float IB;
Aa=((b1+b1p)*h1)/2;
Ab=((b2+b2p)*h2)/2;
e1=(h1/3)*(b1+2*b1p)/(b1+b1p);
e2=(h1/3)*(2*b1+b1p)/(b1+b1p);
IA=((pow(b1,2)+4*b1*b1p+pow(b1p,2))*pow(h1,3))/(36*(b1+b1p));
IB=((pow(b2,2)+4*b2*b2p+pow(b2p,2))*pow(h2,3))/(36*(b2+b2p));
float FQ;
float MA;
float MB;
float sigmaa1;
float sigmaa2;
float g;
g=9.81;
//PRESEK A-A
FQ=Q*pow(10,3)*g;
MA=FQ*((a1/2)+e1);
FQ=FQ/1000;
MA=MA/1000;
cout << endl;
cout << "Dobijene vrednosti:" << endl;
cout << "Povrsina Aa = " << Aa << " cm^2" << endl;
cout << "Povrsina Ab = " << Ab << " cm^2" << endl;
cout << "Povrsina e1 = " << e1 << " cm" << endl;
cout << "Povrsina e2 = " << e2 << " cm" << endl;
cout << "Povrsina IA = " << IA << " cm^4" << endl;
cout << "Povrsina IB = " << IB << " cm^4" << endl;
cout << "Sila FQ[kN]:" << FQ << endl;
cout << "Moment MA[kNcm]:" << MA << endl;
sigmaa1=(FQ/Aa)+((MA/IA)*e1);
sigmaa2=(FQ/Aa)-((MA/IA)*e2);
cout << "Napon R1 [kN/cm^2]:" << sigmaa1 << endl;
//PRESEK B-B
float e3;
float e4;
e3=(h2/3)*(b2+2*b2p)/(b2+b2p);
e4=(h2/3)*(2*b2+b2p)/(b2+b2p);
//Opterecenja
float sigmab1;
float sigmab2;
MB=(FQ/2)*((a1/2)+e3);
sigmab1=(FQ/(2*Ab))+((MB/IB)*e3);
sigmab2=(FQ/(2*Ab))-((MB/IB)*e4);
cout << "Napon R3 [kN/cm^2]:" << sigmab1 << endl;
cout << "Napon R4 [kN/cm^2]:" << sigmab2 << endl;
cout << endl << endl << endl;
float R1max;
float R2max;
float K;
float ro;
float sigmapdop;
float odnos78;
ro=e1+(a1/2);
K=(2*ro)*((b1p+(((b1-b1p)/h1)*(h1+(a1/2))))*log((h1+(a1/2))/(a1/2))-(b1-b1p))-1;
R1max=(FQ/Aa)*(1/K)*((2*e1)/a1);
R2max=(-(FQ/Aa))*(1/K)*(e2/(h1+(a1/2)));
odnos78=((R1max-sigmaa1)/R1max);
sigmapdop=sigmad/odnos78;
float pi;
float sigmaz, d0, sigmazd;
pi=3.1415926535897932384626433832795;
cout << "Unesite vrednost precnika jezgra oblog navoja d0 [T2.10] u mm:" << endl;
cin >> d0;
d0=d0/10;
sigmazd=(3+6)/2;
sigmaz=(4*FQ)/(pi*pow(d0,2));
cout << "+----------------+" << endl;
cout << "| IZVESTAJ |" << endl;
cout << "+----------------+" << endl << endl;
cout << "| Kuka: " << tipkuke << endl;
cout << "| Povrsina Aa = " << Aa << " cm^2" << endl;
cout << "| Povrsina Ab = " << Ab << " cm^2" << endl;
cout << "| Rastojanje e1 = " << e1 << " cm" << endl;
cout << "| Rastojanje e2 = " << e2 << " cm" << endl;
cout << "| Rastojanje e3 = " << e3 << " cm" << endl;
cout << "| Rastojanje e4 = " << e4 << " cm" << endl;
cout << "| Moment inercije IA = " << IA << " cm^4" << endl;
cout << "| Moment inercije IB = " << IB << " cm^4" << endl;
cout << "+----------------------------------------------+" << endl;
cout << "| Sila FQ = " << FQ << " kN" << endl;
cout << "| Moment MA = " << MA << " kNcm" << endl;
cout << "| Moment MB = " << MB << " kNcm" << endl;
cout << "+----------------------------------------------+" << endl;
cout << "|* PRESEK A-A *" << endl;
cout << "| Napon R1 = " << sigmaa1 << " kN/cm^2" << endl;
cout << "| Napon R2 = " << sigmaa2 << " kN/cm^2" << endl;
cout << "|* PRESEK B-B *" << endl;
cout << "| Napon R3 = " << sigmab1 << " kN/cm^2" << endl;
cout << "| Napon R4 = " << sigmab2 << " kN/cm^2" << endl;
cout << "+----------------------------------------------+" << endl;
cout << "|* Ako kuku posmatramo kao krivi stap:" << endl;
cout << "| Napon R1max = " << R1max << "kN/cmˇ2" << endl;
cout << "| Napon R2max = " << R2max << "kN/cmˇ2" << endl;
cout << "| Razlika izmedju napona pod pretpostavkom da je kuka krivi stap "<< endl <<" i pretpostavke da je pravi:" << odnos78*100 << endl;
cout << "| Dozvoljeni napon bez korekcije = " << sigmapdop << "kN/cm^2" << endl;
cout << "+----------------------------------------------+" << endl;
cout << "|* PROVERA VRATA KUKE" << endl;
cout << "| Napon Rz = " << sigmaz << "kN/cm^2" << endl;
cout << "| Dozvoljeni napon Rzd = " << sigmazd << "kN/cm^2" << endl;
cout << "+----------------------------------------------+" << endl;
cout << "+----------------------------------------------+" << endl;
sigmaa2=abs(sigmaa2);
sigmab2=abs(sigmab2);
if ((sigmaa1<sigmad)&&(sigmaa2<sigmad)&&(sigmab1<sigmad)&&(sigmab2<sigmad)&&(sigmaz<sigmazd))
{
cout << "Ova kuka zadovoljava date uslove." << endl;
exit='N';
}
else
{
cout << "Ova kuka " << tipkuke << " NE zadovoljava date uslove." << endl;
cin >> exitpoint;
}
}
}
};
class izbornik
{
public:
int meni1;
int izbor()
{
if (system("CLS")) system("clear");
cout << "***G L A V N I I Z B O R N I K***" << endl;
cout << endl << endl;
cout << "[1] PRORACUN KUKE" << endl;
cout << "[2] PRORACUN UZETA [*]" << endl;
cout << "[3] [*]" << endl;
cout << "[5] IZLAZ" << endl;
cout << endl;
cout << "Vas ibor je:" << endl;
cin >> meni1;
switch(meni1)
{
case 1:
kuka a;
a.racun();
cout << "Ukucajte 1 i pritisnite enter da bi se pojavio meni." << endl;
cin >> meni1;
break;
case 2:
cout << "Ovaj deo programa nije zavrsen" << endl;
cout << "Ukucajte 5 i pritisnite enter da bi izasli u meni." << endl;
cout << "Ukucajte 1 i pritisnite enter da bi ponovili proracun." << endl;
cout << "Vas izbor je:" << endl;
cin >> meni1;
break;
default:
cout << "! ! ! G R E S K A ! ! !" <<endl;
}
}
};
int main() {
cout << "....................................." << endl;
cout << "........** **........" << endl;
cout << "........... Proracun kuke ..........." << endl;
cout << "............... 2017 ................" << endl;
cout << "....................................." << endl;
cout << "V0.3.1" << endl;
cout << endl << endl << endl;
izbornik a7;
a7.izbor();
while(a7.meni1<5)
{
a7.izbor();
if (system("CLS")) system("clear");
cout << "....................................." << endl;
cout << "........** **........" << endl;
cout << "........... Proracun kuke ..........." << endl;
cout << "............... 2017 ................" << endl;
cout << "....................................." << endl;
cout << "V0.3.1" << endl;
cout << endl << endl;
}
int sto;
cin >> sto;
system("PAUSE");
return 0;
}
Za čišćenje prozora, kao što možete videti, koristim: ,,if (system("CLS")) system("clear");", ali sam naišao na tekst koji kaže da to nije dobro, ali nisam razumeo zašto niti šta bih drugo mogao da primenim.
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 02 Apr 2018 08:49
|
offline
- Njubara

- Građanin
- Pridružio: 05 Mar 2016
- Poruke: 88
|
Пробај уместо while са do until петљом:
int main (){
izbornik a7;
do{
if (system("CLS")) system("clear");
cout << "....................................." << endl;
cout << "........** **........" << endl;
cout << "........... Proracun kuke ..........." << endl;
cout << "............... 2017 ................" << endl;
cout << "....................................." << endl;
cout << "V0.3.1" << endl;
cout << endl << endl;
a7.izbor();
}until(a7.meni1<5)
int sto;
cin >> sto;
system("PAUSE");
return 0;
}
Што се тиче уписа у фајл, најелегантнији начин је да направиш две функције и то да једна исписује на екран а друга уписује у фајл. Нпр:
void izvestaj_ekran(tipkuke,Aa,Ab,....,sigmazd){
cout << "| Kuka: " << tipkuke << endl;
....
cout << "| Dozvoljeni napon Rzd =" << sigmazd << "kN/cm^2" << endl;
}
A за испис у фајл скоро па идентична уместо cout користиш fout.
#include <fstream>
.....
void izvestaj_fajl(tipkuke,Aa,Ab,....,sigmazd){
string imefajla = "izvestaj.txt";
ofstream fout(imefajla, ios::out | ios::app);
fout << "| Kuka: " << tipkuke << endl;
....
fout << "| Dozvoljeni napon Rzd =" << sigmazd << "kN/cm^2" << endl;
fout.close();
}
Нисам сто година ништа писао тако да ко је свежији у кодирању нека ме исправи.
|
|
|
|
|
Poslao: 02 Apr 2018 13:54
|
offline
- Njubara

- Građanin
- Pridružio: 05 Mar 2016
- Poruke: 88
|
Што се тиче вектора не могу ти помоћи, изветрело одавно.
Управу си за fout и endl, a овај код:
fout << "OSNOVE ZELEZNICKIH VOZILA" << "\r\n" << "*****************" << '\n';
можеш овако:
fout << "***************************\n";
fout << "*OSNOVE ZELEZNICKIH VOZILA*\n";
fout << "***************************\n";
|
|
|
|
Poslao: 02 Apr 2018 20:26
|
offline
- E.L.I.T.E.

- Legendarni građanin
- Pridružio: 23 Maj 2012
- Poruke: 4575
|
mpman ::Kako formirati listu, tj. vektor?
Znači x, recimo, sadrži 20 članova. Kako ga definisati i kako pristupiti pojedinačnom članu.
Šta te tačno buni kod njih? Imaš push_back funkciju koja dodaje podatak na kraj, a sa at možeš da pristupiš pojedinačnom članu.
std::vector <int> x;
for (int i = 1; i <= 20; i++)
x.push_back(i);
std::cout << "Peti element: " << x.at(4) << std::endl;
|
|
|
|
Poslao: 06 Apr 2018 10:00
|
offline
- mpman

- Mod u pemziji
- Pridružio: 12 Okt 2010
- Poruke: 10910
|
Hvala
Javlja mi se još jedan problem.
Definisao sam klasu za izbor tačke koja ima svoju h i B0 koordinatu u public delu.
Definisao sam drugu klasu u kojoj želim da koristim tu koordinatu. Kada pokušam da je povučem iz prethodne klase, dobijem izmenjenu vrednost. Zašto i kako da izbegnem ovo?
class ulaznipodaci1
{
public:
float h, B0;
float odabirtacke()
{
string imefajla="izvestaj.txt";
ofstream fout(imefajla, ios::out | ios::app);
fout << "***************************"<< "\r\n"
<< "*OSNOVE ZELEZNICKIH VOZILA*" <<
"\r\n" << "***************************" << "\r\n" << endl;
fout << "*********V.0.0.1.**********" << "\r\n" << "\r\n" <<
"\r\n" << "+----------+"<<
"\r\n" << "|*IZVESTAJ*|"<<
"\r\n" << "+----------+"<< "\r\n" << "\r\n" << endl;
if (system("CLS")) system("clear");
float hR, hP, hO, hN, hM, hL, hA, hB, hC, hD, hE, hF, hG, hH;
float B0R, B0P, B0O, B0N, B0M, B0L, B0A, B0B, B0C, B0D, B0E, B0F, B0G, B0H;
hR=4.310;
hP=4.010;
hO=3.700;
hN=3.250;
hM=1.170;
hL=1.170;
hA=0.401;
hB=0.400;
hC=0.321;
hD=0.320;
hE=0.230;
hF=0.200;
hG=0.142;
hH=0.115;
B0R=0.525;
B0P=1.120;
B0O=1.425;
B0N=1.645;
B0M=1.645;
B0L=1.620;
B0A=1.620;
B0B=1.520;
B0C=1.140;
B0D=1.397;
B0E=1.300;
B0F=1.237;
B0G=1.237;
B0H=1.197;
cout << "+-----------+" << endl;
cout << "|IZBOR TACKE|" << endl;
cout << "+-----+-----+" << endl;
cout << "| 1-R | 8-B |" << endl;
cout << "| 2-P | 9-C |" << endl;
cout << "| 3-O |10-D |" << endl;
cout << "| 4-N |11-E |" << endl;
cout << "| 5-M |12-F |" << endl;
cout << "| 6-L |13-G |" << endl;
cout << "| 7-A |14-H |" << endl;
cout << "+-----+-----+" << endl;
cout << "Za koju tacku radite proracun? Unesite veliko slovo tacke."<< endl;
cout << "Vas izbor je:" << endl;
char izborslova;
cin >> izborslova;
if(izborslova=='R'||izborslova=='r')
{
h=hR;
B0=B0R;
}
else
{
if(izborslova=='P'||izborslova=='p')
{
h=hP;
B0=B0P;
}
else
{
if(izborslova=='O'||izborslova=='o')
{
h=hO;
B0=B0O;
}
else
{
if(izborslova=='N'||izborslova=='n')
{
h=hN;
B0=B0N;
}
else
{
if(izborslova=='M'||izborslova=='m')
{
h=hM;
B0=B0M;
}
else
{
if(izborslova=='L'||izborslova=='l')
{
h=hL;
B0=B0L;
}
else
{
if(izborslova=='A'||izborslova=='a')
{
h=hA;
B0=B0A;
}
else
{
if(izborslova=='b'||izborslova=='B')
{
h=hB;
B0=B0B;
}
else
{
if(izborslova=='C'||izborslova=='c')
{
h=hC;
B0=B0C;
}
else
{
if(izborslova=='D'||izborslova=='d')
{
h=hD;
B0=B0D;
}
else
{
if(izborslova=='E'||izborslova=='e')
{
h=hE;
B0=B0E;
}
else
{
if(izborslova=='F'||izborslova=='f')
{
h=hF;
B0=B0F;
}
else
{
if(izborslova=='G'||izborslova=='g')
{
h=hG;
B0=B0G;
}
else
{
if(izborslova=='H'||izborslova=='h')
{
h=hH;
B0=B0H;
}
else
{
cout << "Izabrali ste nepostojecu tacku" << endl;
izborslova='N';
}
}
}
}
}
}
}
}
}
}
}
}
}
}
cout << "h=" << h << endl;
cout << "B0=" << B0 << endl;
fout.close();
}
};
class ulaznipodaci2
{
public:
float h0, eta0, hc, a, p, d, q, w, dhc, dhe, da, di, c, b, nos, pos, Gos;
float Gnm, Gom, dhh, dhg, dh, S;
float izteksta()
{
string imefajla="izvestaj.txt";
ofstream fout(imefajla, ios::out | ios::app);
cout << "Unesite trazene podatke u naznacenim jedinicama" << endl;
cout << endl;
cout << "Visina tezista ogibljenih masa od ose bocne rotacije za pun vagon h0[m]:" << endl;
cin >> h0;
cout << "Ugao nesimetrije vagona eta0[°]:" << endl;
cin >> eta0;
cout << "Visina bocne rotacije u odnosu na gornju ivicu sine hc[m]:" << endl;
cin >> hc;
cout << "Rastojanje izmedju svornjaka obrtnih postolja a[m]:" << endl;
cin >> a;
cout << "Rastojanje izmedju osovina u obrtnom postolju p[m]:" << endl;
cin >> p;
cout << "Rastojanje venaca tockova 10cm ispod srednjeg kruga kotrljanja d[m]:"<< endl;
cin >> d;
cout << "Bocno pomeranje rama obrtnog postolja u odnosu na rukavac osovine q[m]:" << endl;
cin >> q;
cout << "Bocno pomeranje sanduka u odnosu na ram obrtnog postolja w[m]:" << endl;
cin >> w;
cout << "Vertikalno pomeranje usled elasticnosti opruga dhc[m]:" << endl;
cin >> dhc;
cout << "Vertikalno pomeranje usled elasticnosti konstrukcije dhe[m]:" << endl;
cin >> dhe;
cout << "Vertikalno pomeranje usled oscilovanja dhg[m]:" << endl;
cin >> dhg;
cout << "Precnik novog tocka da[m]:" << endl;
cin >> da;
cout << "Precnik tocka na granici istrosenosti di[m]:" << endl;
cin >> di;
cout << "Ekvivalentna krutost opruga jedne bocne strane vagona c[kN/m]:" << endl;
cin >> c;
cout << "Polovina bocnog rastojanja opruga b[m]:" << endl;
cin >> b;
cout << "Broj osovina nos[kom]:" << endl;
cin >> nos;
cout << "Osovinski pritisak pos[kN]:" << endl;
cin >> pos;
cout << "Tezina jednog osovinskog sklopa Gos[kN]:" << endl;
cin >> Gos;
//Izvestaj
fout << "* UNETE VREDNOSTI ZA KOJE SE RADI PRORACUN *" <<"\r\n" << endl;
fout << "Visina tezista ogibljenih masa od ose bocne rotacije za pun vagon h0="<< h0 <<"m" <<"\r\n" << endl;
fout << "Ugao nesimetrije vagona eta0=" <<eta0<< "°" <<"\r\n" << endl;
fout << "Visina bocne rotacije u odnosu na gornju ivicu sine hc=" << hc << "m" <<"\r\n" << endl;
fout << "Rastojanje izmedju svornjaka obrtnih postolja a=" << a << "m" <<"\r\n" << endl;
fout << "Rastojanje izmedju osovina u obrtnom postolju p=" << p << "m" <<"\r\n" << endl;
fout << "Rastojanje venaca tockova 10cm ispod srednjeg kruga kotrljanja d="<<d<<"m"<<"\r\n" << endl;
fout << "Bocno pomeranje rama obrtnog postolja u odnosu na rukavac osovine q="<<q<<"m" <<"\r\n" << endl;
fout << "Bocno pomeranje sanduka u odnosu na ram obrtnog postolja w=" << w << "m" <<"\r\n" << endl;
fout << "Vertikalno pomeranje usled elasticnosti opruga dhc=" << dhc << "m" <<"\r\n" << endl;
fout << "Vertikalno pomeranje usled elasticnosti konstrukcije dhe=" << dhe << "m" <<"\r\n" << endl;
fout << "Precnik novog tocka da="<< da <<"m" <<"\r\n" << endl;
fout << "Precnik tocka na granici istrosenosti di="<<di<<"m" <<"\r\n" << endl;
fout << "Ekvivalentna krutost opruga jedne bocne strane vagona c=" << c << "kN/m" <<"\r\n" << endl;
fout << "Polovina bocnog rastojanja opruga b="<<b<<"m" <<"\r\n" << endl;
fout << "Broj osovina nos="<<nos<<"kom" <<"\r\n" << endl;
fout << "Osovinski pritisak pos="<<pos<<"kN" <<"\r\n" << endl;
fout << "Tezina jednog osovinskog sklopa Gos="<<Gos<<"kN" <<"\r\n" << "\r\n" << "\r\n" << endl;
fout << "+-----------------------------+" << "\r\n" << endl;
fout << "| PRORACUN |" << "\r\n" << endl;
fout << "+-----------------------------+" << "\r\n" << endl;
// Odredjivanje neogibljene mase
Gnm=nos*Gos;
Gom=(nos*pos)-Gnm;
cout << "Tezina neogibljene mase: Gnm = " << Gnm << " kN" << endl;
fout << "Tezina neogibljene mase: Gnm = " << Gnm << " kN" << "\r\n" << endl;
cout << "Tezina ogibljene mase: Gom = " << Gom << " kN" << endl;
fout << "Tezina ogibljene mase: Gom = " << Gom << " kN" << "\r\n" << endl;
// Pomeranja u vertikalnom pravcu
dhh=0.5*(da-di);
dh=dhh+dhc+dhe+dhg;
cout << "Ukupno vertikalno pomeranje: dh = " << dh << " m" << endl;
fout << "Ukupno vertikalno pomeranje: dh = " << dh << " m" << "\r\n" << endl;
// Koeficijent naginjanja
S=1/(((2*c*b*b)/(Gom*h0))-1);
cout << "Koeficijent naginjanja: S = " << S << endl;
fout << "Koeficijent naginjanja: S = " << S << "\r\n" << endl;
fout.close();
}
float tacka()
{
string imefajla="izvestaj.txt";
ofstream fout(imefajla, ios::out | ios::app);
ulaznipodaci1 u1;
cout << "h1=" << u1.h << endl;
float z, z1, z2, z3;
z2=u1.h-0.5;
if (z2>0)
{
z2=u1.h-0.5;
}
else
{
z2=0;
}
z1=(S/10)*abs(((u1.h-hc)))-(0.04*z2);
if (z1>0)
{
z1=(S/10)*(abs((u1.h-hc)))-(0.04*z2);
}
else
{
z1=0;
}
z3=eta0-1;
if (z3>0)
{
float pi;
pi=3.141592654;
z3=tan((eta0-1)*pi/180);
}
else
{
z3=0;
}
z=((S/30)+z3)*(abs((u1.h-hc)))+z1;
cout << "Odstupanje od srednjeg polozaja u bocnom pravcu: z = " << z << " m" << endl;
fout << "Odstupanje od srednjeg polozaja u bocnom pravcu: z = " << z << " m" << "\r\n" << endl;
cout << "Odstupanje od srednjeg polozaja u bocnom pravcu: z1 = " << z1 << " m" << endl;
cout << "Odstupanje od srednjeg polozaja u bocnom pravcu: z2 = " << z2 << " m" << endl;
cout << "Odstupanje od srednjeg polozaja u bocnom pravcu: z3 = " << z3 << " m" << endl;
cout << "Odstupanje od srednjeg polozaja u bocnom pravcu: h = " << u1.h << " m" << endl;
fout.close();
}
};
Izlaz mi je:
Citat:Vas izbor je:
m
h=1.17
B0=1.645
h1=-1.84389e-39
Odstupanje od srednjeg polozaja u bocnom pravcu: z = 0 m
Odstupanje od srednjeg polozaja u bocnom pravcu: z1 = 0 m
Odstupanje od srednjeg polozaja u bocnom pravcu: z2 = 0 m
Odstupanje od srednjeg polozaja u bocnom pravcu: z3 = 0 m
Odstupanje od srednjeg polozaja u bocnom pravcu: h = -1.84389e-39 m
Primetite da se u1.h menja iz 1.17 u -1.84389e-39...
|
|
|
|
Poslao: 06 Apr 2018 12:08
|
offline
- Njubara

- Građanin
- Pridružio: 05 Mar 2016
- Poruke: 88
|
Овде си направио објекат u1, али га ниси иницијализовао (доделио основне вредности), па је променљивој h из објекта u1 (u1.h) додељено неко смеће из меморије.
ulaznipodaci1 u1;
cout << "h1=" << u1.h << endl;
Вероватно си хтео овако нешто:
ulaznipodaci1 u1;
u1.h = h;
cout << "h1=" << u1.h << endl;
Уместо if(){}else if(){}else израза боље ти је да користиш switch:
char izborslova;
cin >> izborslova:
switch(izborslova){
case 'R':
case 'r': h=hR;
B0=B0R;
break;
case 'P':
case 'p': h=hP;
B0=B0P;
break;
.......................
default : cout << "Izabrali ste nepostojecu tacku" << endl;
izborslova='N';
}
|
|
|
|
Poslao: 06 Apr 2018 12:30
|
offline
- mpman

- Mod u pemziji
- Pridružio: 12 Okt 2010
- Poruke: 10910
|
Napisano: 06 Apr 2018 13:15
Nisam znao da switch može i za slova da se koristi
Hvala
Pre ovoga koristio sam:
float h;
h=u1.h;
...alil mi vraća istu vrednost, tj. ovu h = -1.84389e-39 m
Dopuna: 06 Apr 2018 13:30
Probao sam ovo što si napisao:
ulaznipodaci1 u1;
float h;
u1.h=h;
cout << "h1=" << h << endl;
Izlaz je:
h1=3.25
a treba biti 1.17
|
|
|
|
Poslao: 06 Apr 2018 12:36
|
offline
- vasa.93

- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14824
- Gde živiš: Niš
|
Pa zapis ti je loš. Štampaš vrednost promenljive h koja je samo deklarisana, a ne i inicijalizovana. U tom slučaju se štampa ono što se nalazi u memoriji u trenutku deklaracije.
|
|
|
|
Poslao: 06 Apr 2018 12:47
|
offline
- mpman

- Mod u pemziji
- Pridružio: 12 Okt 2010
- Poruke: 10910
|
Čekaj, ne razumem. Šta je tačno loše?
u1.h=h ili h=u1.h?
Posle izvršavanja prve klase, ja dobijam odgovarajuću vrednost h=1,17. Međutim, ja ne uspevam da pozovem 1.17 u drugoj klasi.
|
|
|
|