Pereiti prie turinio

Ar įmanoma optimatizuoti programą? VOID FUNKCIJA


Rekomenduojami pranešimai

Sveiki, šiuo metu mokausi funkciją void ir sprendžiuosi šiokius tokius uždavinius. Ką tik baigiau spręsti vieną "griozdišką" uždavinį ir iškilo klausimas ar eitų šią programą kaip nors optimatizuoti, padaryti mažiau griozdišką?

 

10149330_755916087774905_598609483_n.jpg?oh=297aacbc56c99fc494e29bc3d1fd46fe&oe=5334DDC5&__gda__=1396007792_9c953c426c0f3a0d765cbac03b1935aa

 

#include <iostream>
#include <fstream>
#include <iomanip>

using namespace std;
const char Cfr[]="Rezultatai.txt";

void vienas (int & m1, double & c1, double & p1, double & j1 )
{
   m1=1;
   c1=100/2.54;
   p1=c1/12;
   j1=p1/3;
}

void du (int & m2, double & c2, double & p2, double & j2 )
{
   m2=2;
   c2=200/2.54;
   p2=c2/12;
   j2=p2/3;
}

void trys (int & m3, double & c3, double & p3, double & j3 )
{
   m3=3;
   c3=300/2.54;
   p3=c3/12;
   j3=p3/3;
}

void keturi (int & m4, double & c4, double & p4, double & j4 )
{
   m4=4;
   c4=400/2.54;
   p4=c4/12;
   j4=p4/3;
}

void penki (int & m5, double & c5, double & p5, double & j5 )
{
   m5=5;
   c5=500/2.54;
   p5=c5/12;
   j5=p5/3;
}

void spausdinti (int m1, double c1, double p1, double j1, int m2, double c2, double p2, double j2, int m3, double c3, double p3, double j3, int m4, double c4, double p4, double j4, int m5, double c5, double p5, double j5)
{
   ofstream fr (Cfr);
   fr << m1 << " " << fixed << setprecision (2) << c1 << " "<< fixed << setprecision (2) << p1  << " "<< fixed << setprecision (2) << j1 << endl;
   fr << m2 << " "<< fixed << setprecision (2) << c2  << " "<< fixed << setprecision (2) << p2  << " "<< fixed << setprecision (2) << j2  << endl;
   fr << m3 << " "<< fixed << setprecision (2) << c3  << " "<< fixed << setprecision (2) << p3  << " "<< fixed << setprecision (2) << j3  << endl;
   fr << m4 << " "<< fixed << setprecision (2) << c4  << " "<< fixed << setprecision (2) << p4  << " "<< fixed << setprecision (2) << j4  << endl;
   fr << m5 << " " << fixed << setprecision (2) << c5  << " "<< fixed << setprecision (2) << p5  << " "<< fixed << setprecision (2) << j5  << endl;
   fr.close ();
}
int main()
{
   double c1, p1, j1, c2, p2, j2, c3, p3, j3, c4, p4, j4, c5, p5, j5;
   int m1, m2, m3, m4, m5;

 vienas (m1, c1, p1, j1);
 du (m2, c2, p2, j2);
 trys (m3, c3, p3, j3);
 keturi (m4, c4, p4, j4);
 penki (m5, c5, p5, j5);
 spausdinti (m1, c1, p1, j1, m2, c2, p2, j2, m3, c3, p3, j3, m4, c4, p4, j4, m5, c5, p5, j5);
   return 0;
}

Redagavo sebas1
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Supaprastinti tavo programą yra daug būdų. :)

 

Vienas iš variantų būtų maždaug toks:

 

Main funkcijoje suki ciklą nuo 1 iki 5 ir jame kvieti vieną metodą tarkim Spausdinti su vienu parametru (t.y. i-tuoju ciklo elementu). O spausdinti funkcijoje būtų tik viena eilutė, kuri išsiskaičiuoja reikiamus vienetus iš to i-tojo parametro ir įrašo į failą. Tik tuomet tą failo atsidarymą ir uždarymą reiktų perkelti į ciklo išorę ar pan.

 

Na spausdinti funkcijoje ta viena eilutė atrodytų maždaug taip:

fr << i << " " << fixed << setprecision (2) << (i*39.37) << " "<< fixed << setprecision (2) << (i*3.28)  << " "<< fixed << setprecision (2) << (i*1.09) << endl;

 

Tavo visą kodą galima sutalpinti į kokias 5 eilutes. :)

Redagavo Andrius.
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Sveikas, darau truputį kitaip nei tu sakei, bet su ciklu. Štai taip padariau, bet rezultatai.txt išveda tik skaičiaus 5 atsakymus.

 

#include <iostream>
#include <fstream>
#include <iomanip>

using namespace std;
const char Cfr[]="Rezultatai.txt";

void funkcija (int & m, double & c, double & p, double & j)
{
   c=(m*100)/2.54;
   p=c/12;
   j=p/3;
}

void spausdinti (int m, double c, double p, double j)
{
  ofstream fr(Cfr);
  fr << m << " " << c << " " << p << " " << j << endl;
  fr.close();
}

int main()
{
   int m;
   double c, p , j;

   for (m=1; m<=5; m++)
   {
    funkcija (m, c, p, j);
    spausdinti (m, c, p , j);
   }
   return 0;
}

 

Pabandžiau ir kaip tu sakei, bet taip pat išveda tik penketo atsakyma.

 

#include <iostream>
#include <fstream>
#include <iomanip>

using namespace std;
const char Cfr[]="Rezultatai.txt";

void spausdinti (int m)
{
  ofstream fr(Cfr);
  fr << m << " " << fixed << setprecision (2) << ((m*100)/2.54) << " "<< fixed << setprecision (2) << ((m*100)/2.54/12)  << " "<< fixed << setprecision (2) << ((m*100)/2.54/12/3) << endl;
  fr.close();
}

int main()
{
   int m;

   for (m=1; m<=5; m++)
   {
    spausdinti (m);
   }
   return 0;
}

Redagavo sebas1
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Susitvarkau. Jeigu kažkam įdomu, tai šiektiek panaršęs internete sužinojau, jog metė tik paskutinį atsakymą dėlto, nes kiekvieną kart cikle nukėlus į funkciją būdavo sukuriamas naujas failas. Dėlto reikėjo rašyti ofstream fr (Cfr, ios::app).

 

"ios::app", reikškia, kad pildys nurodytą failą nurodytais duomenimis.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...