Połączenie kodu w C++ z interfejsem graficznym

0

Witam,
mam za zadanie napisać program, który będzie współbieżnie realizował dowolne złożone współbieżne zadanie obliczeniowe w OpenMP. Ponadto program musi posiadać prosty interfejs (trackbary, spinboxy, cokolwiek), w którym w czasie rzeczywistym będzie można modyfikować parametry zrównoleglenia (m.in. parametry w pragmach, liczbę sekcji, ziarnistość, cokolwiek) tego konkretnego algorytmu. Postanowiłem wykorzystać obliczanie interpolacji Newtona. Program został napisany w C++, w Visual Studio. Czy przy okazji mógłby ktoś sprawdzić, czy prawidłowo użyłem pragmy?
Mam już napisany kod w C++, oraz stworzony prosty interfejs. Niestety nie wiem jak to teraz ze sobą połączyć (np. wpisywanie w pole odpowiedniego współczynnika x0 lub okno w którym znajduj się wynik). Ponadto nie wiem w jaki sposób mogę zmodyfikować potrzebne parametry (m.in. parametry w pragmach, liczbę sekcji, ziarnistość) oprócz wpisywania wartości w pola.
Oto kod w C++:

#include <cstdlib>
#include <math.h>
#include <iostream>
#include <omp.h>
using namespace std; int main(int argc, char *argv[])
{
    int n;
    cout << "Podaj stopien wielomianu:\n";    
        do    {
            cin >> n;
    } while((n<1)||(n>10000));
    double x[n];    double c[n];
    cout << "Podaj wezly i wartosci:\n";    for(int i=0;i<n;i++)
    {
                cout << " x" << i << ": ";                cin >> x[i];
                cout << " y" << i << ": ";
                cin >> c[i];        }
 
 #pragma omp parallel 
 
 for(int k=1;k<n;k++)    {
               for(int i=n;i>k;i--)
               {
                     c[i] = (c[i] - c[i-1])/(x[i]-x[i-k]);//te 2 petle trzeba zamienic               }
    } 
    cout << "W(x) = ";
    for(int i=0;i<n;i++)    {
                cout << c[i];
                for(int j=0;j<i;j++)            {
                        cout << "(x";                        if(x[j]>0) cout << "-";
                        else cout << "+";
                    cout << fabs(x[j]) << ")";
            }                if(i!=n-1)cout<<"+";        }
    cout<<endl;
 
 
    }
system("PAUSE");
return 0;
}
    }
 

A oto interfejs:
user image.
Proszę o pomoc i wyrozumiałość.

2

Po prostu napisz ten kod od nowa, tak aby pasował pod interfejs graficzny - zadaj konkretne pytanie.
(i tak musiałbyś go przepisać, ponieważ jest nieczytelny jak cholera... plus double c[n]; - n nie jest stałą, więc nie możesz tak napisać.)

0

Czyli konkretny kod dopasowuje do odpowiedniego elementu? Jak to potem zapisać aby powstał z tego plik exe? Jak mam inaczej opisać n? Czy w tym programie prawidłowo została użyta pragma? W jaki sposób w programie mogę w czasie rzeczywisty modyfikować parametry zrównoleglenia?

0

Jak mam inaczej opisać n?

Dlaczego miałbyś inaczej opisywać n?

Czy w tym programie prawidłowo została użyta pragma?

Powinno być #pragma omp parallel for, sugerując się dokumentacją.

W jaki sposób w programie mogę w czasie rzeczywisty modyfikować parametry zrównoleglenia?

http://stackoverflow.com/questions/5605620/openmp-dynamic-loop-decomposition-in-chunks

Odnośnie reszty pytań:
Masz pojęcie o pisaniu aplikacji okienkowych?
Z Twoich postów wynika, że nie - a w takim wypadku jedyną słuszną odpowiedzią jest "przeczytaj jakiś tutorial/książkę na ten temat".

0

Dziękuje za odpowiedz, niestety aplikację z interfejsem piszę pierwszy raz.

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