Pereiti prie turinio

C++ programos netikslumas


Rekomenduojami pranešimai

Sveiki, sprendžiant šitą uždavinį iškilo problema. Pirmoje parduotuvėje apsiskaičiuoja gerai, bet antroje ir trečioje suma gaunasi dvigubai mažesnė. Atsakymą spausdina:

1 9.62
2 4.45
3 4.45
18.52

 

Programa:

#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
const char CDfv [] = ("duom.txt");
const char CRfv [] = ("rez.txt");
int main ()
{
   int n,m,i,j;
   double kaina,sum,vsum=0;
   ifstream fd (CDfv);
   ofstream fr (CRfv);
   fd>>n;
   for (i=1;i<=n;i++)
   {
       fd>>m;
       sum=0;
       for (j=1;j<=m;j++)
       {
           fd>>kaina;
           sum+=kaina;
       }
       fr<<i<<" ";
       fr<<fixed<<setprecision(2)<<sum<<endl;
       vsum+=sum;
       fd.close();

   }
   fr<<fixed<<setprecision(2)<<vsum;
   fr.close();
   return 0;
}

Nuoroda į pranešimą
Dalintis kituose puslapiuose

...
fd>>n;
fd>>m;
for (i=1;i<=n;i++)
{
  sum=0;
  for (j=1;j<=m;j++)
  {
     fd>>kaina;
     sum+=kaina;
  }
...

 

Nuskaičius kintamąjį n, reikia iš karto nuskaityti ir kintamąjį m, o tu nuskaitai kintamąjį m kelis kartus pačiame cikle.

Redagavo bnlife
Nuoroda į pranešimą
Dalintis kituose puslapiuose

#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
const char CDfv [] = ("duom.txt");
const char CRfv [] = ("rez.txt");
int main ()
{
   int n,m,i,j;
   double kaina,sum,vsum=0;
   ifstream fd (CDfv);
   ofstream fr (CRfv);
   fd>>n;
   fd>>m;
   for (i=1;i<=n;i++)
   {
       sum=0;
       for (j=1;j<=m;j++)
       {
           fd>>kaina;
           sum+=kaina;
       }
       fr<<i<<" ";
       fr<<fixed<<setprecision(2)<<sum<<endl;
       vsum+=sum;

   }
   fd.close();
   fr<<fixed<<setprecision(2)<<vsum;
   fr.close();
   return 0;
}

 

Per anksti uždarai duom.txt failą, jį reikia uždaryti po abiejų ciklų. Į sveikatą :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nekuriant naujos temos, rašysiu į tą pačią, gal kas paskaitys. :) Kaip jau tubūt supratot, programavime esu ganėtinai žalias, todėl vėl iškilo problema sprendžiant šį uždavinį.. Bėda yra, kad kažkur reikia įterp for ciklą, kad rezultate spausdintų abi eilutes, nes man dabar atspausdina tik vieną.

 

Mano programa:

 

#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
const char CDfv [] = ("duom.txt");
const char CRfv [] = ("rez.txt");
//------------------------------------------
void ivesti (const char CDfv [],int &n, int &a, int &b, int &c);
int suma (int a,int b,int c);
int sumact (int a,int b,int c);
void rodyti (const char CRfv [],int g,int cg);

int main ()
{
   int i;
   int a,b,c,lg,cg,g,n;
   ivesti(CDfv,n,a,b,c);

   lg = suma(a,b,c);
   cg = sumact (a,b,c);

   rodyti(CRfv,lg,cg);

   return 0;
}
//------------------Įvedimas---------------------------------
void ivesti (const char CDfv [],int &n,int &a, int &b, int &c)
{
   ifstream fd(CDfv);
   fd>>n;
   fd>>a>>b>>c;
   fd.close();
}
//-------------Skaičiuoja litus----------------------------
int suma (int a,int b,int c)
{
   int sum,n,i,lg;
   sum=c*100-(a*100+b);
   lg=sum/100;

   return lg;
}
//-------------Skaičiuoja centus--------------------------
int sumact (int a,int b,int c)
{
   int sum,n,i,cg;
   sum=c*100-(a*100+b);
   cg=sum%100;

   return cg;
}
//------------Išvedimas-------------------------------------
void rodyti (const char CRfv [],int lg,int cg)
{
   ofstream fr (CRfv);
   fr<<lg<<" Lt "<<cg<<" ct "<<endl;
   fr.close();

}

 

P.S. Jeigu kas netingit plačiau papasakokit apie funkcijas void ir int. Kaip suprantu funkciją int naudojama, kai yra kas nors skaičiuojama ir apskaičiuotą sumą reikia grąžinti į main funkciją.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nekuriant naujos temos, rašysiu į tą pačią, gal kas paskaitys. :) Kaip jau tubūt supratot, programavime esu ganėtinai žalias, todėl vėl iškilo problema sprendžiant šį uždavinį.. Bėda yra, kad kažkur reikia įterp for ciklą, kad rezultate spausdintų abi eilutes, nes man dabar atspausdina tik vien

P.S. Jeigu kas netingit plačiau papasakokit apie funkcijas void ir int. Kaip suprantu funkciją int naudojama, kai yra kas nors skaičiuojama ir apskaičiuotą sumą reikia grąžinti į main funkciją.

 

http://www.cplusplus.com/doc/tutorial/functions/

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.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

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