Sveiki, taigi prireikė man pagalbos dėl c++ programavimo... Žodžiu niekaip neįkertu aš elemento įterpimo, šalinimo į ar iš masyvo ir masyvo elementų rikiavimo didėjimo ar mažėjimo tvarka. Dar kai vieną reikia įterpti tai dar kaip nors padarau, bet jei reikia kelis, kokią nors visą seką įterpti tai jau ne... Pavyzdžiui 11 užduotis.
Virsenas prieš 9 metus
Papildomas bibliotekas gali naudoti? Labai paprasta būtų su sort funkcija iš algorithm bibliotekos.
Tai kam tada iš vis mokintis programuoti... ?
Virsenas prieš 9 metus
O kam išradinėti dviratį?
Nes tas, kuris išrado dviratį, yra protingesnis už tą, kuris jo neišrado. Ir taip aišku, kad negalima naudotis papildomomis bibliotekomis.
Jeigų pagausi kaip čia viskas vyksta, pasidarysi viską. Ir aišku kodas bus kitoks, jeigų programoje turi būti, kad vartotojas turi įrašyti mokinių skaičių. Tai tada vietoj 15 tarp tų ciklų reikės panaudoti kintamajį, kuris turės nuskaitytą įrašytą vartotojo skaičių.
new mokiniumasyvas1[15],mokiniumasyvas2[15],dabartinisskaicius,irasymovieta;
// Dabartinius mokinius ir naujokus nuskaitai į mokiniumasyvas1.
for (new i = 0; i != 15; ++i)
{
dabartinisskaicius=mokiniumasyvas1[i];
for (new j = 0; j != 15; ++j)
{
if(dabartinisskaicius<mokiniumasyvas1[j])
{
dabartinisskaicius=mokiniumasyvas1[j];
}
mokiniumasyvas2[irasymovieta]=dabartinisskaicius;
}
irasymovieta++;
}
// Šito kodo pabaigoje turėtum turėti visų mokinių sąrašą pagal mažėjimo tvarką.
Pasitaisiau truputį, nes kintamajį "irasymovieta" ne ten buvau padėjęs.
Yiin prieš 9 metus
Negarantuoju kad veiks, netikrinau, bet įdėja manau aiški ir jeigu kas pasitaisysi :D Jeigu kas neaišku kodėl parašyta taip o ne kitaip, klausk.
bool ĮterptiElementą(int * array, unsigned int sizeofarray, unsigned int idx, int value) {
if(idx >= sizeofarray) return false;
for(int i = sizeofarray - 1; i > idx; --i) {
array[i] = array[i - 1];
}
array[idx] = value;
return true;
}
void ĮtarptiSeką(int * array, unsigned int sizeofarray, unsigned int idx, int * list, unsigned int sizeoflist) {
const unsigned int size = sizeofarray + sizeoflist;
int * newarray = new int[size];
for(int i = 0, j = 0; i < size; ++i) {
if(i < idx) {
newarray[i] = array[i];
}
else if(i >= idx && j < sizeoflist) {
newarray[i] = list[j++];
}
else {
newarray[i] = array[i + sizeoflist];
}
}
}