drawgas

Grįžta

Kur aš?

RT : P.S. Primenu, kad artėjantį šeštadienį - RenaultFan vasaros sezono atidarymas :)

Taigi dar viena diena universitete.. Dar viena C++ paskaita, dar dvi suknistos matematikos.
Eina jos š*** (nesikeiksiu :P ). Ne, nu kaip nervina jo elgesys.. Butinai užstos ką rašo.. Butinai mintyse sugalvos, o pasakys garsiai tik sakinio pabaigą, dar kanors leptels ir liksi vel it musę kandęs (ot kaip mandrai išsireiškiau)…
Žodžiu, matematika nevež :)
Diskrečioji? Na ten bent aišku, bet velniškai nuobodu… Taip nuobodu, kad taip ir matai, kaip po truputi užmiega pusė auditorijos… Toliau pateikiu keleta nuotraukyčių ir pirmojo laboratorinio darbo užduotį ir kodą :)

Sakoma, kad studentai blogai gyvena :D O du nešiojamieji kompiuteriai vienoj auditorijoj – panašu į labai prastai gyvenančius studentus? ;) Turiningos, nuobodžios paskaitos, juokas, nervai, įtampa ir visa kita.. Tai dalis studento gyvenimo, kurio per metus ne taip ir pasiilgau.. Gana šnekų, štai foto:

DSC05138 DSC05141 DSC05145
DSC05146 DSC05148 DSC05150
DSC05151 DSC05152 DSC05157
DSC05158 DSC05163

Vat taip va. O dabar eime prie C++ laboratorinio darbo. Na nevisai jis pirmas, tik va pirmasis pabaigtas ir pirmasis, kurio užduotis buvo rimtesnė.
Užduotis galima rasti adresu: www.atviraskodas.info
Štai užduoties tekstas:

Parašykite klasę racionaliems skaičiams, pasinaudokite funkcijomis nariais add, sub, mul, div, less atliekančiomis sekančias operacijas +, -,* ,/ ir < . Pvz. Sudėties operacija a + b šios klasės pagalba atliekama kaip a. add(b), o operacija a < b atliekama kaip a. less(b). Racionalus skaičiai - tai skaičiai, kuriuos galima išreikšti trupmenomis pavidalu su sveikais skaičiais skaitiklyje ir vardiklyje, pvz. ½, 2/3, 15/32, 65/4, 16/5. Mūsų klasėje racionalieji skaičiai turi būti išreikšti sveiku skaičių poru tipo int – skaitiklis ir vardiklis. Kiekvienam abstrakčiam duomenų tipui reikalingas konstruktorius, kuris sukuria objektus . Mūsų atveju konstruktorius turi kurti objektus sveikų skaičių poros pagrindu tipo int. Kadangi bet kuris sveikas skaičius yra racionalus skaičius ( jį galime išreikšti kaip tą patį skaičių padalintą iš 1, tai reikalingas dar ir konstruktorius su vienu sveiko skaičiaus parametru. Įtraukite į klasę funkcijas- narius input ir output . Pirma iš jų priima argumentą tipo istream ir įveda racionalų skaičių sekančia forma “skaitiklis/vardiklis” iš klaviatūros arba failo. Antra gauna argumentą tipo osream ir išveda racionalu skaičių forma “skaitiklis/vardiklis” į ekraną arba į failą. Funkcijos - nariai add, sub, mul ir div turi grąžinti racionalius skaičius . Funkcija less gražina reikšmes tipo bool. Be to , įtraukite funkciją neg , neturinčią parametrų ir grąžinančią objektą su minuso ženklu. Parašykite funkciją main ir ištestuokite jūsų klasės realizaciją. Apibrėžiant funkcijas bus naudingos sekančios formules:
a/b+c/d=(a*d+b*c)/(b*d)
a/b-c/d=(a*d-b*c)/(b*d)
(a/b)/(c/d)=(a*d)/(c*b)
-(a/b)=(-a/b)
(a/b)<(c/d) reiškia (a*d)<(c*b)
(a/b)= =(c/d) reiškia (a*d)= =(c*b)
Skaitiklis gali būti kaip teigiamas taip ir neigiamas , o vardiklis turi būti teigiamas.

O štai pati programa, kurią dar reiks manau pataisyt ir patobulint ;) (Kai netingėsiu :P )

  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class rac
  6. {
  7.  private:
  8.          int skait;
  9.          int vard;
  10.  
  11.  public:
  12.          rac (int z, int p);
  13.          rac (int z);
  14.          rac ();
  15.          rac sudeti (rac d);
  16.          rac atimti (rac d);
  17.          rac padalinti (rac d);
  18.          rac padauginti (rac d);
  19.          void neig();
  20.          bool maziau (rac a, rac b);
  21.      void ivesti();
  22.          void isvesti();
  23. };
  24.  int main ()
  25. {
  26.   rac a, b, c;
  27.  
  28.   a.ivesti();
  29.   cout < < "A: ";
  30.   a.isvesti();
  31.  
  32.   b.ivesti();
  33.   cout << "B: ";
  34.   b.isvesti();
  35.  
  36.   c = a.sudeti(b);
  37.   cout << "Suma: ";
  38.   c.isvesti();
  39.  
  40.   c = a.atimti (b);
  41.   cout << "Skirtumas: ";
  42.   c.isvesti();
  43.  
  44.   c = a.padalinti (b);
  45.   cout << "Dalmuo: ";
  46.   c.isvesti();
  47.  
  48.   c = a.padauginti (b);
  49.   cout << "Sandauga: ";
  50.   c.isvesti();
  51.  
  52.   c.neig();
  53.   cout << "Kitas zenklas: ";
  54.   c.isvesti();
  55.  
  56.   return;
  57.  
  58. }
  59.  
  60. rac::rac ()
  61. {
  62.   skait = 0;
  63.   vard = 1;
  64. }
  65.  
  66. rac::rac (int z)
  67. {
  68.   skait = z;
  69.   vard = 1;
  70. }
  71.  
  72. rac::rac (int z, int p)
  73. {
  74.   skait = z;
  75.   vard = p;
  76. }
  77.  
  78. void rac::ivesti()
  79. {
  80.    char sl;
  81.  
  82.    cin >> skait >> sl >> vard;
  83.  
  84. }
  85.  
  86. void rac::isvesti()
  87. {
  88.  
  89.    cout < < skait << "/" << vard << "\n";
  90.  
  91. }
  92.  
  93. rac rac::sudeti(rac d)
  94. {
  95.  
  96.    rac tmp;
  97.  
  98.    tmp.skait = skait * d.vard + d.skait*vard;
  99.    tmp.vard = vard * d.vard; // a/b+c/d=(a*d+b*c)/(b*d)
  100.    
  101.    return (tmp);
  102.  
  103. }
  104.  
  105. rac rac::atimti(rac d)
  106. {
  107.  
  108.    rac tmp;
  109.  
  110.    tmp.skait = skait * d.vard - d.skait*vard;
  111.    tmp.vard = vard * d.vard; // a/b-c/d=(a*d-b*c)/(b*d)
  112.  
  113.    return (tmp);
  114.  
  115. }
  116.  
  117. rac rac::padalinti(rac d)
  118. {
  119.  
  120.    rac tmp;
  121.  
  122.    tmp.skait = skait * d.vard;
  123.    tmp.vard = d.skait * vard; // (a/b)/(c/d)=(a*d)/(c*b)
  124.  
  125.    return (tmp);
  126.  
  127. }
  128.  
  129. rac rac::padauginti(rac d)
  130. {
  131.  
  132.    rac tmp;
  133.  
  134.    tmp.skait = skait * d.skait;
  135.    tmp.vard = vard * d.vard; // (a*b)/(c*d)
  136.  
  137.    return (tmp);
  138.  
  139. }
  140.  
  141.  
  142. void rac::neig()
  143. {
  144.  
  145.    skait = - skait;
  146.    vard = vard;
  147. }

Dar yra pora klaidelių čia, bet kolkas bus gerai :P

5 komentarų (-ai) to “Dar viena diena universitete… Pirmasis C++ laboratorinis darbas”

  1. Am… apie foto patylėsiu ;D Apie tą kodą ir užduotį irgi. O pamačiau va tavo foto ir nu pasiilgau ;/ p.s. Gražiai nupiešė tą katiną ;> o kicius netikras. Aš vienintelė tikra ;D ;p

    MeOw

  2. :D :P ryt penktadienis, tikriausiai pasimatysim, priklausomai nuo tavo afygenos anglu mokytojos :P

    o kycius tu tikrasis ir vienintelis, o jis kicis tikrasis ir vienintelis :P

    drawgas

  3. Jį reikia supažindinti su kicia ;>>

    MeOw

  4. neee.. nereikia. man jo gaila :D

    drawgas

  5. ;D Nu ir kas…gi nepamaišytų dar viena ;D

    MeOw

Komentuokite