Gå til innhold

ekorniminator

Medlemmer
  • Innlegg

    72
  • Ble med

  • Besøkte siden sist

Innlegg skrevet av ekorniminator

  1. dette er en variabel som er garantert å holde den mengde informasjon som er nødvendig.. vector<int>::size_type kan garantert holde antall integere det er i vektoren, string::size_type er en variabel som holder størrelsen på en string.

     

    man kan bruke int også, men size_type garanterer plass. dessuten er det lettere å se hva variabelen skal brukes til, noe som er greit når du leser programmet.

     

    med andre ord: som oftest ingen nødvendighet, men god programmeringsskikk ;)

  2. hmm, jeg lukket bevisst alle andre programmer for å prøve å få best mulig tid.. mulig jeg kjører debug :hmm:

     

    edit* ser slik ut, for om jeg velger debug eller vanlig run så kjører programmet til samme tid.. men hvordan slår jeg av dette da? jeg får samme tider om jeg kjører .exe-filen utenfor IDE også.

  3. ved typedef lager du et synonym til en definisjon sånn som jeg har forstått det. det vil si at om du skal lage mange variabler som skal holde størrelsen på en vektor som inneholder int f.eks skriver du:

    typedef vector<int>::size_type vec_sz;
    vec_sz a = ...;
    vec_sz b = ...;
    ..
    

    i steden for:

     vector<int>::size_type a = ...;
    vector<int>::size_type b = ...;
    ..
    

     

    vector<double>& er også et synonym, men denne gangen til en vektor i ditt eksempel. vector<double>& a = b; så er a et synonym for b. og om man endrer en av de endres den andre også.

     

    dette brukes ofte i argumenter i funksjoner. grunnen til dette kan blant annet være at man ikke ønsker å kopiere hele vektoren, gir den derfor bare et nytt navn for å spare på ressursene. det kan også være en funskjon man ønsker at skal endre flere verdier. ettersom funskjonen kun returnerer en, legger man den andre inn som et argument. og siden den er et synonym så endres verdien til argumentet du satt i løpet av funskjonen..

  4. utrolig greit å bare skrive alle vesentlige variabler for hver loop :) tok meg 5 min å finne ut av det.. etter mange timer før i dag :p

     

    while(a!=x && b!=y) skulle selvfølgelig vært while(a!=x || b!=y)..

     

    men dette tok ganske lang tid. noen hete tips for å forkorte kjøretiden?

    bruker 2 sek ved 10 10.. og 5 min med 10 20.

  5. prøver å skrive et program som finner antall mulige veier i et rutete rørnett. men det er noe i koden som er feil. programmet avslutter aldri en av løkkene tror jeg.

    er ganske så ny med programmering, men ville prøve meg på å skrive et program som benytter brute-force til å løse et problem :p

     

    veien skal være så kort som mulig, og sluttpunktet vil alltid ligge til høyre og under startpunket.

     

    #include<iostream>
    #include<vector>
    #include<ios>
    #include<windows.h>
    
    using std::cout;    using std::cin;
    using std::endl;    using std::vector;
    
    int main()
    {
       int x,y;
       cin>>x>>y; //distanse
       
       vector<int> locked((x+1)*(y+1), 0);//vektor som inneholder informasjon om hvilke kryss som er "låst"
       
       int solutions = 0; //antall løsninger
       int exit = 0; 
       
       
                      
       while(exit==0){
                      int a = 0; //din x-posisjon
                      int b = 0; //din y-posisjon
                      int inc_x=0; //retning på din forrige bevegelse
                      int last_turn; //siste sving du gjorde i y-retning
                      
                      while(a!=x && b!=y){
                                 
                                 /*tester om neste kryss er "låst" eller om du er kommet til veis ende i x-retning.
                                 i så tilfelle går du i y-retning*/
                                 if(locked[b*(x+1)+a+1]==1 || a==x){
                                                            if(inc_x==1) last_turn = b*(x+1)+a;
                                                            inc_x=0;
                                                            ++b;
                                                            }
                                 //ellers beveger du deg i x
                                 else {
                                      ++a;
                                      inc_x = 1;
                                      }
                                      
                                 //låser opp igjen hjørner som ikke skal være låst lenger
                                 if(a!=x && b==y)
                                         for(vector<int>::size_type i = last_turn; i!=locked.size(); ++i)
                                                 locked[i] = 0;
                                                 
                                 //om dette er den siste muligheter
                                 if(a==0 && b==y) exit = 1;
                                 
                                 }
                                 //låser krysset du sist gjorde en y-sving i
                                 locked[last_turn] = 1;
                                 ++solutions;
                                 
                                 }
                                 
                      cout<<solutions;
                      Sleep(5000);
                      return 0;
    }

    holder med hint om hva som er feil.. om ikke alt er helt på trynet da :blush:

     

    godt mulig jeg bruker en dårlig algoritme, så kom gjerne med forslag til bedre fremgangsmåter også :)

     

    edit*koden ser jo helt hy ut her :p kanskje best å kopiere den til et annet sted så linjene ikke blir delt..

  6. takk for hjelpen :) lærer best med å klare mest mulig selv.. prøver alltid å søke på google før jeg poster, men det er ikke alltid like lett vite hva man skal søke etter ettersom dette er det første språket jeg lærer meg.

     

    forresten så er headeren for tolower i c++ <cctype> og ikke <ctype.h> (dette er c) for andre som skulle lure på dette :p

     

    men jeg tror jeg dropper det å forandre en string til små bokstaver.. char går fint, men string virket heftig etter litt googling!!

  7. ønsker å lage et program som kalkulerer antall av forskjellige ting i inputen. jeg vil lagre elementene i en vektor og finne ut hvor mange ganger hvert element gjentar seg.. eller noe annet i den dur :!:

     

    så om inputen er: lars ola per per ola knut per

     

    skal outputen se slik ut:

    lars: 1

    ola: 2

    per: 3

    knut: 1

     

    ps. ønsker ikke en fullstendig løsning, bare et lite dytt på veien.. :p

    på forhånd tusen takk

     

    forresten, hvordan får jeg programmet til å se bort i fra om det er store eller små bokstaver i inputen :hmm:

  8. drevet litt med c++ nå, men hvilken kompilator bør jeg bruke? noen som kan fortelle litt om fordeler/ulemper de forskjellige alternativene imellom? disse har jeg tilgang til:

     

    -Dev-c++ (det er denne jeg har brukt så langt og trives i grunnen godt med den.).

    -Microsoft Visual C++

    -Bordland Developer Studio

     

    Noen andre som er bedre?

     

    thank you ;)

  9. hva er veien å gå om målet er å lage et spill som kan spilles på en NES maskin? Hva trenger man av kunnskap osv?

     

    -har grunnleggende kunnskaper i c++

    -lest de 2 NES kapitlene dine

    -akkurat printet ut assembly-boken din, deretter har jeg forstått at "art of assembly" er et godt valg.

     

    har en kompis som driver og lager kretskort ol. så han skal hjelpe meg å lage det jeg trenger på det området.. noen gode tips?

  10. utrolig genialt :) virker som du har lagt ned mye arbeid i dette her..

    kan jeg spørre når kapittel 3 kommer uten å legge noe press på deg :dribble:

     

    ikke for å pirke, men i kapitell 1, side 6, 3. avsnitt fra bunnen er det en skrive feil..

    (CPU har PRG-ROM og PPU har PRG-ROM)
    vet du er klar over det, lærte det nemlig av deg :blush: men PPU'en har vel CHR-ROM
×
×
  • Opprett ny...