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.

  • 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ą...