Code Review fuer C++ Einsteiger



  • lulu123 schrieb:

    Was soll das Programm machen? 😕

    Das will ich nun nicht alles erläutern ... es ist ein Algorithmus der auf einer Tabelle von Zeichenketten arbeitet und am Ende eine Kennzahl zum Zusammenhang dieser Spalten ermittelt. Hoffe das hilft, ich denke aber, dass die Kenntnis zwar vorteilhaft, nicht aber unbedingt notwendig ist. In den Kommentaren stehen die Formeln was da passiert und wenn man in der Konfigurationsdatei die Logversion einstellt und die kleinste Tabelle nimmt (msa4x4.aln) dann sieht man recht gut, was da passiert in der Konsolenausgabe.



  • Ich frag mal ganz vorsichtig... Schon mal im Release-Modus kompiliert und getestet?



  • Nein noch nicht im Release-Modus kompiliert .... wirds dann wohl fixer mein Kunstwerk 🙂 ?



  • Erheblich



  • Okay - Release erstellt, das geht recht einfach, das Programm läuft etwas schneller. Wenn ich das nun ordentlich machen will, dann muss ich ja nun das Projekt auch auf einer Windows-Maschine kompilieren oder; schließlich sollen es ja auf Windows und Linux laufen ... danke für die Anmerkung, war mir als bisherigen Java-PHP-only Programmierer neu.



  • Jay1980 schrieb:

    lulu123 schrieb:

    Was soll das Programm machen? 😕

    Das will ich nun nicht alles erläutern ...

    lol, du verlangst von uns, dass wir eine Meinung zu deinem Programm abgeben und sagst nicht was das Programm genau macht?
    Vielleicht gibt's ja eine bessere Methode dein Problem zu lösen. Ich persönlich habe nicht die Zeit mich in den Affencode(Ja ganz genau, kein Wunder wieso der Java-Code n-Mal schneller läuft) einzulesen.

    Wenn du hier Feedback haben willst, dann gib uns mehr Informationen.

    Du bist ein Anfänger, woher ich das weiß? ->

    this->sequencesList = seqList;
        this->numberOfColumns = seqList.size();
        this->aminoAlphabet;
        aminoAlphabet.push_back("A"); // 0
        aminoAlphabet.push_back("C"); // 1
        aminoAlphabet.push_back("D"); // 2
        aminoAlphabet.push_back("E"); // 3
        aminoAlphabet.push_back("F"); // 4
        aminoAlphabet.push_back("G"); // 5
        aminoAlphabet.push_back("H"); // 6
        aminoAlphabet.push_back("I"); // 7
        aminoAlphabet.push_back("K"); // 8
        aminoAlphabet.push_back("L"); // 9
        aminoAlphabet.push_back("M"); // 10
        aminoAlphabet.push_back("N"); // 11
        aminoAlphabet.push_back("P"); // 12
        aminoAlphabet.push_back("Q"); // 13
        aminoAlphabet.push_back("R"); // 14
        aminoAlphabet.push_back("S"); // 15
        aminoAlphabet.push_back("T"); // 16
        aminoAlphabet.push_back("V"); // 17
        aminoAlphabet.push_back("W"); // 18
        aminoAlphabet.push_back("Y"); // 19
        aminoAlphabet.push_back("-"); // 20
    
        this->pairAminoAlphabet;
        //pairAminoAlphabet.push_back("-X-"); // Punkt 0,0
        pairAminoAlphabet.push_back("AA"); // 0
        pairAminoAlphabet.push_back("AC"); // 1
        pairAminoAlphabet.push_back("AD"); // 2
        pairAminoAlphabet.push_back("AE"); // 3
        pairAminoAlphabet.push_back("AF"); // 4
        pairAminoAlphabet.push_back("AG"); // 5
        pairAminoAlphabet.push_back("AH"); // 6
        pairAminoAlphabet.push_back("AI"); // 7
        pairAminoAlphabet.push_back("AK"); // 8
        pairAminoAlphabet.push_back("AL"); // 9
        pairAminoAlphabet.push_back("AM"); // 10
        pairAminoAlphabet.push_back("AN"); // 11
        pairAminoAlphabet.push_back("AP"); // 12
        pairAminoAlphabet.push_back("AQ"); // 13
        pairAminoAlphabet.push_back("AR"); // 14
        pairAminoAlphabet.push_back("AS"); // 15
        pairAminoAlphabet.push_back("AT"); // 16
        pairAminoAlphabet.push_back("AV"); // 17
        pairAminoAlphabet.push_back("AW"); // 18
        pairAminoAlphabet.push_back("AY"); // 19
        pairAminoAlphabet.push_back("A-"); // 20
    
        pairAminoAlphabet.push_back("CA"); // 0
        pairAminoAlphabet.push_back("CC"); // 1
        pairAminoAlphabet.push_back("CD"); // 2
        pairAminoAlphabet.push_back("CE"); // 3
        pairAminoAlphabet.push_back("CF"); // 4
        pairAminoAlphabet.push_back("CG"); // 5
        pairAminoAlphabet.push_back("CH"); // 6
        pairAminoAlphabet.push_back("CI"); // 7
        pairAminoAlphabet.push_back("CK"); // 8
        pairAminoAlphabet.push_back("CL"); // 9
        pairAminoAlphabet.push_back("CM"); // 10
        pairAminoAlphabet.push_back("CN"); // 11
        pairAminoAlphabet.push_back("CP"); // 12
        pairAminoAlphabet.push_back("CQ"); // 13
        pairAminoAlphabet.push_back("CR"); // 14
        pairAminoAlphabet.push_back("CS"); // 15
        pairAminoAlphabet.push_back("CT"); // 16
        pairAminoAlphabet.push_back("CV"); // 17
        pairAminoAlphabet.push_back("CW"); // 18
        pairAminoAlphabet.push_back("CY"); // 19
        pairAminoAlphabet.push_back("C-"); // 20
    
        pairAminoAlphabet.push_back("DA"); // 0
        pairAminoAlphabet.push_back("DC"); // 1
        pairAminoAlphabet.push_back("DD"); // 2
        pairAminoAlphabet.push_back("DE"); // 3
        pairAminoAlphabet.push_back("DF"); // 4
        pairAminoAlphabet.push_back("DG"); // 5
        pairAminoAlphabet.push_back("DH"); // 6
        pairAminoAlphabet.push_back("DI"); // 7
        pairAminoAlphabet.push_back("DK"); // 8
        pairAminoAlphabet.push_back("DL"); // 9
        pairAminoAlphabet.push_back("DM"); // 10
        pairAminoAlphabet.push_back("DN"); // 11
        pairAminoAlphabet.push_back("DP"); // 12
        pairAminoAlphabet.push_back("DQ"); // 13
        pairAminoAlphabet.push_back("DR"); // 14
        pairAminoAlphabet.push_back("DS"); // 15
        pairAminoAlphabet.push_back("DT"); // 16
        pairAminoAlphabet.push_back("DV"); // 17
        pairAminoAlphabet.push_back("DW"); // 18
        pairAminoAlphabet.push_back("DY"); // 19
        pairAminoAlphabet.push_back("D-"); // 20
    
        pairAminoAlphabet.push_back("EA"); // 0
        pairAminoAlphabet.push_back("EC"); // 1
        pairAminoAlphabet.push_back("ED"); // 2
        pairAminoAlphabet.push_back("EE"); // 3
        pairAminoAlphabet.push_back("EF"); // 4
        pairAminoAlphabet.push_back("EG"); // 5
        pairAminoAlphabet.push_back("EH"); // 6
        pairAminoAlphabet.push_back("EI"); // 7
        pairAminoAlphabet.push_back("EK"); // 8
        pairAminoAlphabet.push_back("EL"); // 9
        pairAminoAlphabet.push_back("EM"); // 10
        pairAminoAlphabet.push_back("EN"); // 11
        pairAminoAlphabet.push_back("EP"); // 12
        pairAminoAlphabet.push_back("EQ"); // 13
        pairAminoAlphabet.push_back("ER"); // 14
        pairAminoAlphabet.push_back("ES"); // 15
        pairAminoAlphabet.push_back("ET"); // 16
        pairAminoAlphabet.push_back("EV"); // 17
        pairAminoAlphabet.push_back("EW"); // 18
        pairAminoAlphabet.push_back("EY"); // 19
        pairAminoAlphabet.push_back("E-"); // 20
    
        pairAminoAlphabet.push_back("FA"); // 0
        pairAminoAlphabet.push_back("FC"); // 1
        pairAminoAlphabet.push_back("FD"); // 2
        pairAminoAlphabet.push_back("FE"); // 3
        pairAminoAlphabet.push_back("FF"); // 4
        pairAminoAlphabet.push_back("FG"); // 5
        pairAminoAlphabet.push_back("FH"); // 6
        pairAminoAlphabet.push_back("FI"); // 7
        pairAminoAlphabet.push_back("FK"); // 8
        pairAminoAlphabet.push_back("FL"); // 9
        pairAminoAlphabet.push_back("FM"); // 10
        pairAminoAlphabet.push_back("FN"); // 11
        pairAminoAlphabet.push_back("FP"); // 12
        pairAminoAlphabet.push_back("FQ"); // 13
        pairAminoAlphabet.push_back("FR"); // 14
        pairAminoAlphabet.push_back("FS"); // 15
        pairAminoAlphabet.push_back("FT"); // 16
        pairAminoAlphabet.push_back("FV"); // 17
        pairAminoAlphabet.push_back("FW"); // 18
        pairAminoAlphabet.push_back("FY"); // 19
        pairAminoAlphabet.push_back("F-"); // 20
    
        pairAminoAlphabet.push_back("GA"); // 0
        pairAminoAlphabet.push_back("GC"); // 1
        pairAminoAlphabet.push_back("GD"); // 2
        pairAminoAlphabet.push_back("GE"); // 3
        pairAminoAlphabet.push_back("GF"); // 4
        pairAminoAlphabet.push_back("GG"); // 5
        pairAminoAlphabet.push_back("GH"); // 6
        pairAminoAlphabet.push_back("GI"); // 7
        pairAminoAlphabet.push_back("GK"); // 8
        pairAminoAlphabet.push_back("GL"); // 9
        pairAminoAlphabet.push_back("GM"); // 10
        pairAminoAlphabet.push_back("GN"); // 11
        pairAminoAlphabet.push_back("GP"); // 12
        pairAminoAlphabet.push_back("GQ"); // 13
        pairAminoAlphabet.push_back("GR"); // 14
        pairAminoAlphabet.push_back("GS"); // 15
        pairAminoAlphabet.push_back("GT"); // 16
        pairAminoAlphabet.push_back("GV"); // 17
        pairAminoAlphabet.push_back("GW"); // 18
        pairAminoAlphabet.push_back("GY"); // 19
        pairAminoAlphabet.push_back("G-"); // 20
    
        pairAminoAlphabet.push_back("HA"); // 0
        pairAminoAlphabet.push_back("HC"); // 1
        pairAminoAlphabet.push_back("HD"); // 2
        pairAminoAlphabet.push_back("HE"); // 3
        pairAminoAlphabet.push_back("HF"); // 4
        pairAminoAlphabet.push_back("HG"); // 5
        pairAminoAlphabet.push_back("HH"); // 6
        pairAminoAlphabet.push_back("HI"); // 7
        pairAminoAlphabet.push_back("HK"); // 8
        pairAminoAlphabet.push_back("HL"); // 9
        pairAminoAlphabet.push_back("HM"); // 10
        pairAminoAlphabet.push_back("HN"); // 11
        pairAminoAlphabet.push_back("HP"); // 12
        pairAminoAlphabet.push_back("HQ"); // 13
        pairAminoAlphabet.push_back("HR"); // 14
        pairAminoAlphabet.push_back("HS"); // 15
        pairAminoAlphabet.push_back("HT"); // 16
        pairAminoAlphabet.push_back("HV"); // 17
        pairAminoAlphabet.push_back("HW"); // 18
        pairAminoAlphabet.push_back("HY"); // 19
        pairAminoAlphabet.push_back("H-"); // 20
    
        pairAminoAlphabet.push_back("IA"); // 0
        pairAminoAlphabet.push_back("IC"); // 1
        pairAminoAlphabet.push_back("ID"); // 2
        pairAminoAlphabet.push_back("IE"); // 3
        pairAminoAlphabet.push_back("IF"); // 4
        pairAminoAlphabet.push_back("IG"); // 5
        pairAminoAlphabet.push_back("IH"); // 6
        pairAminoAlphabet.push_back("II"); // 7
        pairAminoAlphabet.push_back("IK"); // 8
        pairAminoAlphabet.push_back("IL"); // 9
        pairAminoAlphabet.push_back("IM"); // 10
        pairAminoAlphabet.push_back("IN"); // 11
        pairAminoAlphabet.push_back("IP"); // 12
        pairAminoAlphabet.push_back("IQ"); // 13
        pairAminoAlphabet.push_back("IR"); // 14
        pairAminoAlphabet.push_back("IS"); // 15
        pairAminoAlphabet.push_back("IT"); // 16
        pairAminoAlphabet.push_back("IV"); // 17
        pairAminoAlphabet.push_back("IW"); // 18
        pairAminoAlphabet.push_back("IY"); // 19
        pairAminoAlphabet.push_back("I-"); // 20
    
        pairAminoAlphabet.push_back("KA"); // 0
        pairAminoAlphabet.push_back("KC"); // 1
        pairAminoAlphabet.push_back("KD"); // 2
        pairAminoAlphabet.push_back("KE"); // 3
        pairAminoAlphabet.push_back("KF"); // 4
        pairAminoAlphabet.push_back("KG"); // 5
        pairAminoAlphabet.push_back("KH"); // 6
        pairAminoAlphabet.push_back("KI"); // 7
        pairAminoAlphabet.push_back("KK"); // 8
        pairAminoAlphabet.push_back("KL"); // 9
        pairAminoAlphabet.push_back("KM"); // 10
        pairAminoAlphabet.push_back("KN"); // 11
        pairAminoAlphabet.push_back("KP"); // 12
        pairAminoAlphabet.push_back("KQ"); // 13
        pairAminoAlphabet.push_back("KR"); // 14
        pairAminoAlphabet.push_back("KS"); // 15
        pairAminoAlphabet.push_back("KT"); // 16
        pairAminoAlphabet.push_back("KV"); // 17
        pairAminoAlphabet.push_back("KW"); // 18
        pairAminoAlphabet.push_back("KY"); // 19
        pairAminoAlphabet.push_back("K-"); // 20
    
        pairAminoAlphabet.push_back("LA"); // 0
        pairAminoAlphabet.push_back("LC"); // 1
        pairAminoAlphabet.push_back("LD"); // 2
        pairAminoAlphabet.push_back("LE"); // 3
        pairAminoAlphabet.push_back("LF"); // 4
        pairAminoAlphabet.push_back("LG"); // 5
        pairAminoAlphabet.push_back("LH"); // 6
        pairAminoAlphabet.push_back("LI"); // 7
        pairAminoAlphabet.push_back("LK"); // 8
        pairAminoAlphabet.push_back("LL"); // 9
        pairAminoAlphabet.push_back("LM"); // 10
        pairAminoAlphabet.push_back("LN"); // 11
        pairAminoAlphabet.push_back("LP"); // 12
        pairAminoAlphabet.push_back("LQ"); // 13
        pairAminoAlphabet.push_back("LR"); // 14
        pairAminoAlphabet.push_back("LS"); // 15
        pairAminoAlphabet.push_back("LT"); // 16
        pairAminoAlphabet.push_back("LV"); // 17
        pairAminoAlphabet.push_back("LW"); // 18
        pairAminoAlphabet.push_back("LY"); // 19
        pairAminoAlphabet.push_back("L-"); // 20
    
        pairAminoAlphabet.push_back("MA"); // 0
        pairAminoAlphabet.push_back("MC"); // 1
        pairAminoAlphabet.push_back("MD"); // 2
        pairAminoAlphabet.push_back("ME"); // 3
        pairAminoAlphabet.push_back("MF"); // 4
        pairAminoAlphabet.push_back("MG"); // 5
        pairAminoAlphabet.push_back("MH"); // 6
        pairAminoAlphabet.push_back("MI"); // 7
        pairAminoAlphabet.push_back("MK"); // 8
        pairAminoAlphabet.push_back("ML"); // 9
        pairAminoAlphabet.push_back("MM"); // 10
        pairAminoAlphabet.push_back("MN"); // 11
        pairAminoAlphabet.push_back("MP"); // 12
        pairAminoAlphabet.push_back("MQ"); // 13
        pairAminoAlphabet.push_back("MR"); // 14
        pairAminoAlphabet.push_back("MS"); // 15
        pairAminoAlphabet.push_back("MT"); // 16
        pairAminoAlphabet.push_back("MV"); // 17
        pairAminoAlphabet.push_back("MW"); // 18
        pairAminoAlphabet.push_back("MY"); // 19
        pairAminoAlphabet.push_back("M-"); // 20
    
        pairAminoAlphabet.push_back("NA"); // 0
        pairAminoAlphabet.push_back("NC"); // 1
        pairAminoAlphabet.push_back("ND"); // 2
        pairAminoAlphabet.push_back("NE"); // 3
        pairAminoAlphabet.push_back("NF"); // 4
        pairAminoAlphabet.push_back("NG"); // 5
        pairAminoAlphabet.push_back("NH"); // 6
        pairAminoAlphabet.push_back("NI"); // 7
        pairAminoAlphabet.push_back("NK"); // 8
        pairAminoAlphabet.push_back("NL"); // 9
        pairAminoAlphabet.push_back("NM"); // 10
        pairAminoAlphabet.push_back("NN"); // 11
        pairAminoAlphabet.push_back("NP"); // 12
        pairAminoAlphabet.push_back("NQ"); // 13
        pairAminoAlphabet.push_back("NR"); // 14
        pairAminoAlphabet.push_back("NS"); // 15
        pairAminoAlphabet.push_back("NT"); // 16
        pairAminoAlphabet.push_back("nV"); // 17
        pairAminoAlphabet.push_back("NW"); // 18
        pairAminoAlphabet.push_back("NY"); // 19
        pairAminoAlphabet.push_back("N-"); // 20
    
        pairAminoAlphabet.push_back("PA"); // 0
        pairAminoAlphabet.push_back("PC"); // 1
        pairAminoAlphabet.push_back("PD"); // 2
        pairAminoAlphabet.push_back("PE"); // 3
        pairAminoAlphabet.push_back("PF"); // 4
        pairAminoAlphabet.push_back("PG"); // 5
        pairAminoAlphabet.push_back("PH"); // 6
        pairAminoAlphabet.push_back("PI"); // 7
        pairAminoAlphabet.push_back("PK"); // 8
        pairAminoAlphabet.push_back("PL"); // 9
        pairAminoAlphabet.push_back("PM"); // 10
        pairAminoAlphabet.push_back("PN"); // 11
        pairAminoAlphabet.push_back("PP"); // 12
        pairAminoAlphabet.push_back("PQ"); // 13
        pairAminoAlphabet.push_back("PR"); // 14
        pairAminoAlphabet.push_back("PS"); // 15
        pairAminoAlphabet.push_back("PT"); // 16
        pairAminoAlphabet.push_back("PV"); // 17
        pairAminoAlphabet.push_back("PW"); // 18
        pairAminoAlphabet.push_back("PY"); // 19
        pairAminoAlphabet.push_back("P-"); // 20
    
        pairAminoAlphabet.push_back("QA"); // 0
        pairAminoAlphabet.push_back("QC"); // 1
        pairAminoAlphabet.push_back("QD"); // 2
        pairAminoAlphabet.push_back("QE"); // 3
        pairAminoAlphabet.push_back("QF"); // 4
        pairAminoAlphabet.push_back("QG"); // 5
        pairAminoAlphabet.push_back("QH"); // 6
        pairAminoAlphabet.push_back("QI"); // 7
        pairAminoAlphabet.push_back("QK"); // 8
        pairAminoAlphabet.push_back("QL"); // 9
        pairAminoAlphabet.push_back("QM"); // 10
        pairAminoAlphabet.push_back("QN"); // 11
        pairAminoAlphabet.push_back("QP"); // 12
        pairAminoAlphabet.push_back("QQ"); // 13
        pairAminoAlphabet.push_back("QR"); // 14
        pairAminoAlphabet.push_back("QS"); // 15
        pairAminoAlphabet.push_back("QT"); // 16
        pairAminoAlphabet.push_back("QV"); // 17
        pairAminoAlphabet.push_back("QW"); // 18
        pairAminoAlphabet.push_back("QY"); // 19
        pairAminoAlphabet.push_back("Q-"); // 20
    
        pairAminoAlphabet.push_back("RA"); // 0
        pairAminoAlphabet.push_back("RC"); // 1
        pairAminoAlphabet.push_back("RD"); // 2
        pairAminoAlphabet.push_back("RE"); // 3
        pairAminoAlphabet.push_back("RF"); // 4
        pairAminoAlphabet.push_back("RG"); // 5
        pairAminoAlphabet.push_back("RH"); // 6
        pairAminoAlphabet.push_back("RI"); // 7
        pairAminoAlphabet.push_back("RK"); // 8
        pairAminoAlphabet.push_back("RL"); // 9
        pairAminoAlphabet.push_back("RM"); // 10
        pairAminoAlphabet.push_back("RN"); // 11
        pairAminoAlphabet.push_back("RP"); // 12
        pairAminoAlphabet.push_back("RQ"); // 13
        pairAminoAlphabet.push_back("RR"); // 14
        pairAminoAlphabet.push_back("RS"); // 15
        pairAminoAlphabet.push_back("RT"); // 16
        pairAminoAlphabet.push_back("RV"); // 17
        pairAminoAlphabet.push_back("RW"); // 18
        pairAminoAlphabet.push_back("RY"); // 19
        pairAminoAlphabet.push_back("R-"); // 20
    
        pairAminoAlphabet.push_back("SA"); // 0
        pairAminoAlphabet.push_back("SC"); // 1
        pairAminoAlphabet.push_back("SD"); // 2
        pairAminoAlphabet.push_back("SE"); // 3
        pairAminoAlphabet.push_back("SF"); // 4
        pairAminoAlphabet.push_back("SG"); // 5
        pairAminoAlphabet.push_back("SH"); // 6
        pairAminoAlphabet.push_back("SI"); // 7
        pairAminoAlphabet.push_back("SK"); // 8
        pairAminoAlphabet.push_back("SL"); // 9
        pairAminoAlphabet.push_back("SM"); // 10
        pairAminoAlphabet.push_back("SN"); // 11
        pairAminoAlphabet.push_back("SP"); // 12
        pairAminoAlphabet.push_back("SQ"); // 13
        pairAminoAlphabet.push_back("SR"); // 14
        pairAminoAlphabet.push_back("SS"); // 15
        pairAminoAlphabet.push_back("ST"); // 16
        pairAminoAlphabet.push_back("SV"); // 17
        pairAminoAlphabet.push_back("SW"); // 18
        pairAminoAlphabet.push_back("SY"); // 19
        pairAminoAlphabet.push_back("S-"); // 20
    
        pairAminoAlphabet.push_back("TA"); // 0
        pairAminoAlphabet.push_back("TC"); // 1
        pairAminoAlphabet.push_back("TD"); // 2
        pairAminoAlphabet.push_back("TE"); // 3
        pairAminoAlphabet.push_back("TF"); // 4
        pairAminoAlphabet.push_back("TG"); // 5
        pairAminoAlphabet.push_back("TH"); // 6
        pairAminoAlphabet.push_back("TI"); // 7
        pairAminoAlphabet.push_back("TK"); // 8
        pairAminoAlphabet.push_back("TL"); // 9
        pairAminoAlphabet.push_back("TM"); // 10
        pairAminoAlphabet.push_back("TN"); // 11
        pairAminoAlphabet.push_back("TP"); // 12
        pairAminoAlphabet.push_back("TQ"); // 13
        pairAminoAlphabet.push_back("TR"); // 14
        pairAminoAlphabet.push_back("TS"); // 15
        pairAminoAlphabet.push_back("TT"); // 16
        pairAminoAlphabet.push_back("TV"); // 17
        pairAminoAlphabet.push_back("TW"); // 18
        pairAminoAlphabet.push_back("TY"); // 19
        pairAminoAlphabet.push_back("T-"); // 20
    
        pairAminoAlphabet.push_back("VA"); // 0
        pairAminoAlphabet.push_back("VC"); // 1
        pairAminoAlphabet.push_back("VD"); // 2
        pairAminoAlphabet.push_back("VE"); // 3
        pairAminoAlphabet.push_back("VF"); // 4
        pairAminoAlphabet.push_back("VG"); // 5
        pairAminoAlphabet.push_back("VH"); // 6
        pairAminoAlphabet.push_back("VI"); // 7
        pairAminoAlphabet.push_back("VK"); // 8
        pairAminoAlphabet.push_back("VL"); // 9
        pairAminoAlphabet.push_back("VM"); // 10
        pairAminoAlphabet.push_back("VN"); // 11
        pairAminoAlphabet.push_back("VP"); // 12
        pairAminoAlphabet.push_back("VQ"); // 13
        pairAminoAlphabet.push_back("VR"); // 14
        pairAminoAlphabet.push_back("VS"); // 15
        pairAminoAlphabet.push_back("VT"); // 16
        pairAminoAlphabet.push_back("VV"); // 17
        pairAminoAlphabet.push_back("VW"); // 18
        pairAminoAlphabet.push_back("VY"); // 19
        pairAminoAlphabet.push_back("V-"); // 20
    
        pairAminoAlphabet.push_back("WA"); // 0
        pairAminoAlphabet.push_back("WC"); // 1
        pairAminoAlphabet.push_back("WD"); // 2
        pairAminoAlphabet.push_back("WE"); // 3
        pairAminoAlphabet.push_back("WF"); // 4
        pairAminoAlphabet.push_back("WG"); // 5
        pairAminoAlphabet.push_back("WH"); // 6
        pairAminoAlphabet.push_back("WI"); // 7
        pairAminoAlphabet.push_back("WK"); // 8
        pairAminoAlphabet.push_back("WL"); // 9
        pairAminoAlphabet.push_back("WM"); // 10
        pairAminoAlphabet.push_back("WN"); // 11
        pairAminoAlphabet.push_back("WP"); // 12
        pairAminoAlphabet.push_back("WQ"); // 13
        pairAminoAlphabet.push_back("WR"); // 14
        pairAminoAlphabet.push_back("WS"); // 15
        pairAminoAlphabet.push_back("WT"); // 16
        pairAminoAlphabet.push_back("WV"); // 17
        pairAminoAlphabet.push_back("WW"); // 18
        pairAminoAlphabet.push_back("WY"); // 19
        pairAminoAlphabet.push_back("W-"); // 20
    
        pairAminoAlphabet.push_back("YA"); // 0
        pairAminoAlphabet.push_back("YC"); // 1
        pairAminoAlphabet.push_back("YD"); // 2
        pairAminoAlphabet.push_back("YE"); // 3
        pairAminoAlphabet.push_back("YF"); // 4
        pairAminoAlphabet.push_back("YG"); // 5
        pairAminoAlphabet.push_back("YH"); // 6
        pairAminoAlphabet.push_back("YI"); // 7
        pairAminoAlphabet.push_back("YK"); // 8
        pairAminoAlphabet.push_back("YL"); // 9
        pairAminoAlphabet.push_back("YM"); // 10
        pairAminoAlphabet.push_back("YN"); // 11
        pairAminoAlphabet.push_back("YP"); // 12
        pairAminoAlphabet.push_back("YQ"); // 13
        pairAminoAlphabet.push_back("YR"); // 14
        pairAminoAlphabet.push_back("YS"); // 15
        pairAminoAlphabet.push_back("YT"); // 16
        pairAminoAlphabet.push_back("YV"); // 17
        pairAminoAlphabet.push_back("YW"); // 18
        pairAminoAlphabet.push_back("YY"); // 19
        pairAminoAlphabet.push_back("Y-"); // 20
    
        pairAminoAlphabet.push_back("-A"); // 0
        pairAminoAlphabet.push_back("-C"); // 1
        pairAminoAlphabet.push_back("-D"); // 2
        pairAminoAlphabet.push_back("-E"); // 3
        pairAminoAlphabet.push_back("-F"); // 4
        pairAminoAlphabet.push_back("-G"); // 5
        pairAminoAlphabet.push_back("-H"); // 6
        pairAminoAlphabet.push_back("-I"); // 7
        pairAminoAlphabet.push_back("-K"); // 8
        pairAminoAlphabet.push_back("-L"); // 9
        pairAminoAlphabet.push_back("-M"); // 10
        pairAminoAlphabet.push_back("-N"); // 11
        pairAminoAlphabet.push_back("-P"); // 12
        pairAminoAlphabet.push_back("-Q"); // 13
        pairAminoAlphabet.push_back("-R"); // 14
        pairAminoAlphabet.push_back("-S"); // 15
        pairAminoAlphabet.push_back("-T"); // 16
        pairAminoAlphabet.push_back("-V"); // 17
        pairAminoAlphabet.push_back("-W"); // 18
        pairAminoAlphabet.push_back("-Y"); // 19
        pairAminoAlphabet.push_back("--"); // 20
    

    In Java und C++ gibt es 'Schleifen'. Schau dir das mal an.
    Was sollen diese leeren Expressions wie:

    this->pairAminoAlphabet;
    this->aminoAlphabet;
    this->masterMatrix;
    this->depValList;
    

    Danach deine Funktionsköpfe:

    std::string getCurrentSingleEntropy( std::vector<std::string> seqList, int colToCompute );
        std::string getCurrentPairEntropy( std::vector<std::string> seqList, int curCol, int partnerCol );
        std::string getCurrentDependancy( std::string colOneString, std::string colTwoString, std::string colOneTwoString );
    

    Schau dir Call-By-Reference und -*-Value an!
    Den Rest schaue ich mir nicht an, hab die Zeit dazu nicht.



  • Sonst musst du dich in ein Profiler einarbeiten. Dieser mießt dann welchen Funktionaufruf wieviel Zeit gebraucht. Damit kannst du dann gezielt Optimierungüberlegnung anstellen.



  • Hi,

    Also für ne Algo-Optimierung musst du natürlich mehr über den sagen. Was aber generell schon Mal zu sagen ist:

    h2r.cpp:

    aminoAlphabet.push_back("A"); // 0
        aminoAlphabet.push_back("C"); // 1
        aminoAlphabet.push_back("D"); // 2
        aminoAlphabet.push_back("E"); // 3
        aminoAlphabet.push_back("F"); // 4
        aminoAlphabet.push_back("G"); // 5
    

    meh. Bastel Dir ne Methode, welche ein paar Push-Backs auf einmal macht:

    void InsertRange(char start, char end)
    {
    // assert(start < end);
    for(; start != end; ++start)
    aminoAlphabet.push_back(std::string(1, start));
    }
    

    Da das zweite Zeichen bei den Zweizeichen-Inserts ja wie immer zu sein scheint, kannst du der Methode noch ein Präfix geben... allgemein verschachtel mehr in Funktionen anstatt copy&paste ohne Ende zu machen, das macht den Code schlanker und leichter erweiterbar.

    this-> würde ich nie schreiben. Das macht den Code länger und erhöht auch die Entwicklungszeit imo. Man kann Attribute mit Prä- oder Suffixen wie m_ oder _ versehen, um das zu kennzeichnen, wenn man es möchte.

    Was soll dann so was?

    this->pairAminoAlphabet;
    

    Das ist kein Syntaxfehler, aber es hat auch keinen Effekt -> kannste rausschmeißen.

    Strings werden im ctor schon leer initialisiert:

    string pairEntropyStorage = "";
    

    -> = "" kannste dir sparen

    Unschön: Du kommentierst Mal mit Umlauten und Mal ohne, da solltest Du Dich festlegen (und ich sehe keinen Grund gegen Umlaute).

    Dann hab ich nach wie vor keine Ahnung von dem Algo, aber:

    string H2r::getCurrentSingleEntropy(std::vector<std::string> seqList, int colToCompute)
    

    ist eine mögliche Performanceeinbuße ggü. einer Java-Anwendung -> bei C++ werden Objekte nicht automatisch als call by reference übergeben, sondern als call by value, d.h. hier wird dein gesamter vector kopiert. Übergebe den vector am Besten als Referenz

    string H2r::getCurrentSingleEntropy(std::vector<std::string>& seqList, int colToCompute)
    

    und es ist allgemein gut, const-correctness zu beachten: wenn der vector nicht verändert wird, setze ein const davor. Wenn die Methode nichts verändert, setze ebenfalls ein const dahinter:

    string H2r::getCurrentSingleEntropy(const std::vector<std::string> seqList, int colToCompute) const
    

    das ändert allerdings nix an deiner Algo-Performance...

    Wenn die Performance wichtig ist, solltest du generell überlegen, nicht ganze Klassen im vector zu benutzen sondern evtl. nur Zeiger auf die Objekte zu speichern und sie damit auf dem Heap abzulegen, aber gut...

    main.cpp

    Dann, vll persönlicher Geschmack:

    cout << "\n";
        cout << "####################################################\n";
        cout << " H2r - HSRPS-Berechnung \n";
        cout << "####################################################\n";
    

    geht auch als:

    cout << "\n"
             << "####################################################\n"
             << " H2r - HSRPS-Berechnung \n"
             << "####################################################\n";
    

    Das sieht man an vielen Stellen, dass du << nicht verschachtelst, sondern für alles, was du in cout schmeißt, eine eigene (cout << x)-Zeile schreibst. Das ist nicht nötig.

    Und generell diese Monsterfunktionen... die solltest du in mehrere Methoden aufsplitten, finde ich.

    Und dann kenne ich boost zu wenig, aber:

    class Dice {
    public:
    
        // Funktor-Einsatz
        Dice() : engine(std::time(0)) {
        };
    
        // TODO eigentlich sollte das in ein dice.cpp-File, klaeren Operator-Ueberladung
        int operator()(int minIncluded, int maxIncluded) {
            return boost::uniform_int<int>(minIncluded, maxIncluded)(engine);
        }
    
    private:
        boost::mt19937 engine;
    };
    

    möchtest du wirklich bei jedem functor-Einsatz ne eigene mt19937-Klasse instanziieren? engine klingt, als wäre der ctor nicht unbedingt trivial.

    Mehr fällt mir ohne großartige Infos zum Algo nicht ein. Vll. hilft Dir das schon Mal. Überweisung von 1.000 EUR erwarte ich bis Ende nächster Woche. 😛

    Für mehr "C++-Philosophie" solltest Du viel mehr zur Sprache selbst lernen und die von Grund auf betrachten. Java und C++ mögen eine ähnliche Syntax haben, basierend auf Java aber C++ zu lernen, indem man sich nur anschaut, wo die Gemeinsamkeiten und Unterschiede liegen, halte ich für keine gute Idee. Andersrum geht das imo schon eher. Hol Dir am Besten ein Buch oder lies ein gutes Tutorial...

    Ach und was zum Henker studierst Du, dass Du so nen Kram schreiben sollst? Bzw. wo und Bachelor/Master oder was? 🙂



  • Danke, das mit den Funktionsköpfen ist mir bewusst, da sitze ich gerade drüber.

    Ja, die Schleifen kann ich noch einbauen, das stimmt.

    Wie gesagt das Programm arbeitet auf einer Sammlung von Zeichenketten. Die genaueren Hintergründe werden hier keinen interessieren vermute ich, es ist ein Algorithmus aus dem Gebiet Bioinformatik. Die Formeln, also was die einzelnen Methoden berechnen sollen steht in den Kommentaren. Daher denke ich, dass ich nichts erläutern brauche - in Endeffekt muss ich dann ja den kompletten Quellcode erläutern und das wird mir nicht so gut gelingen, wie es die Kommentare im Quellcode tun. Aufkommende Fragen, wenn einer einen Blick in den Code geworfen hat, beantworte ich natürlich gern.

    Ich verlange gar nichts und du musst auch nicht in den Code schauen ...



  • Ich hab jetzt nur die main.cpp überflogen und da ist mir aufgefallen, dass du in den Tests sehr viel redundanten Code hast. Grob gesehen ändern sich immer nur die aufgerufene Methode und der Vergleichswert. Da du im Projekt-Ordner noch eine Java-Version liegen hast und dich C++-Anfänger nennst, vermute ich, dass der Code von Java-Code übertragen wurde. Dabei neigt man schnell dazu in C++ Java-Sachen nachbasteln zu wollen, bzw. will man C++ in ein Java-Korsett zwängen.
    Beim Blick in die h2r.cpp fallen einem gleich die langen push_back-Listen auf. Die sind unnötig und können auch zum Problem werden, falls du mal den Container änderst. Fülle den vector lieber in einer Schleife. Dann überlege dir etwas, wie du extern als Schlüsselwort vermeiden kannst. Zum Beispiel über ein Singleton. Da gibt es einfache Beispiele in der Wikipedia zu. Du solltest Klassen nach Möglichkeit immer nur als Referenz übergeben. Übergebe sie als Kopie, nur wenn du eine Kopie benötigst. Als grobe Richtlinie. Der this-Zeiger wird auch nicht referenziert, du kannst direkt die Variablen verwenden. Vermeide die Verwendung von C-Funktionen. Warum du strtod() nutzt, obwohl du stringstream kennst ist mir ein Rätsel. Auch das ständige kopieren der strings am Anfang von H2r::getCurrentDependancy macht irgendwie kein Sinn? Wenn wir aber schon dabei sind, warum verwendest du strings, wenn du eigentlich double willst?
    Ob man continue verwenden sollte darüber dürfen sich andere auslassen. Ich würde es als legitim durchgehen lassen. Da es aber mit break und goto zusammen gehört werden da einige sicher Konsequenz walten lassen. Wenn du goto nutzen musst, kannst du dir übrigens mit Exceptions behelfen. Sie sind zwar ein noch krasseres goto, weil sie über Funktionsgrenzen hinweg springen können, sie garantieren dir aber, dass deine Objekte ordentlich aufgeräumt werden. Exceptions sollten aber immer das bleiben was sie sind, Ausnahmen.
    Und einigen Variablennamen würde ein aussagekräftigerer Name gut stehen.



  • Uff, danke erstmal an alle ich hock mich nun mal hin und verbessere da vieles und melde mich dann wieder!



  • Eisflamme schrieb:

    Hi,
    Dann, vll persönlicher Geschmack:

    cout << "\n";
        cout << "####################################################\n";
        cout << " H2r - HSRPS-Berechnung \n";
        cout << "####################################################\n";
    

    geht auch als:

    cout << "\n"
             << "####################################################\n"
             << " H2r - HSRPS-Berechnung \n"
             << "####################################################\n";
    

    Das sieht man an vielen Stellen, dass du << nicht verschachtelst, sondern für alles, was du in cout schmeißt, eine eigene (cout << x)-Zeile schreibst. Das ist nicht nötig.

    Wenn schon, dann richtig:

    cout << "\n"
                "####################################################\n"
                " H2r - HSRPS-Berechnung \n"
                "####################################################\n";
    

    Da wird der operator<< nur ein mal aufgerufen und nicht 4 mal, wie bei Dir. 😃



  • Wenn das Funktioniert, wieso? Ist garantiert das die Strings hintereinander im Speicher liegen und ignoriert cout die null terminierung?



  • Das ist ganz normales C++, kein Hack.

    C++03 2.13.4.3 schrieb:

    In translation phase 6 (2.1), adjacent narrow string literals are concatenated and adjacent wide string literals
    are concatenated.


Anmelden zum Antworten