A feladat leírását, melynek a megoldását közzéteszem, innen töltheted le. Az innen letölthető tömörített állományokban megtalálod a Code::Blocks-ban megnyitható projectet, és a feladat a forrásait. A kicsomagoláshoz a 7zip nevű ingyenes programot javaslom.
A feladat megoldása az esetleges központi megoldások logikájától eltérhet. Véleményem szerint nem a trükkös megoldások azok, amelyeket hamarabb kitalál az ember, hanem a több lépésben, de elemi algoritmusok használatával készített megoldás az, amely sok esetben sokkal hamarabb elkészül.
Jöjjön akkor a forráskód:
#include <iostream> #include <fstream> #include <sstream> using namespace std; struct feherje { string rovid; string betu; int c; int h; int o; int n; int s; int mtomeg; string toString() { stringstream ss; ss << rovid << " " << betu << " " << c << " " << h << " " << o << " " << n << " " << s << " " << mtomeg << endl; return ss.str(); } }; feherje keres( string betu, feherje feherjek[], int meret ) { for( int i = 0; i < meret; i++ ) { if( feherjek[i].betu == betu ) { return feherjek[i]; } } return feherjek[0]; } int main() { // 1. feladat int meret = 0; ifstream input("aminosav.txt"); string sor; while( getline(input,sor) ) { meret++; } meret /= 7; feherje feherjek[meret]; input.clear(); input.seekg(0); for( int i = 0; i < meret; i++ ) { input >> feherjek[i].rovid; input >> feherjek[i].betu; input >> feherjek[i].c; input >> feherjek[i].h; input >> feherjek[i].o; input >> feherjek[i].n; input >> feherjek[i].s; // 2. feladat feherjek[i].mtomeg = feherjek[i].c * 12 + feherjek[i].h + feherjek[i].o * 16 + feherjek[i].n * 14 + feherjek[i].s * 32; } input.close(); /* for( int i = 0; i < meret; i++ ) { cout << feherjek[i].toString(); } */ // 3. feladat for( int i = 0; i < meret-1; i++ ) { for( int j = i+1; j < meret; j++ ) { if( feherjek[i].mtomeg > feherjek[j].mtomeg ) { feherje csere = feherjek[i]; feherjek[i] = feherjek[j]; feherjek[j] = csere; } } } ofstream output("eredmeny.txt"); output << "3. feladat" << endl; for( int i = 0; i < meret; i++ ) { output << feherjek[i].rovid << " " << feherjek[i].mtomeg << endl; } // 4. feladat int mdarab[5] = {0}; ifstream input2("bsa.txt"); string s; int kapcs = -1; stringstream bsalanc; while( getline(input2, s) ) { bsalanc << s; feherje f = keres(s,feherjek, meret); mdarab[0] += f.c; mdarab[1] += f.h; mdarab[2] += f.o; mdarab[3] += f.n; mdarab[4] += f.s; kapcs++; } mdarab[1] -= kapcs*2; mdarab[2] -= kapcs; output << endl << "4. feladat" << endl; output << "C " << mdarab[0] << " H " << mdarab[1] << " O " << mdarab[2] << " N " << mdarab[3] << " S " << mdarab[4]; cout << endl << "4. feladat" << endl; cout << "C " << mdarab[0] << " H " << mdarab[1] << " O " << mdarab[2] << " N " << mdarab[3] << " S " << mdarab[4] << endl; // 5. feladat cout << endl << "5. feladat" << endl; int toresdb = 0; string bsa = bsalanc.str(); int hossz = bsa.length(); for( int i = 0; i < hossz; i++ ) { if( bsa[i] == 'Y' || bsa[i] == 'W' || bsa[i] == 'F' ) { toresdb++; } } toresdb++; string lancok[toresdb]; int hely = 0; int elozo = 0; for( int i = 0; i < hossz; i++ ) { if( bsa[i] == 'Y' || bsa[i] == 'W' || bsa[i] == 'F' ) { lancok[hely] = bsa.substr(elozo,i-elozo+1); elozo = i+1; hely++; } } int max = 0; for( int i = 1; i < toresdb; i++ ) { if( lancok[i].length() > lancok[max].length() ) { max = i; } } int kezdet = 0; for( int i = 0; i < max; i++ ) { kezdet += lancok[i].length(); } cout << "hossza: " << lancok[max].length() << " kezdet helye: " << kezdet << " lanc vege: " << kezdet+lancok[max].length() << endl; // 6. feladat cout << endl << "6. feladat" << endl; string elso; int elsohossz; for( int i = 0; i < hossz-1; i++ ) { if( bsa[i] == 'R' && ( bsa[i+1] == 'A' || bsa[i+1] == 'V' ) ) { elso = bsa.substr(0,i+1); elsohossz = i+1; break; } } int dbc = 0; for( int i = 0; i < elsohossz; i++ ) { if( elso[i] == 'C' ) { dbc++; } } cout << "A Factor XI enzim altal hasitott elso darabban " << dbc << " darab Cisztein talalhato." << endl; return 0; }