Pereiti prie turinio

c++ uzduotis


Rekomenduojami pranešimai

sveiki, sukuriau sia tema mokymosi tikslais, c++ kalba.

 

nezinau kaip sudeti visus gautus skaicius kartojantis for ciklui i viena.

 

stai kodas:

 

#include <iostream>
#include <fstream>
using namespace std;


int main()
{
   int menesiai;
   double alga;
   double visaalga = 0;

   ifstream duomenys("duomenys.txt");
   duomenys >> menesiai;

       for( int x=0; x<menesiai; x++){
           duomenys >> alga;

      cout << alga << endl;
       }
       cout << visaalga << endl;
   }

 

reikia visas nuskaiciuotas algas is failo sudeti i viena suma. kaip?

Redagavo arvyda5
Nuoroda į pranešimą
Dalintis kituose puslapiuose

taip pat dar viena neiseina uzduotis.

 

#include <iostream>

using namespace std;

int main()
{   
   int pirmaspatiekalolaikas= 17;
   int kitaspatiekalasilgiauuzpirma = 3;
   int visaslaikas = 65;

   int kiekpatiekalu = 0;

   while(pirmaspatiekalolaikas<visaslaikas){

       cout << pirmaspatiekalolaikas << endl;
       }
   return 0;
}

 

 

nezinau ar naudoti while ar for cikla, reikia, kad rodytu pirmoje eiluteje pirmo patiekalo laika, antroje primo patiekalo laika sudeta su antru patiekalo laiku (kuris yra 3 didesnis) ir t.t.

Redagavo arvyda5
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Jei teisingai supratau ko nori:

#include <iostream>

using namespace std;

int main()
{   
   int pirmaspatiekalolaikas= 17;
   int kitaspatiekalasilgiauuzpirma = 3;
   int visaslaikas = 65;

   int kiekpatiekalu = 0;

   while(pirmaspatiekalolaikas<visaslaikas){

       cout << pirmaspatiekalolaikas << endl;
       pirmaspatiekalolaikas+=kitaspatiekalasilgiauuzpirm;
       }
   return 0;
}

Redagavo Torafter
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Jei teisingai supratau ko nori:

#include <iostream>

using namespace std;

int main()
{   
   int pirmaspatiekalolaikas= 17;
   int kitaspatiekalasilgiauuzpirma = 3;
   int visaslaikas = 65;

   int kiekpatiekalu = 0;

   while(pirmaspatiekalolaikas<visaslaikas){

       cout << pirmaspatiekalolaikas << endl;
       pirmaspatiekalolaikas+=kitaspatiekalasilgiauuzpirm;
       }
   return 0;
}

 

iki sitiek ir padariau, bet ziurek dabar gaunu pirmu atveju 20, antru atveju 23, treciu 26, o man reikia kad prasidetu ties 17 (pirmas), ir gauta antra(20) atveji sudetu su pirmu, tai turetu buti taip.

1. 17;

2. 37;

3. 60;

4. 86 (sis jau netinka)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

   int pirmasPatiekaloLaikas= 17;
   int kitasPatiekalasIlgiauUzPirma = 0;
   int antrasPatiekaloLaikas = pirmasPatiekaloLaikas;

   int visaslaikas = 65;

   int kiekpatiekalu = 0;

   while(pirmasPatiekaloLaikas<visaslaikas){


       cout << pirmasPatiekaloLaikas << endl;

       pirmasPatiekaloLaikas += antrasPatiekaloLaikas ;
       kitasPatiekalasIlgiauUzPirma += 3;
       pirmasPatiekaloLaikas += kitasPatiekalasIlgiauUzPirma;
       kiekpatiekalu++;

   }

   cout << kiekpatiekalu;

 

Šiaip teko kelis kartus perskaityti kol supratau ko tau reikia. (Kitą kartą tiesiog parašyk užduoties sąlyga).

Redagavo Pattio
Nuoroda į pranešimą
Dalintis kituose puslapiuose

gal kas nori isspresti uzdavini ar mokymosi tikslais ar pagalbos, stai informatikos olimpiadine uzduotis, neiseina padaryti.

uzduotis

    for (int i = 1; i < 500; i++)
           for (int j = 1; j < 500; j++)
             for (int k = 1; k < 500; k++) {
               sum11 = 0;
               sum22 = 0;
               sum33 = 0;
               sum11 += a1*i; // a1, a2, a3 - kiekvienos butybes ranku skaicius, sum11 - bendra ju suma
               sum11 += a2*j;
               sum11 += a3*k;
               sum22 += b1*i; // b1, b2, b2 - kiekvienos koju skaicius, sum22 - bendra ju suma
               sum22 += b2*j;
               sum22 += b3*k;
               sum33 += c1*i; // c1, c2, c3 - kiekvienos akiu skaicius, sum33 - bendra ju suma
               sum33 += c2*j;
               sum33 += c3*k;
               if (sum11 == sum1 && sum22 == sum2 && sum33 == sum3) // sum1, sum2, sum3 - duomenys, kiek yra isviso ranku/koju/akiu
                   cout << i << " " << j << " " << k;
           }

Nuoroda į pranešimą
Dalintis kituose puslapiuose

double vidGyvSkDesinejeGatPus(int D[], int n, int x){
  int sum = 0 ;

   int namd = 0;
   for( int y = 1; y <= x; y++){
       if(y%2 == 0){

           sum = sum + D[y];
           namd++;
       }
   }
   cout << fixed << setprecision(2) << sum/namd;    ////// (sum = 14; namd = 5)

   return sum/namd;

 

 

kodel rodo suskaiciuoja 2.00 nors turetu buti 2.80?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

double vidGyvSkDesinejeGatPus(int D[], int n, int x){
  int sum = 0 ;

   int namd = 0;
   for( int y = 1; y <= x; y++){
       if(y%2 == 0){

           sum = sum + D[y];
           namd++;
       }
   }
   cout << fixed << setprecision(2) << sum/namd;    ////// (sum = 14; namd = 5)

   return sum/namd;

 

 

kodel rodo suskaiciuoja 2.00 nors turetu buti 2.80?

 

nes sum yra int tipo kintamasis, todėl susiapvalina.

double sum = 0 ;

turėtų veikti.

 

Beje,

for( int y = 1; y <= x; y++)

turėtų būti

for( int y = 0; y < x; y++)

.

Redagavo rimcx
Nuoroda į pranešimą
Dalintis kituose puslapiuose

nes sum yra int tipo kintamasis, todėl susiapvalina.

double sum = 0 ;

turėtų veikti.

 

Beje,

for( int y = 1; y <= x; y++)

turėtų būti

for( int y = 0; y < x; y++)

.

 

ar labai didelis skirtumas yra, nes nuo 0 iki x blogai suskaiciuoja.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

ar labai didelis skirtumas yra, nes nuo 0 iki x blogai suskaiciuoja.

Kadangi c++ masyvai eina nuo nulinio elemento (A[0], A[1]...) tai iteruodamas nuo y = 1, tu praleidi pirmaji masyvo elementa. Klaida galbut todel, kad surasydamas duomenis irgi ejai nuo 1, o ne nuo 0?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

kai kurie B[x] skaiciai yra su minusu(istraukti is failo vieni su + kiti su -), po funkcijos "vidurkisVisu" kai minusinius skaicius paverciu pliusiniais, toliau visose tolesnese funkcijos nuskaiciuoja visalaik su pliusu(man to nereikia), man reikia kad jas nuskaitytu per nauja ir vienos butu su + kitos su - kaip pradzioje. kaip tai padaryt? ness dabar kiekvienos funkcijos pradzioje duomenis nuskaitau per nauja.

 

uzduotis

 

 

#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;

const char duomenys[] = "duomenys.txt";
const char rezultatai[] = "rezultatai.txt";
const int Amax = 30;
void skaityti(double B[], double & z);
void spausdinti(double B[], double z);
double vyruVid(double B[], double z);
double vidurkisVisu(double B[], double z);
double merginuVid(double B[], double z);
void merginuKomanda(double B[], double z);
void vyruKomanda(double B[], double z);


int main()
{
   double ug[Amax]; double kk;
   double vVid;
   double vyrv;
   double merv;

   skaityti(ug, kk);
   spausdinti(ug, kk);
   ofstream rez;
   rez.open(duomenys, ios::app);
   vVid = vidurkisVisu(ug, kk);
        cout << fixed <<  setprecision(1) << vVid << endl;
   merv = merginuVid(ug, kk);
       cout << fixed << setprecision(2) << merv <<endl;
   vyrv = vyruVid(ug, kk);
       cout << fixed << setprecision(2) << vyrv <<endl;
   merginuKomanda(ug, kk);
   cout <<merginuKomanda << endl;

  vyruKomanda(ug, kk);
   cout <<vyruKomanda <<endl;



rez.close();
}

void skaityti(double B[],double & z){
   ifstream duom(duomenys);
   duom >> z;
   for(int x =0; x < z; x++)
       duom >> B[x];

   duom.close();
}

void spausdinti(double B[], double  z){
   ofstream rez(rezultatai);
   rez.close();

}



double vidurkisVisu(double B[], double z){
double sum = 0;
   for(int x = 0; x < z; x++){
       if(B[x] < 0){

           B[x]  =- B[x];
           sum = sum  +B[x];
}
       else if(B[x] > 0){
           sum = sum + B[x];
       }

}
return sum / z;



}

double vyruVid(double B[], double z){
double sum = 0;
double a  = 0;
   ifstream duom(duomenys);
   duom >> z;
   for(int x = 0; x < z; x++){
       duom >> B[x];
       if(B[x] < 0){

           B[x]  =- B[x];
           sum = sum  +B[x];
           a++;

}



}
return sum / a;

}

double merginuVid(double B[], double z){
double sum = 0;
double a  = 0;
   ifstream duom(duomenys);
   duom >> z;
   for(int x = 0; x < z; x++){
       duom >> B[x];
       if(B[x] > 0){


           sum = sum  +B[x];
           a++;

}



}
return sum / a;

}

void merginuKomanda(double B[], double z){
   int zaid = 7;
   int a = 0;
   int ug = 175;

   ifstream duom(duomenys);
   duom >> z;
   for(int x = 0; x < z; x++){
       duom >> B[x];
       if(B[x] < 0){
           B[x] = -B[x];
       if(B[x] >= ug )
       a++;

   }
   }
   if(a >= zaid ){
       cout << "merginu komanda sudaryti galima" << endl;
   }
   else {
       cout << "merginu komandos sudaryti negalima" <<  endl;
   }

}

void vyruKomanda(double B[], double z){
   int zaid = 7;
   int a = 0;
   int ug = 175;

   ifstream duom(duomenys);
   duom >> z;
   for(int x = 0; x < z; x++){
       duom >> B[x];
       if(B[x] > 0){

       if(B[x] >= ug )
       a++;

   }
   }
   if(a >= zaid ){
       cout << "vyru komanda sudaryti galima" << endl;
   }
   else {
       cout << "vyru komandos sudaryti negalima" <<   endl;
   }

}

Redagavo arvyda5
Nuoroda į pranešimą
Dalintis kituose puslapiuose

nes sum yra int tipo kintamasis, todėl susiapvalina.

double sum = 0 ;

turėtų veikti.

 

Beje,

for( int y = 1; y <= x; y++)

turėtų būti

for( int y = 0; y < x; y++)

.

 

dekui, dabar aisku

Redagavo arvyda5
Nuoroda į pranešimą
Dalintis kituose puslapiuose

 


double vidurkisVisu(double B[], double z){
double sum = 0;
   for(int x = 0; x < z; x++){
       if(B[x] < 0){

     //      B[x]  =- B[x]; // Nekeisk skaiciaus, tiesiog pasiziurek, jei neigiamas, tai pridek ji padauginta is -1 (gaunasi teigiamas)
           sum = sum  + (B[x] * -1);
}
       else if(B[x] > 0){
           sum = sum + B[x];
       }

}
return sum / z;



}


Redagavo hafnis1324
Nuoroda į pranešimą
Dalintis kituose puslapiuose

uzduotis

 

niekaip nedaeina kaip padaryt. stai tiek kodo parasiau.

 

#include <iostream>
#include <fstream>

using namespace std;

const char duomenys[] = "duomenys.txt";
const char rezultatai[] = "rezultatai.txt";
const int Cmax = 50;
const int Amax = 50;

void skaityti(int A[], int & e, int & s);
void spausdinti(int A[], int e, int s);
int islyginta(int A[], int e, int s);

int main()
{
   int K[Cmax]; int e; int s;
   int isl;
   skaityti(K, e, s);
   spausdinti(K, e ,s);
   ofstream rez;
   rez.open(rezultatai, ios::app);
   isl = islyginta(K, e, s);
   cout << isl;



   rez.close();
}

void skaityti(int A[], int & e, int & s){
   ifstream duom(duomenys);
   duom >> e >> s;
   for(int x = 0; x < e; x++){
       for(int y = 0; y < s; y++){
           duom >> A[y];

       }
   }
   duom.close();
}

void spausdinti(int A[], int e, int s){
   ofstream rez(rezultatai);
   rez.close();
}

int islyginta(int A[], int e, int s){
   int isl = 0;
   for(int x = 0; x < e; x++){

           cout << isl << endl;


   }

}

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