Pereiti prie turinio

Rekomenduojami pranešimai

Sveiki, galit padėti su užduotimi ?

 

Krepšininkai. Visi komandos krepšininkai varžybų metu dėvi marškinėlius su skirtingais numeriais, kurie

nebūtinai yra nuosekli skaičių seka. Varžybų komentatoriai visuomet gauna žaidžiančiųjų sąrašus, sudarytus

didėjimo tvarka pagal jų asmeninius numerius. Varžybų sezono pradžioje komanda pasipildė keliais naujokais,

kuriems iš sandėlio išdavė marškinėlius su dar laisvais numeriais. Parenkite programą, kuri papildytų komandos

narių sąrašą, skirtą komentatoriams.

Pradiniai duomenys yra dviejuose failuose, kurių pirmose eilutėse nurodyti žaidėjų skaičiai, o antrose – žaidėjų

numeriai. Pirmame faile yra žaidėjų sąrašas, skirtas komentatoriams, antrame faile – naujokų numeriai.

 

Pradiniai duomenys

8

1 2 5 6 9 10 12 15

 

Pradiniai duomenys2

3

8 11 4

 

 

Rezultatas

1 2 4 5 6 8 9 10 11 12 15

 

 


// Krepsininkai
#include <fstream>
#include <iomanip>
#include <iostream>
#include <cmath>
using namespace std;
const char CDfv[] = "Duomenys10_1.txt";
const char CD1fv[] = "Duomenys10_2.txt";
const char CRfv[] = "Rezultatai10_1.txt";
const int CMax    = 1001;
//-------------------------------------------------------------------
void Skaityti(const char fv[], int A[], int & n);
void Spausdinti(const char fv[], string z, int A[], int n);
int IeskotiKur(int A[], int n, int k);
void IterptiSkaiciu(int A[], int & n, int sk, int ind);
void Salinti(int A[], int & n, int ind);
void Tvarkyti(int A[], int B[], int & m, int & n, int k);
//-------------------------------------------------------------------
int main()
{
  int Rs[CMax]; int Rm[CMax];
  int rsn; int rmn;
  Skaityti(CDfv, Rs, rsn);
  Skaityti(CD1fv, Rm, rmn);
  ofstream fr;
  Tvarkyti(Rm, Rs, rsn, rmn, 10);
  Tvarkyti(Rs,Rm, rmn, rsn, 100);
  fr.open(CRfv); fr.close();
  Spausdinti(CRfv, "", Rs, rsn);
  Spausdinti(CRfv, "", Rm, rmn);
  fr.close();
  return 0;
}
//-------------------------------------------------------------------
// Skaito duomenis is failo fv i masyva A(n)
void Skaityti(const char fv[], int A[], int & n)
{
  ifstream fd(fv); 
  fd >> n; 
  for (int i = 0; i < n; i++)
     fd >> A[i];
  fd.close(); 
}
//-------------------------------------------------------------------
void Spausdinti(const char fv[], string z, int A[], int n)
{
  ofstream fr(fv);
  fr << z << endl;
  for (int i = 0; i < n; i++)
     fr << A[i] << " ";
  fr << endl;
}
//-------------------------------------------------------------------
int IeskotiKur(int A[], int n, int k)
{

  int i = 0;
  while ((i < n) && (A[i] < k)) i++;
  return i;
}
//-------------------------------------------------------------------
void IterptiSkaiciu(int A[], int & n, int sk, int ind)
{
  for (int i = n-1; i >= ind; i--)
     A[i+1] = A[i];
  A[ind] = sk;
  n++;
}
//-------------------------------------------------------------------
void Salinti(int A[], int & n, int ind)
{
  for (int i = ind; i <= n; i++)
     A[i] = A[i+1];
  n--;
}
//-------------------------------------------------------------------
void Tvarkyti(int A[], int B[], int & m, int & n, int k)
{
  int i = 0; int x;
  while (i < n) {
     if (A[i] / k != 0) {
        x = IeskotiKur(B, m, A[i]);
        IterptiSkaiciu(B, m, A[i], x);
        Salinti(A, n, i);
     }
     else i++;
  }
}


 

Galit padėt pataisyt, niekaip nesigauna?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Naudok normalius kintamųjų vardus, o ne tokius, kad po mėnesio pažiūrėjęs į savo programą sunkiai suprasi kas ką reiškia.

 

Anyways, tingiu laužyt galvą, tai va:


#include <algorithm>
#include <vector>
vector<int> getVectorFromInput(char *fname) 
{
 // Čia iš failo į vektorių nuskaitai. Naudok vector::push_back()
}

int compareInt(int a, int b) { return a < b; }
int main(void)
{
 vector<int> a = getVectorFromInput("tas_pirmas_susortintas_listas.txt");
 vector<int> b = getVectorFromInput("antras_listas_kurį_reikia_insertinti.txt");
 a += b;
 sort(a.begin(), a.end(), compareInt);
 for(int i = 0; i < a.size(); ++i) { outStream << a[i] << " "; }
 outStream << endl;
}

 

Galima vietoj vektorių žaisti su paprastais masyvais ir naudoti qsort() iš cstdlib ar pasirašyti savo sortinimo funkciją.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Manau paprasčiausia su set gali pasidaryti.

 

Su ciklu insertink į setą, paskui tiesiog įrašyk į failą su range based loop. Mini pavyzdys:

 

	
std::set <int> zaidejai;
zaidejai.insert(1);
zaidejai.insert(6);
zaidejai.insert(8);
zaidejai.insert(11);
zaidejai.insert(4);

for (auto x : zaidejai)
std::cout << x << std::endl;

Nepamiršk #include <set>

Redagavo Pattio
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Manau paprasčiausia su set gali pasidaryti.

 

Su ciklu insertink į setą, paskui tiesiog įrašyk į failą su range based loop. Mini pavyzdys:

 

	
std::set <int> zaidejai;
zaidejai.insert(1);
zaidejai.insert(6);
zaidejai.insert(8);
zaidejai.insert(11);
zaidejai.insert(4);

for (auto x : zaidejai)
std::cout << x << std::endl;

Nepamiršk #include <set>

vūūū, čia C++11 features? C++ darosi panašesnė į kalbą, su kuria netgi būtų galima kažką ne nišinio daryti.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

vūūū, čia C++11 features? C++ darosi panašesnė į kalbą, su kuria netgi būtų galima kažką ne nišinio daryti.

 

Na, taip :) Kaip sakoma: išgyvena ne stipriausi, o tie kurie sugeba geriausiai prisitaikyti. Nes jei programavimo kalba stovės toje pačioje vietoje, ateities ji neturi.

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