Peršokti į turinį

Masyvo sukeitimas


AweX

Recommended Posts

Sveiki, taigi sukūriau programa kuri sukeičia eilutės seka atvirkščiau, tarkim yra (1,2,3,4,) gauname (4,3,2,1) .Norėčiau paklausti, kaip reikėtu padaryti, kad masyvas automatiškai pats sukeistu skaičius, kad nereikėtu įvedinėti rankiniu būdų? ar prie šios programos reikia kažką tobulinti ar visai perkurti? Programa nėra visiškai tvarkingai, čia tokį kaip šablona pasidalinu.

Jei kas turit kokių įdėjų, galbūt pasidalinsit? :)

 

using namespace std;
const int Apgre = 11;
int M[Apgre];
int n=5;

void pradzia (int M[], int &n, int &i, int &j);
//void pabaiga (int M[]);

int main()
{
    int i, j;
    pradzia (M, n, i, j);

    return 0;
}
//-------
void pradzia (int M[], int &n, int &i, int &j){
    int temp, k;

    for (int i = 0; i < n; i++)
    {
        cout << i + 1 << " Masyvo elementas"; cin >> M[i];
    }
    if (n % 2 == 0)
    k = n / 2;
    else
        k = n / 2 + 1;
    cout<< "eee" << k << endl;
   for (i = 0; i < k; i++)
   {
    cout << "Áveskite kokius elementus norite sukeisti " << endl;
    cin >> i; cin >> j;
    temp = M[i];
    M[i] = M[j];
    M[j] = temp;

   }
    cout << endl;

    for ( int i = 0; i < n; i++)
    {
     cout << i + 1 << " Masyvo elementas" << M[i] << endl;
    }

}

 

Nuoroda į komentarą
Dalintis per kitą puslapį

20 minutes prieš, Developer parašė:

Tai tiesiog sortingo algortima pritaikyti, yra daug jų variantų (Quick sort, Bubble sort, Insertion sort, ...)

o kaip jis naudojamas, gal kokį tutorial žinai? 

Nuoroda į komentarą
Dalintis per kitą puslapį

Jei gerai įsiskaičiau, tai tau reikia ne surikiuoti masyvą, bet sukeisti eilutės seką atvirkščiai. Tada, paprasčiausias būdas būtų:

  const int SIZE = 10;
  int arr [SIZE] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  std::reverse(std::begin(arr), std::end(arr));

Sudėtingesnis sprendimas (nenaudojant built-in funkcijos) būtų:

int temp, i;
for (i = 0; i < count/2; ++i) {
    temp = arr[count-i-1];
    arr[count-i-1] = arr[i];
    arr[i] = temp;
}
Nuoroda į komentarą
Dalintis per kitą puslapį

(redaguota)
On 9/29/2017 at 21:50, Developer parašė:

Jei gerai įsiskaičiau, tai tau reikia ne surikiuoti masyvą, bet sukeisti eilutės seką atvirkščiai. Tada, paprasčiausias būdas būtų:

  const int SIZE = 10;
  int arr [SIZE] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  std::reverse(std::begin(arr), std::end(arr));

Sudėtingesnis sprendimas (nenaudojant built-in funkcijos) būtų:

int temp, i;
for (i = 0; i < count/2; ++i) {
    temp = arr[count-i-1];
    arr[count-i-1] = arr[i];
    arr[i] = temp;
}

Dėkui, išbandysiu abu variantus, o ten su built funkcija, tas eilutes ten pačioj pradžioj taip padaryti ir po to tik cout << arr << endl; ar kaip?

Su count viskas, pavyko, dėkui, žinosiu ateičiai.

Redaguota , nario AweX
Nuoroda į komentarą
Dalintis per kitą puslapį

Svečias
Ši tema yra užrakinta.
  • Å iame puslapyje narÅ¡o:   0 nariai

    • Nėra registruotų narių peržiÅ«rinčių šį forumą.

×
×
  • Sukurti naują...