Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Program jest słabo zooptymalizowany, do tego generuje liczby na każdą z zmiennych osobno.

Ostatnio zmodyfikowano 2017-03-04 17:52
Autor Wiadomość
tomasz532
Temat założony przez niniejszego użytkownika
[C++] Program jest słabo zooptymalizowany, do tego generuje liczby na każdą z zmiennych osobno.
» 2017-03-04 17:20:38
Witam. Mam problem, a dokładniej ze złą optymalizacją ( ten kod spowalnia strasznie kompilator ), czy mógłby ktoś poprawić kod , tak, żeby program nie musiał losować liczb  , jedną na każdą zmienną osobno (a przy okazji trochę odciążyć komputer)?
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;


int Terrain;
/* ta wartość jest do for, wskazuje ile razy ma maszyna losować */
int Generator1;
int Generator2;
int Generator3;
int Generator4;
int Generator5;
int Generator6;
int Generator7;
int Generator8;
int Generator9;
int Generator10;
int Generator11;
int Generator12;
/* Zmienne do generowania i przechowywania liczb */
int Nothing;
/* Zmienna do niczego, tylko po to aby zająć std::cin */
int main()
{
    srand( time( NULL ) );
    for( Terrain = 1; Terrain <= 10; ) {
        Generator1 =( std::rand() % 5 ) + 1;
        Generator2 =( std::rand() % 5 ) + 1;
        Generator3 =( std::rand() % 5 ) + 1;
        Generator4 =( std::rand() % 5 ) + 1;
        Generator5 =( std::rand() % 5 ) + 1;
        Generator6 =( std::rand() % 5 ) + 1;
        Generator7 =( std::rand() % 5 ) + 1;
        Generator8 =( std::rand() % 5 ) + 1;
        Generator9 =( std::rand() % 5 ) + 1;
        Generator10 =( std::rand() % 5 ) + 1;
        Generator11 =( std::rand() % 5 ) + 1;
        Generator12 =( std::rand() % 5 ) + 1;
        /* Ten kawałek mnie najbardziej irytuje, dodatkowo strasznie spowalnia kompilator*/
        cout << Generator1 << Generator2 << Generator3 << Generator4 << Generator5 << Generator6 << Generator7 << Generator8 << Generator9 << Generator10 << Generator11 << Generator12 << endl;
        /* Najdłuższa linijka ze tego wszystkiego. Inaczej (chyba) nie da się zrobić. */
        Terrain++;
        /* Dodaje 1 do Terrain */
    }
    std::cin >> Nothing;
    /* Tylko po to, aby zatrzymać program , do niczego nie przydatna */
    return 0;
}
P-158515
maly7
» 2017-03-04 17:52:09
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int main()
{
    int Nothing;
    srand( time( NULL ) );
    for( int Terrain = 0; Terrain < 10; Terrain++ )
    {
        for( int Terrain2 = 0; Terrain2 < 12; Terrain2++ )
             cout << rand() % 5 + 1;
       
        cout << endl;
    }
    std::cin >> Nothing;
    return 0;
}

Jeśli chcesz faktycznie losować tyle liczb, to przy każdej rand się przydaje, nie skrócisz tego.
Po co tyle zmiennych globalnych, jeśli losowe liczby musisz zapisywać możesz utworzyć jedną tablice, jeśli tylko wypisywać, zmienna nie potrzebna.
Po co na końcu terrain++ skoro pętla for robi to za ciebie.

Najlepiej powiedz jakie liczby ma losować i w jaki sposób, wtedy będzie można coś myśleć.
P-158516
« 1 »
  Strona 1 z 1