Pereiti prie turinio

Rekomenduojami pranešimai

Sveiki, taigi susidūriau su problema. Turiu užduotį:

http://www.part.lt/img/3383e3bd877d7d31ef0f71c47ceeb1c4640.png.

 

Problema tokia, kad nelabai susigaudau, kaip ten su tais indeksais yra masyve ir kaip pridėt skaičių ar pradžioj ar pabaigoj. Jei kas galit paaiškinkit kaip ten su tais indeksų ieškojimais ir skaičiaus pridėjimais.

Kodo mėginimas:

 

#include <iostream>
#include <stdlib.h>
#include <fstream>
#include <cmath>
#include <iomanip>
using namespace std;
const char Cdf[] = "mokiniai.txt";
const char Cfd[] = "rez.txt";
const char cdfs[] = "ugiai.txt";
const int Cmax = 100;

void skaityti(int A[],int B[], int &n, int &m)
{
   ifstream fd(Cdf);
   ifstream fd1(cdfs);
   fd>>n;
   for(int i = 0; i < n ; i++)
   {
       fd>>A[i];
   }
   fd1>>m;
   for(int i = 0; i < m; i++)
   {
       fd1>>B[i];
   }

   fd.close();
   fd1.close();
}

void Spausdinti(int A[],int B[], int n,int m)
{
   ofstream fs(Cfd);
   fs<<"Sudetos monetos :"<<endl;
   for(int i = 0; i < n; i++)
   {
       fs<<A[i]<<" ";
   }
   fs<<endl;
   fs<<"NEsudetos monetos :"<<endl;
   for(int i = 0 ; i < m; i++)
   {
       fs<<B[i]<<" ";
   }
   fs<<endl;
   fs<<"------------------"<<endl;
   fs.close();
}

int Indeksas(int A[], int B[],int n, int m)
{
   for(int i = 0; i < n+ m;i++)
   {
       if(A[i] == B[i])
       {
           return i;
       }
   }
   return -1;
}

int main()
{
   int A[Cmax];
   int B[Cmax];
   int n,m;
   int ind;
   ofstream fs(Cfd, ios::app);
   skaityti(A,B,n,m);
   Spausdinti(A,B,n,m);
   ind = Indeksas(A,B,n,m);

   fs.close();
   return 0;
}

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Sveiki, taigi susidūriau su problema. Turiu užduotį:

http://www.part.lt/img/3383e3bd877d7d31ef0f71c47ceeb1c4640.png.

 

Problema tokia, kad nelabai susigaudau, kaip ten su tais indeksais yra masyve ir kaip pridėt skaičių ar pradžioj ar pabaigoj. Jei kas galit paaiškinkit kaip ten su tais indeksų ieškojimais ir skaičiaus pridėjimais.

Kodo mėginimas:

 

#include <iostream>
#include <stdlib.h>
#include <fstream>
#include <cmath>
#include <iomanip>
using namespace std;
const char Cdf[] = "mokiniai.txt";
const char Cfd[] = "rez.txt";
const char cdfs[] = "ugiai.txt";
const int Cmax = 100;

void skaityti(int A[],int B[], int &n, int &m)
{
   ifstream fd(Cdf);
   ifstream fd1(cdfs);
   fd>>n;
   for(int i = 0; i < n ; i++)
   {
       fd>>A[i];
   }
   fd1>>m;
   for(int i = 0; i < m; i++)
   {
       fd1>>B[i];
   }

   fd.close();
   fd1.close();
}

void Spausdinti(int A[],int B[], int n,int m)
{
   ofstream fs(Cfd);
   fs<<"Sudetos monetos :"<<endl;
   for(int i = 0; i < n; i++)
   {
       fs<<A[i]<<" ";
   }
   fs<<endl;
   fs<<"NEsudetos monetos :"<<endl;
   for(int i = 0 ; i < m; i++)
   {
       fs<<B[i]<<" ";
   }
   fs<<endl;
   fs<<"------------------"<<endl;
   fs.close();
}

int Indeksas(int A[], int B[],int n, int m)
{
   for(int i = 0; i < n+ m;i++)
   {
       if(A[i] == B[i])
       {
           return i;
       }
   }
   return -1;
}

int main()
{
   int A[Cmax];
   int B[Cmax];
   int n,m;
   int ind;
   ofstream fs(Cfd, ios::app);
   skaityti(A,B,n,m);
   Spausdinti(A,B,n,m);
   ind = Indeksas(A,B,n,m);

   fs.close();
   return 0;
}

 

Sveikas, kodėl nenori naudoti vektoriaus?

 

1. Nereiks kurtis kelių masyvų.

2. Nereiks rašyti papildomos rušiavimo funkcijos.

3. Nereiks nurodyti dydžio.

4. Viską atliksi greičiau.

 

#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <iterator>

void putInfo(std::ifstream &fd, std::vector<int> &monetos)
{
   int kiek = 0;
   fd >> kiek;
   for(int i = 0; i < kiek; ++i)
   {
       int temp = 0;
       fd >> temp;
       monetos.push_back(temp);
   }
}

int main()
{
   std::vector<int> monetos;
   std::ifstream fd("duomenys.txt");
   std::ifstream fd2("duomenys2.txt");

   putInfo(fd, monetos);
   putInfo(fd2, monetos);

   std::sort(monetos.begin(), monetos.end());

   typedef std::vector<int>::iterator iterator;
   iterator it = monetos.begin();
   iterator it2 = monetos.end();

   while(it != it2)
   {
      std::cout << *it << " ";
      ++it;
   }
}

 

Vienintelis dalykas kuris gali atrodyti painus yra iterator'iai, bet čia tik dėl to jog "codeblocks" nepalaiko c++ 11 auto?

 

Nes galėtum tiesiog padaryti:

 

#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

void putInfo(std::ifstream &fd, std::vector<int> &monetos)
{
   int kiek = 0;
   fd >> kiek;
   for(int i = 0; i < kiek; ++i)
   {
       int temp = 0;
       fd >> temp;
       monetos.push_back(temp);
   }
}

int main()
{
   std::vector<int> monetos;
   std::ifstream fd("duomenys.txt");
   std::ifstream fd2("duomenys2.txt");

   putInfo(fd, monetos);
   putInfo(fd2, monetos);

   for(auto &x : monetos)
       std::cout << x << " ";
}

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