Pereiti prie turinio

C++ programavimo uzdaviniai


Rekomenduojami pranešimai

Jei kam nesunku gal galetumet parasyti koda? Niekaip man neisiena. Ant popieriaus sprendziau savuoju budu (paprasciausiai tikrinau) ar sutampa ir isbraukiau is masyvo tuos narius, kurie sutampa, o sio budo visai nesuprantu (net rikiavimo). "Burbulo" (nors hafnis sake kad ten ne burbulas) rikiavimo metodas man buvo daug suprantamesnis (nors ir tai kazkas ne taip) bet ten bent jau supratau kas vyksta, o cia nezinau ka su kuo tikrinti. Pats galvojau sitaip, bet del A[A]==i neesu tikras, nes pvz A gali buti 8, o n=8. Masyvai numeruojami nuo 0, tai taip iseina, kad jau perzengiamos ribos...

void Tikrinimas(int A[], int B[], int n, int m){
   for(int i=0; i<n; i++){
       if(A[A[i]]==i){
           A[i]++;
       }
   }
   for(int j=0; j<m; j++){
       if(B[b[j]]==i){
           B[j]++;
       }
   }
}

Redagavo mendinskis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Pats galvojau sitaip, bet del A[A]==i neesu tikras, nes pvz A gali buti 8, o n=8. Masyvai numeruojami nuo 0, tai taip iseina, kad jau perzengiamos ribos...

Tai ir neturi taip būt. Kokį veržlės/varžto dydį gauni iš failo, tokiu indeksu pažymėtą elementą masyve ir didini (8 dydis – A[8]++).

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tai ir neturi taip būt. Kokį veržlės/varžto dydį gauni iš failo, tokiu indeksu pažymėtą elementą masyve ir didini (8 dydis – A[8]++).

O kaip tai turetu buti apsirasoma? Juk negali paprasciausiai buti 8 dydis – A[8]++?

Redagavo mendinskis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kaip tu įsivaizduoji masyvą? Įprastai masyvas suprantamas kaip tam tikri objektai sudėti į eilę. Ta eilė ir būtų masyvas. Penktas daiktas eilėje būtų masyvo penktas masyvo elementas.

 

Šiuo atveju mąstom šiek tiek kitaip. Vietoj objektų į masyvą dedam grupeles. Grupelę apibūdinam skaičiumi, kuris reiškia objektų skaičių toje grupelėje.

 

Tarkim, objektus grupuojame pagal jų dydį. Tada kai varžto dydis 8, jį dedame į 8 grupelę.

 

2 4 2 7 2

 

Perskaitę tokią eilutę gausime 3 vnt. anroje grupelėje, po vieną vnt. ketvirtoje ir septintoje, t. y.

A[2] = 2;
A[4] = 1;
A[7] = 1;

 

Visos kitos grupelės yra tuščios (tuščia = 0), todėl:

A[] = {0, 0, 2, 0, 1, 0, 0, 1, 0, 0, ...}

 

Taigi kaip pridedi aštunto dydžio varžtą į grupelę? A[8]++

 

Kiek pastebėjau, mąstai per daug konkrečiai. O programavimas yra sulipdytas ant abstraktumo, tai vienas iš pagrindinių įvairių ideologijų principų. Turėtum mažiau galvoti apie konkrečius skaičius ir daugiau apie kintamuosius. Kitaip po to sudetingesnės užduotys taps nesuvokiamos. Čia tos kur dabar sprendi tik gėlytės.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

O kaip tai turetu buti apsirasoma? Juk negali paprasciausiai buti 8 dydis – A[8]++?

Gali būti kas tik nori. Kaip masyvo indeksą gali naudoti ir konstantą kode, ir kintamąjį. "A" nėra stebuklingas sakinys

 
int i = 1;
int sausainis = 4;
A[0] = 10;
A[i] = 20;
A[sausainis] = 30;

Visi jie teisingi.

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