Pereiti prie turinio

vytkiuxz

Nariai
  • Pranešimai

    17
  • Užsiregistravo

  • Lankėsi

  • Atsiliepimai

    0%

Reputacijos išklotinė

  1. Patinka
    vytkiuxz gavo reakciją nuo dromey Informatikos VBE ir išmok c++   
    Perziurejau koda. Viska darai negerai. Neefektyviai naudoji kompo resursus. Apkrauni programa nereikalingais darbais.
    Imetu savo perdaryta koda. Pasianalizuok.
     
    Pagrindines problemos:
    Kam kas kart rikiuoji sarasa? Saraso rykiavimas ypac tavo metodais uzima daug laiko ir yra labai neefektyvus.
    Tarkim sarase yra pateikti 5 dievai, taciau tu vistiek sukuri masyva su 50 eiluciu. Kur cia logika?
     
    Struktura:

    struct Dievai { string vardas; int kauliukai[10],kauliuku,taskai,lyginiai,eile;
     
    Pirmiausia tai turetu vadintis dievas nes apraso tik viena dieva.
    Kodel masyvas kauliukai yra 10 elementu ilgio, jeigu ju gali buti 3.
    Kodel isvis laikai visus taskus strukturoj, jie po tasku suskaiciavimo nenaudojami.
    Kauliuku kiekis visoms eilutems vienodas, tai kodel tu saugai kiekvienam irasui atskirame lauke. 1 int laukas uzima 4 baitus taigi jeigu tu turesi 50 irasu tu prarandi 200 baitu ramo vietos visiskai bereikalingai.
     
    Ir iki visiskos tobulybes masyva reiketu nunulint kai darbas baigtas.
     
    Tikiuos ne per daug kritikos. :)
     
     
     

    #include <iostream> #include <fstream> #include <string> using namespace std; struct Dievas { string vardas; int taskai; int lyginiai; }; Dievas *dievai; int kaul_sk, diev_sk; bool isEven(int number) { if ( number % 2 == 0) return true; else return false; } int rastiLaimetoja() { int win_points = dievai[0].taskai, win_even = dievai[0].lyginiai, win_id = 0; for (int i = 1; i < diev_sk; i++) { if (win_points < dievai[i].taskai) { win_id = i; win_points = dievai[i].taskai; win_even = dievai[i].lyginiai; } else if (win_points == dievai[i].taskai && win_even < dievai[i].lyginiai) { win_id = i; win_points = dievai[i].taskai; win_even = dievai[i].lyginiai; } } return win_id; } void readData() { ifstream Duomenys("U1.txt"); Duomenys >> diev_sk >> kaul_sk; int points; dievai = new Dievas[diev_sk]; for (int i = 0; i < diev_sk; i++) { Duomenys >> dievai[i].vardas; dievai[i].lyginiai = 0; dievai[i].taskai = 0; for (int j = 0; j < kaul_sk; j++) { Duomenys >> points; if (isEven(points)) { dievai[i].taskai += points; dievai[i].lyginiai++; } else dievai[i].taskai -= points; } } Duomenys.close(); } void Irasyti(int win) { ofstream rez("rez.txt"); rez << dievai[win].vardas << " " << dievai[win].taskai; rez.close(); } void main() { readData(); for (int i = 0; i < diev_sk; i++) cout <<dievai[i].vardas <<" "<<dievai[i].taskai<<" "<<dievai[i].lyginiai<<"\n"; int win = rastiLaimetoja(); cout<<"\nLaimejo:\n"; cout <<dievai[win].vardas <<" "<<dievai[win].taskai<<" "<<dievai[win].lyginiai<<"\n"; Irasyti(win); dievai = NULL; int a; cin>>a; }
×
×
  • Pasirinkite naujai kuriamo turinio tipą...