sfml+zwykle C++

0

Mam 2 działające programy i chcę połączyć je w jeden ale nie wiem jak. Program albo wyświetla mi rysunek z sfml i nic w drugim oknie albo jakieś bzdury w pierwszym i nic nie rysuje oto działające kody:

#include <iostream>
#include <fstream>
#include <cmath>

using namespace std;

int liczR(char name[]){
    ifstream p;
    string tmp;
    int i=0;
        p.open(name);
        while(p.good())
        {
            getline(p,tmp);
            i++;
        }
        p.close();
    return i;
}

int liczC(char name[]){
    ifstream p;
    char c;
    int i=0,tmp;
        p.open(name);
        while(p.good())
        {
            p >> tmp;
            p.get(c);
            i++;
            if(c=='\n')break;
        }
        p.close();
    return i;
}

int** generuj(int R, int C){
    int **tmp;

    tmp = new int *[R];

    for (int i = 0; i < R; i++)
        tmp[i] = new int [C];

    return tmp;
}

//czytaj
int** czytaj(char name[],int* R,int* C){
int** tmp;
ifstream p;
*R=liczR(name);
*C=liczC(name);
tmp=generuj(*R,*C);
p.open(name);

for(int i=0;i<*R;i++){
    for(int j=0;j<*C;j++){
        p>>tmp[i][j];
        p.get();
        }
}
p.close();
return tmp;
}

//oblicz

void oblicz(float* wsk,int**tab,int R,int C,int S){
    for (int i=0;i<49;i++) wsk [i]=0;
    for (int i=0;i<R;i++)
        for(int j=S-1;j<C;j++)
        wsk[tab[i][j]-1]++;
    for(int i=0;i<49;i++)
        wsk[i]/=R/100;
    }


//extrema

void extrema(float* wsk,float* wmin,float* wmax){
    float ymin=100;
    float ymax=0;
    float tmp;

    for (int i=0;i<49;i++){
        tmp=wsk[i];
        if(tmp<ymin)ymin=tmp;
        if(tmp>ymax)ymax=tmp;
    }
    *wmin=ymin;
    *wmax=ymax;
    }


//zapisz

int main(){

int **tab, R,C;
float *wsk, wynik[49],wmin,wmax;
char fileO[]={"lotto.csv"};
char fileZ[]={"wyniki.csv"};
wsk=wynik;

tab = czytaj(fileO,&R,&C);
for (int i=0;i<R;i++){
    for (int j=0;j<C;j++){
    cout <<tab[i][j]<<";";
    }
    cout << endl;
}

oblicz(wsk,tab,R,C,5);
for (int i=0;i<49;i++){
    cout<<i+1<<"->"<<wynik[i]<<"%"<<endl;
}

extrema(wsk, &wmin, &wmax);
cout<<"minimum:"<<wmin<<"~"<<floor(wmin)<<endl;
cout<<"maksimum:"<<wmax<<"~"<<ceil(wmax)<<endl;

//TUTAJ JESZCZE WYŚWIETLANIE W KONSOLI :)

/*
if(zapisz(wsk,fileZ)==0)
    cout << endl << "SAVE SUKCES" << endl;
else
    cout << "SAVE ERROR" << endl;
*/

delete [] tab;
return 0;
}

Program zczytuje wartości z dokumentu e excelu i je analizuje

#include <SFML/Graphics.hpp>
#define xMAX 1200
#define yMAX 600
#define odleglosc 100
#define rozmiar_strzalki 30

int main()
{

    // Create the main window
    sf::RenderWindow window(sf::VideoMode(xMAX, yMAX), "SFML window");

    sf::VertexArray linie(sf::Lines);
    //for (int x=0; x<400; x+=100)
    //ramka
        linie.append(sf::Vector2f(odleglosc, odleglosc)); // pocz±tek
        linie.append(sf::Vector2f(odleglosc, yMAX-odleglosc)); // koniec

        linie.append(sf::Vector2f(odleglosc, yMAX-odleglosc)); // pocz±tek
        linie.append(sf::Vector2f(xMAX-odleglosc, yMAX-odleglosc)); // koniec

        linie.append(sf::Vector2f(xMAX-odleglosc, yMAX-odleglosc)); // pocz±tek
        linie.append(sf::Vector2f(xMAX-odleglosc, odleglosc)); // koniec

        linie.append(sf::Vector2f(xMAX-odleglosc, odleglosc)); // pocz±tek
        linie.append(sf::Vector2f(odleglosc, odleglosc)); // koniec

//--------------------------------------------------------------------------------------
    //os
    linie.append(sf::Vector2f(xMAX/2, odleglosc)); // pocz±tek
    linie.append(sf::Vector2f(xMAX/2, yMAX-odleglosc)); // koniec linia pionowa

    linie.append(sf::Vector2f(odleglosc,yMAX/2)); // poczatek
    linie.append(sf::Vector2f(xMAX-odleglosc, yMAX/2)); // koniec linia pozioma

//--------------------------------------------------------------------------------------
    //strza³ki
    sf::VertexArray strzalki(sf::Triangles);

    strzalki.append(sf::Vector2f(xMAX/2, odleglosc)); // trojkat
    strzalki.append(sf::Vector2f(xMAX/2+rozmiar_strzalki, odleglosc + rozmiar_strzalki)); // trojkat
    strzalki.append(sf::Vector2f(xMAX/2-rozmiar_strzalki, odleglosc + rozmiar_strzalki)); // trojkat gorna strzalka

    strzalki.append(sf::Vector2f(xMAX-odleglosc, yMAX/2)); // trojkat
    strzalki.append(sf::Vector2f(xMAX-rozmiar_strzalki-odleglosc, yMAX/2+rozmiar_strzalki)); // trojkat
    strzalki.append(sf::Vector2f(xMAX-rozmiar_strzalki-odleglosc, yMAX/2-rozmiar_strzalki)); // trojkat boczna sztralka

//--------------------------------------------------------------------------------------
    // Start the game loop
    while (window.isOpen())
    {
        // Process events
        sf::Event event;
        while (window.pollEvent(event))
        {
            // Close window : exit
            if (event.type == sf::Event::Closed)
                window.close();
        }

        // Clear screen
        window.clear();

        window.draw(linie);
        window.draw(strzalki);

        // Update the window
        window.display();
    }

    return EXIT_SUCCESS;
}

Ten program rysuje mi układ kartezjański

0

Tak skleiłem kod i nie działa....

#include <SFML/Graphics.hpp>
#define xMAX 1200
#define yMAX 600
#define odleglosc 100
#define rozmiar_strzalki 30
#include <iostream>
#include <fstream>
#include <cmath>

using namespace std;

int liczR(char name[]){
    ifstream p;
    string tmp;
    int i=0;
        p.open(name);
        while(p.good())
        {
            getline(p,tmp);
            i++;
        }
        p.close();
    return i;
}

int liczC(char name[]){
    ifstream p;
    char c;
    int i=0,tmp;
        p.open(name);
        while(p.good())
        {
            p >> tmp;
            p.get(c);
            i++;
            if(c=='\n')break;
        }
        p.close();
    return i;
}

int** generuj(int R, int C){
    int **tmp;

    tmp = new int *[R];

    for (int i = 0; i < R; i++)
        tmp[i] = new int [C];

    return tmp;
}

//czytaj
int** czytaj(char name[],int* R,int* C){
int** tmp;
ifstream p;
*R=liczR(name);
*C=liczC(name);
tmp=generuj(*R,*C);
p.open(name);

for(int i=0;i<*R;i++){
    for(int j=0;j<*C;j++){
        p>>tmp[i][j];
        p.get();
        }
}
p.close();
return tmp;
}

//oblicz

void oblicz(float* wsk,int**tab,int R,int C,int S){
    for (int i=0;i<49;i++) wsk [i]=0;
    for (int i=0;i<R;i++)
        for(int j=S-1;j<C;j++)
        wsk[tab[i][j]-1]++;
    for(int i=0;i<49;i++)
        wsk[i]/=R/100;
    }


//extrema

void extrema(float* wsk,float* wmin,float* wmax){
    float ymin=100;
    float ymax=0;
    float tmp;

    for (int i=0;i<49;i++){
        tmp=wsk[i];
        if(tmp<ymin)ymin=tmp;
        if(tmp>ymax)ymax=tmp;
    }
    *wmin=ymin;
    *wmax=ymax;
    }

int main()
{

    // Create the main window
    sf::RenderWindow window(sf::VideoMode(xMAX, yMAX), "SFML window");

    sf::VertexArray linie(sf::Lines);
    //for (int x=0; x<400; x+=100)
    //ramka
        linie.append(sf::Vector2f(odleglosc, odleglosc)); // pocz±tek
        linie.append(sf::Vector2f(odleglosc, yMAX-odleglosc)); // koniec

        linie.append(sf::Vector2f(odleglosc, yMAX-odleglosc)); // pocz±tek
        linie.append(sf::Vector2f(xMAX-odleglosc, yMAX-odleglosc)); // koniec

        linie.append(sf::Vector2f(xMAX-odleglosc, yMAX-odleglosc)); // pocz±tek
        linie.append(sf::Vector2f(xMAX-odleglosc, odleglosc)); // koniec

        linie.append(sf::Vector2f(xMAX-odleglosc, odleglosc)); // pocz±tek
        linie.append(sf::Vector2f(odleglosc, odleglosc)); // koniec

//--------------------------------------------------------------------------------------
    //os
    linie.append(sf::Vector2f(xMAX/2, odleglosc)); // pocz±tek
    linie.append(sf::Vector2f(xMAX/2, yMAX-odleglosc)); // koniec linia pionowa

    linie.append(sf::Vector2f(odleglosc,yMAX/2)); // poczatek
    linie.append(sf::Vector2f(xMAX-odleglosc, yMAX/2)); // koniec linia pozioma

//--------------------------------------------------------------------------------------
    //strza³ki
    sf::VertexArray strzalki(sf::Triangles);

    strzalki.append(sf::Vector2f(xMAX/2, odleglosc)); // trojkat
    strzalki.append(sf::Vector2f(xMAX/2+rozmiar_strzalki, odleglosc + rozmiar_strzalki)); // trojkat
    strzalki.append(sf::Vector2f(xMAX/2-rozmiar_strzalki, odleglosc + rozmiar_strzalki)); // trojkat gorna strzalka

    strzalki.append(sf::Vector2f(xMAX-odleglosc, yMAX/2)); // trojkat
    strzalki.append(sf::Vector2f(xMAX-rozmiar_strzalki-odleglosc, yMAX/2+rozmiar_strzalki)); // trojkat
    strzalki.append(sf::Vector2f(xMAX-rozmiar_strzalki-odleglosc, yMAX/2-rozmiar_strzalki)); // trojkat boczna sztralka

//--------------------------------------------------------------------------------------
    //funkcja


    int **tab, R,C;
float *wsk, wynik[49],wmin,wmax;
char fileO[]={"lotto.csv"};
char fileZ[]={"wyniki.csv"};
wsk=wynik;

tab = czytaj(fileO,&R,&C);
for (int i=0;i<R;i++){
    for (int j=0;j<C;j++){
    cout <<tab[i][j]<<";";
    }
    cout << endl;
}

oblicz(wsk,tab,R,C,5);
for (int i=0;i<49;i++){
    cout<<i+1<<"->"<<wynik[i]<<"%"<<endl;
}

extrema(wsk, &wmin, &wmax);
cout<<"minimum:"<<wmin<<"~"<<floor(wmin)<<endl;
cout<<"maksimum:"<<wmax<<"~"<<ceil(wmax)<<endl;

//TUTAJ JESZCZE WYŚWIETLANIE W KONSOLI :)

/*
if(zapisz(wsk,fileZ)==0)
    cout << endl << "SAVE SUKCES" << endl;
else
    cout << "SAVE ERROR" << endl;
*/

delete [] tab;


//--------------------------------------------------------------------------------------
    // Start the game loop
    while (window.isOpen())
    {
        // Process events
        sf::Event event;
        while (window.pollEvent(event))
        {
            // Close window : exit
            if (event.type == sf::Event::Closed)
                window.close();
        }

        // Clear screen
        window.clear();

        window.draw(linie);
        window.draw(strzalki);

        // Update the window
        window.display();
    }

    return EXIT_SUCCESS;
}
0

Ehhh jak zwykle to co trudne ogarnięte a najłatwiejsze zapominam xD
zapomnialem skopiowac dokument excela do nowej lokalizacji w pliku sfml

1 użytkowników online, w tym zalogowanych: 0, gości: 1