Pereiti prie turinio

c++ uždavinukas su ciklais for


Rekomenduojami pranešimai

Sveiki, reikia pagalbos su gan paprastu uždaviniu.

 

Užduotis:

 

Pirkėjas aplankė n parduotuvių ir kiekvienoje jų įsigijo m prekių. Parenkite programą, kuri apskaičiuotų, už kokią pinigų sumą pirkėjas įsigijo prekių kiekvienoje parduotuvėje ir kiek pinigų išleido iš viso.

Pirmoje pradinių duomenų failo eilutėje įrašytas parduotuvių skaičius n ir prekių skaičius m. Tolesnėse eilutėse įrašyta po m realiųjų skaičių – kiekvienos prekės kaina. Vienos parduotuvės prekių kainos surašytos vienoje eilutėje ir viena nuo kitos atskirtos tarpais.

Rezultatų failo pirmose n eilučių turi būti du tarpais atskirti skaičiai: parduotuvės numeris ir pinigų suma, pateikta dviejų ženklų po kablelio tikslumu. Paskutinėje rezultatų failo eilutėje turi būti įrašyta visa pirkėjo išleista pinigų suma dviejų ženklų po kablelio tikslumu.

 

Duomenų failas:

3 5

1.27 2.92 3.45 1.09 0.89

1.08 2.25 3.75 1.12 0.69

0.98 2.48 3.62 1.10 0.72

 

 

Rezultatai turi būti tokie:

 

1 9.62

2 8.89

3 8.90

27.41

 

Mano kodas:

 

#include <fcntl.h>

#include <io.h>

#include <cstdlib>

#include <iostream>

#include <iomanip>

#include <fstream>

#include <cmath>

#include <string>

using namespace std;

int main (){

int n; // aplankytu parduotuviu skaicius

int m; // isigytu prekiu skaicius

double b; // prekes kaina

double suma; // is viso isleista pinigu 1 parduotuveje

double suma2; // is viso isleista pinigu visose parduotuvese

 

ifstream fd ("Duomenys.txt");

fd>>n;

fd>>m;

ofstream fr ("Rezultatai.txt");

for (int i=0;i<n;i++){

suma=0;

for (int j=1;j<=m;j++){

fd>>b;

suma=suma+b;

suma2=0;}

suma2=suma2+suma;

for (int k=1;k<n;k++)

fr<<k<<" "<<suma<<setw(6)<<fixed<<setprecision(2)<<endl;}

fr<<suma2<<setw(6)<<fixed<<setprecision(2)<<endl;

 

 

 

return 0;

}

 

 

Su mano kodu rezultatus išmeta tokius:

 

1 9.62

2 9.62

1 8.89

2 8.89

1 8.90

2 8.90

8.90

 

Problemos:

1) paskutinė eilutė mano rezultatuose turėtų būti 27.41 vietoj mano 8.90

2) visos eilutės, išskyrus 1-ąją, rezultatų faile atitrauktos nuo krašto

3) 9.62, 8.89 ir 8.90 rezultatų faile kartojasi 2 kartus, taip būti neturėtų.

 

 

Manau, kad aš kažką blogai padariau su ciklo { ir } ženklais. Na, nežinau, tikiuosi pagalbos. Ačiū!

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Sekančią dieną pasėdėjęs dar 20 minučių prie tikrai paprasto uždavinio, gavau atsakymus, bet viena problema išliko.

 

Kodas: http://pastebin.com/eFK5vfz0

 

Rezultatų failas (rezultatai geri):

http://imgur.com/nliwhtg

 

Kaip pašalinti tarpus nuo kairiojo krašto? Noriu, kad viskas būtų idealiai pagal uždavinį. Ačiū!

Redagavo rytciaq
Nuoroda į pranešimą
Dalintis kituose puslapiuose

setw istrink

Mm, tarpus pašalina, ačiū, bet tada 3-oje parduotuvėje išleistus pinigus rodo kaip 8.9, o ne 8.90.

 

EDIT: pagalbos nebereikia. Setw ištrinti nereikėjo, reikėjo tiesiog setw rašyti prieš <<suma, o ne po. fr<<i<<" "<<setw(6)<<fixed<<setprecision (2)<<suma<<endl;} :)

Redagavo rytciaq
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ą...