Pereiti prie turinio

C++ Egzamino Užduotis VBE


Rekomenduojami pranešimai

Sveiki,

 

Užduotis atrodo taip:

 

http://image.prntscr.com/image/e41a3fc3af4d4c6ca265341823c22ca6.pnghttp://image.prntscr.com/image/1f5e963dbaac4484aa89af5252ad7847.png

 

Apskaičiuoju rezultatą "Apskričių skaičius", tačiau niekaip nesugalvoju, kaip prasukti, kad atspausdinti Apskrities pavadinimą, savivaldybių skaičių, didžiausią mokyklų skaičių savivaldybėje su vienmačiu masyvu.

 

Taip pat ar nėra klaidų kažkokių kitų mano kode, kurie atimtų taškų?

 

#include <iostream>
#include <fstream>


using namespace std;

string sav[61] = {""}; // savivaldybe
string aps[101] = {""}; // apskritys
int msk[] = {0}; // mokyklu skaicius
int sk; // projekte dalyvaujanciu skaicius

void skaitymas();
int apsksk(); // apskriciu skaicius
int savsk(); // savivaldybiu apskaiciavimas


int main()
{
   skaitymas();
   int apssk = apsksk(); // apskriciu skaicius

   string apsk[] = {}; // apskritys nesikartojancios
   int pr = 0;
   for(int i = 0 ; i < sk; i++){

   }

   savsk();
   return 0;
}

void skaitymas(){
   ifstream fd("U2.txt");
   int ms; // miestu skaicius
   fd >> sk;
   for(int i = 0; i < sk;i++){
       fd >> sav[i] >> msk[i] >> aps[i];
   }
   fd.close();
}

int apsksk(){ // apskriciu apskaiciavimas
   int apssk = 0; // apskriciu skaicius
   string last = "";
   for(int i = 0; i < sk;i++){
       if(last == "" || last != aps[i]){
        last = aps[i];
        apssk++;
       }
   }
}

int savsk(){ // savivaldybiu apskaiciavimas
   int savsk = 0; // savivaldybiu skaicius
   string last = "";
   for(int i = 0; i < sk;i++){
       if(last == "" || last == aps[i]){
        last = aps[i];
        savsk++;
       }
   }
   cout << savsk;
}

U2.txt

Redagavo Nerio
Nuoroda į pranešimą
Dalintis kituose puslapiuose

 for ( int i = 0; i < 10; i++ ) {

       R[i].sav = INT_MAX;
       R[i].maxM = 0;
   }

/* nuskaityti miesto pavadinima */
       char tarpinis[21];
       f.get( tarpinis, sizeof(tarpinis)-1 );
       M[i].miestas = tarpinis;

 

Tas kodas pateiktas gan sudėtingas. Ar yra būdas dar lengviau padaryti?

Redagavo Nerio
Nuoroda į pranešimą
Dalintis kituose puslapiuose

 for ( int i = 0; i < 10; i++ ) {

       R[i].sav = INT_MAX;
       R[i].maxM = 0;
   }

/* nuskaityti miesto pavadinima */
       char tarpinis[21];
       f.get( tarpinis, sizeof(tarpinis)-1 );
       M[i].miestas = tarpinis;

 

Tas kodas pateiktas gan sudėtingas. Ar yra būdas dar lengviau padaryti?

Gal ir yra. Gali pats pasidaryti jei tau kelios eilutės kelia problemą. O tau išvis kam ta VBE užduotis? Tu čia ruošies egzaminams, kurie bus reikalingi stojimams ar kaip?

 

O tokio kaip tu pateikei:

 for ( int i = 0; i < 10; i++ ) {

       R[i].sav = INT_MAX;
       R[i].maxM = 0;
   }

...išvis nėra.

 

Yra tik toks:

 for ( int i = 0; i < 10; i++ ) {

       R[i].min = INT_MAX;
       R[i].suma = 0;
   }

 

 

 

Tavo pateiktajame:

 for ( int i = 0; i < 10; i++ ) {

       R[i].sav = INT_MAX;
       R[i].maxM = 0;
   }

/* nuskaityti miesto pavadinima */
       char tarpinis[21];
       f.get(tarpinis, sizeof(tarpinis)-1 );
       M[i].miestas = tarpinis;

... deklaruojamas char masyvas, po to funkcijos f.get pagalba ištraukia duomenis ir priskiria tam masyvui, po to tas masyvas priskiriamas objekto miestui. Tai kuri vieta čia tau sudėtinga? Aš šiaip nedirbu cu C++, bet jau net negooglindamas galiu pasakyt, ką koks parametras reiškia, nes ir taip aišku iš konteksto.

Redagavo kaciukas111
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Gal ir yra. Gali pats pasidaryti jei tau kelios eilutės kelia problemą. O tau išvis kam ta VBE užduotis? Tu čia ruošies egzaminams, kurie bus reikalingi stojimams ar kaip?

 

O tokio kaip tu pateikei:

 

...išvis nėra.

 

Yra tik toks:

 for ( int i = 0; i < 10; i++ ) {

       R[i].min = INT_MAX;
       R[i].suma = 0;
   }

 

 

 

Tavo pateiktajame:

 for ( int i = 0; i < 10; i++ ) {

       R[i].sav = INT_MAX;
       R[i].maxM = 0;
   }

/* nuskaityti miesto pavadinima */
       char tarpinis[21];
       f.get(tarpinis, sizeof(tarpinis)-1 );
       M[i].miestas = tarpinis;

... deklaruojamas char masyvas, po to funkcijos f.get pagalba ištraukia duomenis ir priskiria tam masyvui, po to tas masyvas priskiriamas objekto miestui. Tai kuri vieta čia tau sudėtinga? Aš šiaip nedirbu cu C++, bet jau net negooglindamas galiu pasakyt, ką koks parametras reiškia, nes ir taip aišku iš konteksto.

 

Nesuprantu tiksliai ką padaro:

 

  for ( int i = 0; i < 10; i++ ) {

       R[i].min = INT_MAX;
       R[i].suma = 0;
   }

 

Ypač vietos INT_MAX;

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nesuprantu tiksliai ką padaro:

 

  for ( int i = 0; i < 10; i++ ) {

       R[i].min = INT_MAX;
       R[i].suma = 0;
   }

 

Ypač vietos INT_MAX;

R yra rezultatų masyvas. Šiame cikle kiekvieno masyvo elemento savybėms min ir suma priskiriamos reikšmės. Savybei min priskiriama INT_MAX. INT_MAX, kaip matau nėra deklaruotas programoje, tai reiškia, kad jis macrosas , kuris jau yra apibrėžtas sistemoje/bibiliotekėlėje. Dar apie tai gali rasti čia.

Paprasčiau sakant, šito ciklo pagalba R masyvas yra paruošiamas programai ir skaičiavimams. Dabar tau aišku kyla klausimas kodėl būtent INT_MAX ir 0. O todėl, kad tai yra, liaudiškai sakant, paprasčiausias atskaitos taškas, kurio pagalba galima pradėti atlikti veiksmus norint rašti mažiausią skaičių, t.y. pirmą reišmę padaryti kaip didžiausią. Aišku, galima programą supaprastinti ir priskirti nebūtinai INT_MAX ( didžiausias kompiuteriui suprantamas int`as). Galima priskirti ir tarkim 500000 ir 600000, bet kas bus jei atsiras miestas, kuris turės daugiau gyventojų nei 600000? Tada programa tokio miesto neįtrauks į statistiko skaičiavimus, tad ir yra imamas, kuo didesnis skaičius. Tad kad nereiktų ilgai galvoti kokį čia paimti, kad tiktų visais atvejais, tada tiesiog imi didžiausią kompiuteriui suprantamą reikšmę, tiesiog INT_MAX, kurios ribos yra tokios. Tad šiuo atveju INT_MAX mums tinka, nes kažin ar rasime Lietuvoje miestą, kuriame yra virš 2 mln. gyventojų. Got it?

Dar vienas pavyzdys kaip randas min.

Siūlau tau daugiau praktikos programuojant. Kils mažiau klausimų.

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