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.

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