Pereiti prie turinio

zemkalnietis

Patvirtinti nariai
  • Pranešimai

    194
  • Užsiregistravo

  • Lankėsi

  • Atsiliepimai

    100%

zemkalnietis Pranešimai

  1. Sveiki, parduodu ASUS N56VB laptopą.

    Identiškas šitam, tik pas mane HDD 750GB 7200 RPM (mažesnis, bet spartesnis): http://www.kilobaitas.lt/Nesiojamieji/Asus/ASUS_N56VB_/_156_FULL_HD_/_I/N56VB-S4063H/CatalogStoreDetail.aspx?CatID=PL_409&ID=505669

     

    Kompas jokių defektų ar problemų neturi (išskyrus truputį apsitrynusį kairį kampą korpuso apačioje (matoma pirmoj nuotraukoj)). Garantija dar beveik 2 metai. Pirktas iš asusshop.lt.

     

    Kompas su legaliais Windows 8.1.

     

    Apžiūrėti galima Kaune ir Panevėžyje.

     

    Kaina 800€.

     

    Skelbiu.lt linkas: http://www.skelbiu.lt/skelbimai/asus-n56vb-20630714.html

    post-79674-0-49942200-1421338373_thumb.jpg

    post-79674-0-22686600-1421338384_thumb.jpg

  2. Egzistuoja visi failai? Masyvai nėra tušti (duomenis iš failo gauna, užpildo masyvus)?

    Taip, prieš tai buvau pervardinęs funkciją kuri irgi įrašo duomenis į rezultatų failą, tačiau pamiršau pakeisti jos vardą prototipuose ir kreipiny, tai tokia ir buvo žiopla klaida. :)

  3. Duok kodą - debuginsim.

     

    Kol neparašiau šitos funkcijos, viskas buvo gerai. Gal trūksta kokio include'o?

     

    #include <iostream>
    #include <string>
    #include <fstream>
    #include <iomanip>
    #include "taškai.h"
    #include "spalvos.h"
    #include "trikampiai.h"
    using namespace std;
    

     

    void ĮrašytiRezultatus(trikampiai F[], spalvos S[], int m)
    {
    ofstream Rašyti ( "Rezultatai.txt" );
    for ( int i = 0; i < m; i++ )
    	if (S[i].ImtiAr() == "ne" )
    		Rašyti << "Negalima sudaryti trikampio, kurio spalva būtų " <<
    		S[i].ImtiSp() << ".\n";
    	else if ( F[i].ImtiPe() != 0 )
    		Rašyti << setprecision(2) << "Trikampio ABC spalva yra " <<
    		F[i].ImtiColor() << ". Jo viršūnių koordinatės:  " << " A (" <<
    		F[i].ImtiAx() << ";" << F[i].ImtiAy() << "), B (" << F[i].ImtiBx() <<
    		";" << F[i].ImtiBy() << "), C (" << F[i].ImtiCx() << ";" <<
    		F[i].ImtiCy() << "). Perimetras: " << F[i].ImtiPe() << endl;
    	else
    		Rašyti << "Neįmanoma sudaryti lygiašonio trikampio, kurio spalva būtų " <<
    		S[i].ImtiSp() << ". \n";
    Rašyti.close();
    }
    

  4. Pradėkim nuo to, kas yra grafas. O tai yra tiesiog viršūnių aibė su jungtimis (briaunomis) tarp jų. Viso labo tiek.

     

    Kaip atvaizduoti grafą? Tarkim, viršūnes vadinkim skaičiais nuo 0 iki n. O kaip tada apibūdinti briaunas? Briauna jungia dvi viršūnes, todėl tų viršūnių indeksai ir parodys briauną.

     

    Paprasčiau apsirašyti grafą:

    list g[];
    

    Jeigu turim viršūnę i, tai g[ i] bus sąrašas viršūnių, su kuriomis jungiasi viršūnė i, bei atstumai iki jų.

     

    Šiam uždaviniui išspręsti užtenka šiek tiek pa'pimp'intos paieškos į gylį.

     

    Kaip veikia paieška į gylį? Ateini į viršūnę v. Iš sąrašo viršūnių, su kuriomis jungiasi v, išsirenki pirmą viršūnę, tarkim, u. Tada eini į viršūnę u, peržiūri jos sąrašą. Jeigu giliau negali lįsti, grįžtu į viršūnę v, išsirenki iš jos sąrašo kitą viršūnę ir eini gilyn į ją.

     

    Bet viskas ne taip paprasta. Kas jeigu iš v ateisiu į u, iš u į w, o w jungiasi su v? Kad nepradėtum vaikščioti ratu, reikia pasižymėti, kokiose viršūnėse jau lankeisi, ir į jas daugiau neiti.

     

    Paklausi, o kaip su atstumu? Elementaru, Vatsonai! Prie kiekvienos viršūnės saugai ilgiausio kelio nuo pradinės viršūnės iki dabartinės ilgį. Tada išvaikščiojęs visą grafą, susirasi viršūnę, kurios atstumas yra didžiausia – čia ir užsibais kelionė.

     

    Aha, o atstumo nepakanka! Reikia įvardinti ir maršrutą! Maršrutą galime lengvai atgaminti atgaliniu būdu. Jeigu iš viršūnės v ateinu į u, tai taip ir pasižymiu:

    previous[u] = v;

    Tada, kai pagaliau surasi tolimiausią viršūnę, pasižiūrėsi, iš kurios atėjai į jąją. Tada pasižiūrėsi, iš kurios atėjai į pastarąją, taip atgamindamas kelią. Taip ieškosi prieš tai buvusių viršūnių, kol galiausiai pasieksi pradinę.

     

    Belieka tik kiekvienam miestui priskirti viršūnės indeksą. Tada programos pabaigoje iš indeksų atgaminsi miestų pavadinimus.

     

    Nei daug, nei mažai. Visą šią užduotį labai palengvintų STL (Standard Template Library) duomenų struktūros.

     

    Visa paieška gilyn lengvai apsirašo su rekursija.

    Na va, kažką manau supratau, o apie rekursijas, tai jų dar irgi nesimokėme.

    O tą list reikia į klasę rašyt ar jis tiesiog kaip koks atskyras masyvas?

  5. Taip. Ir dar kazkur atstumai, kad ir kitam masyve, vienoda tvarka sudeta. Aisku cia viskas priklauso koki sprendimo budo renkiesi, nes sprendziant dabar is tokiu klausimu tai vis dar nera supratimo, kaip sprest.

    o miesto vardus string ar char saugot? Ir išvis koks tarp jų skirtumas? nes bent paskaly, tai aišku, kad vienam simboliui, o string eilutei

     

    Paprasčiausia paieška į plotį ar į gylį čia neveiks, nes reikia rasti ne kelią kuris aplankytų daugiausia miestų, o kelią kuris būtų ilgiausias nesilankant tame pačiame mieste kelis kartus. Šiaip šios problemos sudėtingumas NP, tačiau tavo atveju grafas neturi ciklų, kas šioj situacijoj labai gelbėja. Gali pabandyti įgyvendinti kažką panašaus į http://www.geeksforgeeks.org/find-longest-path-directed-acyclic-graph/

    blemba aš net tų grafų nesuprantu, nieko dar nesimokėm apie juos, tą paiešką į gylį vos supratau kaip veikia, bet dar net nežinau kaip užrašyt reiks, o tu man dar kažkokių keistų dalykų duodi, kurių aš nėkiek nesuprantu. būkit jūs biški paprastesni, aš dar tik pirmakursis ir dabar esu nebesveikai pasimetęs ar tikrai man čia reikėjo stot :/

     

    Paprasčiausia paieška į plotį ar į gylį čia neveiks, nes reikia rasti ne kelią kuris aplankytų daugiausia miestų, o kelią kuris būtų ilgiausias nesilankant tame pačiame mieste kelis kartus. Šiaip šios problemos sudėtingumas NP, tačiau tavo atveju grafas neturi ciklų, kas šioj situacijoj labai gelbėja. Gali pabandyti įgyvendinti kažką panašaus į http://www.geeksforgeeks.org/find-longest-path-directed-acyclic-graph/

    o darant tą "paprasčiausią" paiešką į gylį, aš juk galiu saugoti visus kelius kokiam nors masyve ir kai apeinu visus galimus variantus, tada tiesiog iš to masyvo atrenku patį ilgiausią. Ar turi pasiūlyti kažką lengvesnio ar šiaip geresnio?

  6. Taip. Ir dar kazkur atstumai, kad ir kitam masyve, vienoda tvarka sudeta. Aisku cia viskas priklauso koki sprendimo budo renkiesi, nes sprendziant dabar is tokiu klausimu tai vis dar nera supratimo, kaip sprest.

    na kaip aukščiau sakė žmonės, tai bandysiu naudot tą paiešką į gylį

  7. Kaip tai neturi, o tai jungtys su kitais miestais? Cia yra pats svarbiausias dalykas miestui apibudint, koks skirtumas ten tas pavadinimas, gali pasikeist visus i a,b,c... Svarbu i kur gali nukeliaut is jo ir koks atstumas kelio.

    tai klasėje turi būti miesto vardas ir masyvas su kaimynais miestais?

  8. Susikuri standartine klase (ar struktura, nors struktura irgi klase, tik fieldai pagal nutylejima public)saugot miesto duomenims ir prisikuri tiek skirtingu objektu, kiek rasi skirtingu miestu.

    nesuprantu, miestai juk jokių duomenų neturi, tik miesto vardą

     

    Susikuri standartine klase (ar struktura, nors struktura irgi klase, tik fieldai pagal nutylejima public)saugot miesto duomenims ir prisikuri tiek skirtingu objektu, kiek rasi skirtingu miestu.

    pasidarau klasę, sudedu į ją miestų vardus ir kas tada? kur saugot grafų svorius?

  9. Masyvo tai nelabai tau čia reikia. Pasidarai kiekvienam miestui po kokį nors tai objektą (gali objektą daryti, jeigu nori labiau C, tai struktūrą, skirtumo jokio), objekte turi parametrus kaip pavadinimas ir rodyklės į kitus tokius objektus (kokį masyvą šitam pasidaryk), su rodyklėm dar kaip nors paraleliškai saugok atstumą (referencui, šitas dalykas vadinamas svoriu, gal rasi kur minint tokį dalyką). Tada kai turi kiekvienam miestui po kokį nors objektą, pradedi pagal tą grafiką kur turi, sujunginėti tas rodykles (čia vėl, krūvos metodų yra, susirasi internete koks labiau patiks).

    Kaip suprasti "Pasidarai kiekvienam miestui po kokį nors tai objektą"? Juk aš nežinau kokie ir kiek tų miestų bus. Sorry, kad tokie buki mano klausimai, tiesiog nesu aš labai pežengęs

  10. Masyvo tai nelabai tau čia reikia. Pasidarai kiekvienam miestui po kokį nors tai objektą (gali objektą daryti, jeigu nori labiau C, tai struktūrą, skirtumo jokio), objekte turi parametrus kaip pavadinimas ir rodyklės į kitus tokius objektus (kokį masyvą šitam pasidaryk), su rodyklėm dar kaip nors paraleliškai saugok atstumą (referencui, šitas dalykas vadinamas svoriu, gal rasi kur minint tokį dalyką). Tada kai turi kiekvienam miestui po kokį nors objektą, pradedi pagal tą grafiką kur turi, sujunginėti tas rodykles (čia vėl, krūvos metodų yra, susirasi internete koks labiau patiks).

    Dėkui :)

  11. Paisdarai iš tų visų miestų grafų taškus, po to sujungi (nu čia jau neaiškinsiu, ne į filologiją įstojai kad nepadarytum). Tada pasigooglini apie tokį metodą *Depth first search*, pritaikai jį iš tavo pradinio taško ir valio.

    Grafų taškus? Turi omeny jų viršūnes sudėt į atskyrus masyvus?

×
×
  • Pasirinkite naujai kuriamo turinio tipą...