Pereiti prie turinio

C++ Šalinimas iš masyvo


Rekomenduojami pranešimai

SVeiki, taigi kaip šalinti iš masyvo vieną skaičių suprantu, bet kada yra jų tarkim 3 - 5 ir reikia naudoti kitą masyvą nelabai suprantu. Norėčiau, kad paaiškintumėt kaip šalint skaičius iš masyvo turint kitam masyve skaičių indeksus kuriuos reikia pašalinti iš masyvo A[];

Užduotis: reikia iš masyvo A pašalinti nelyginius skaičius ir juos surikiuoti. surikiuoti moku, bet pašalinti iš masyvo niekaip.. bandžiau visaip. kodas ką mėginau paskutinį kartą daryt :

int main()
{
   int n;
   ifstream fd(Cdf);
   fd>>n;
   int c= 0;
   int A[n]; // priskiriu N reikšmę masyvui.
   int B[c]; // indeksam gauti.
   for(int i = 0; i < n; i++)
   {
       fd >> A[i]; // nusiskaitau iš failo duomenys.
       if(A[i] % 2 != 0)
       {
           c++; // B masyvo inddeksas
          B[c] = i; // priskiriu nelyginių sk indeksus masyvui B;
       }
   }
   for(int i = 0;  i < c; i++)
   {
       for(int j = B[0]; j<n-1; j++)
       {
           A[j] = A[j+1]; // keičiu vietomis riekšmes.
       }
       n--; // atimu ilgi.
   }
   for(int i = 0; i < n; i++)
   {
       cout<<A[i];
   }
   fd.close();
   return 0;
}

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Na paprasčiausias sprendimas būtų neįterpinėti nelyginių skaičių į masyvą... Gali saugoti kokiame kintamajame x paskutinio elemento indeksą. Tada norėdamas "ištrinti" i-tąjį elementą apkeistum A[x] ir A reikšmes ir x reikšmę sumažintum vienetu. Aišku taip sudarkysi tvarką, bet iš pradžių ji nėra svarbi. O jei norėtum ją išsaugoti, tai tada reikėtų perstumdinėti daugybe masyvo reikšmių, kas yra neefektyvų.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

šiaip netaip išmąsčiau kaip padaryt :) Kodas, gal kam prireiks :)

 

int main()
{
   int n;
   ifstream fd(Cdf);
   fd>>n; 
   int A[n];
   for(int i = 0; i < n; i++)
   {
       fd >> A[i]; 
   }
   for(int i = 0; i < n; i ++) 
   {
       if(A[i] % 2 !=0)
       {
           for(int j = i; j < n; j++)
           {
               A[j] = A[j+1];
           }
           n--;
       }
   }
   for(int i = 0; i < n; i++)
   {
       cout<<A[i]<<" ";
   }
   fd.close();
   return 0;
}

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