[ Príspevkov: 8 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.04.13
Prihlásený: 17.04.13
Príspevky: 3
Témy: 1 | 1

Dobry den,
mam takyto problem: vytvoril som si program v c++, klasicky konzolovy. Pouzivam v nom len polia a premenne, nemam tam triedy. Robil som to do skoly ako projekt a veduci mi povedal, ze mam pre to vytvorit graficke rozhranie. Pozeral som na nete, ako sa to da spravit. skusal som Qt creator, lenze ked nemam triedy tak s tym velmi nepochodim, hladal som aj riesenia na googly a nic vhodne som nenasiel.
V principe by to graficke rozhranie malo byt jednoduche: nabehne uvodne okno kde zadam pociatocne hodnoty, na zaklade tych hodnot sa vypise tabulka a do tej tabulky zadam hodnoty, tie hodnoty sa mi budu ukladat do pola a na konci sa to pole vypise ako tabulka aj s hodnotami.
Preto sa pytam, co by ste mi poradili, cez aky program to urobit, respektive aku kniznicu pouzit.

Tu je moj kod, je tam toho viac, ale v principe do premennej pocet_stavov a n zadam rozmery pola, a na zaklade rozmerov by sa vytvorila tabulka, a kazde policko tabulky by bol 1 prvok v poli.
Spoiler: zobraziť
Kód:
#include <cstdlib>
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
#include <math.h>

using namespace std;
int main(int argc, char *argv[])
{
    char volba;
    bool chyba = false;
    do
    {
       cout << "Program sluzi na minimalizaciu uplne urceneho konecneho automatu." << endl;
       vector< vector<int> > max_triedy;
       //pocet stavov
       int pocet_stavov = 0, minimum = 0, maximum = 0, min = 0, abeceda = 0, n = 0, m = 0, q = 0;
       do
       {
          cout << endl << "Zadajte pocet stavov automatu[musi byt vacsi ako 1]: ";
          cin >> pocet_stavov;
          if( !cin )
          {
             cout << "Zadali ste znak alebo zlu hodnotu!" << endl;
             cin.clear();
             cin.ignore( 1000, '\n' );
             pocet_stavov = -1;
          }
       }
       while( pocet_stavov < 1 );
       do
       {
          cout << "Zadajte pocet vstupov[z intervalu <0,3>]: ";
          cin >> n;
          if( !cin.good() || n < -1 || n > 3 )
          {
             cout << "Zadali ste znak alebo zlu hodnotu!" << endl;
             cin.clear();
             cin.ignore( 1000, '\n' );
             n = -2;
          }
       }
       while( !cin.good() || n < -1 || n > 3 );
       do
       {
          cout << "Zadajte pocet vystupov[z intervalu <1,8>]: ";
          cin >> q;
          if( !cin.good() || q < -1 || q > 3 )
          {
             cout << "Zadali ste znak alebo zlu hodnotu!" << endl;
             cin.clear();
             cin.ignore( 1000, '\n' );
             q = -2;
          }
       }
       while( !cin.good() || q < -1 || q > 3 );
       abeceda = ( int ) pow( 2 , n );
       m = ( int ) pow( 2 , q );
       maximum = pocet_stavov - 1;
       min = minimum;
       int prechody[ pocet_stavov ][ abeceda ];
       int vystupy[ pocet_stavov ][ m ];
       //Zadavanie povodneho automatu
       cout << endl << "Stavy musia byt z intervalu < 0 , " << maximum << " > a vystupy musia byt vacsie ako 0.";
       cout << endl << "Zadavanie prechodovej tabulky povodneho automatu" << endl;
       cout << "STAV \t   Vstup \t  Vystup" << endl;
       cout << "\t";
       for( int i = 0; i < abeceda; i++)
       cout << i << "\t";
       for( int i = 0; i < m; i++)
       cout << i << "\t";
       cout << endl;
       for( int i = 0; i < pocet_stavov; i++ )
       {
          cout << minimum << "\t";
          for( int j = 0; j < abeceda; j++ )
          {
             do
             {
                chyba = false;
                cin >> prechody[ i ][ j ];
                if( prechody[ i ][ j ] < min || prechody[ i ][ j ] > maximum )
                chyba = true;
                if( !cin.good() || chyba == true )
                {
                   cin.clear();
                   cout << endl << "Zadali ste znak alebo zlu honotu!" << endl;
                   cin.ignore( 1000, '\n' );
                   chyba = true;
                }
             }
             while( !cin.good() || chyba == true );
             chyba = false;
          }
          for( int j = 0; j < m; j++ )
          {
             do
             {
                chyba = false;
                cin >> vystupy[ i ][ j ];
                if( vystupy[ i ][ j ] < 0 )
                chyba = true;
                if( !cin.good() || chyba == true )
                {
                   cin.clear();
                   cout << endl << "Zadali ste znak alebo zlu honotu!" << endl;
                   cin.ignore( 1000, '\n' );
                   chyba = true;
                }
             }
             while( !cin.good() || chyba == true );
             chyba = false;
          }
          minimum++;
       }
       minimum = min;
       int imptab[ pocet_stavov ][ pocet_stavov][ 2 * abeceda ];
       bool nachadza = false;
       //tvorba implikacnej tabulky
       char impF[ pocet_stavov ][ pocet_stavov ];
       for( int i = 1; i < pocet_stavov; i++ )
       {
          for( int j = 0; j < pocet_stavov; j++ )
          {
             impF[ i ][ j ] = '1';
          }
       }
       for( int i = 0; i < pocet_stavov; i++ )
       {
          nachadza = false;
          for( int k = 0; k < pocet_stavov; k++ )
          {
             for( int j = 0; j < m; j++ )
             {
                if( vystupy[ i ][ j ] == vystupy[ k ][ j ] )
                nachadza = true;
                else
                {
                   nachadza = false;
                   break;
                }
             }
             if( nachadza == true )
             {
                impF[ i ][ k ] = '1';
                for( int in = 0; in < abeceda; in++ )
                {
                   imptab[ i ][ k ][ 2 * in ] = prechody[ i ][ in ];
                   imptab[ i ][ k ][ ( 2 * in ) + 1 ] = prechody[ k ][ in ];
                }
             }
             else
             {
                impF[ i ][ k ] = 'X';
                for( int l = 0; l < 2 * abeceda; l++ )
                imptab[ i ][ k ][ l ] = 0;
             }
          }
       }
       bool zmena = false;
       do
       {
          zmena = false;
          for( int i = 0; i < pocet_stavov; i++ )
          {
             for( int j = 0; j < pocet_stavov; j++ )
             {
                if( impF[ i ][ j ] == 'X' )
                {
                   for( int d = 0; d < pocet_stavov; d++)
                   {
                      for( int k = 0; k < pocet_stavov; k++ )
                      {
                         if( impF[ d ][ k ] != 'X' )
                         {
                            for( int l = 0; l < abeceda; l++ )
                            {
                               if( ( imptab[ d ][ k ][ 2 * l ] == i && imptab[ d ][ k ][ ( 2 * l ) + 1 ] == j ) || ( imptab[ d ][ k ][ 2 * l ] == j && imptab[ d ][ k ][ ( 2 * l ) + 1 ] == i ) )
                               {
                                  impF[ d ][ k ] = 'X';
                                  zmena = true;
                                  break;
                               }
                            }
                         }
                      }
                   }
                }
             }
          }
       }
       while( zmena == true );
       cout << endl;
       int a = 1;
       //urcenie ci je povodny automat minimaly
       a = 1;
       int pocet = 0;
       for( int i = 1; i < pocet_stavov; i++ )
       {
          for( int j = 0; j < a; j++ )
          {
             if( impF[ i ][ j ] != 'X' )
             pocet++;
          }
          a++;
       }
       if( pocet == 0)
       {
          cout << "Povodny automat" << endl;
          cout << "STAV \t   Vstup \t  Vystup" << endl;
          cout << "\t";
          for( int i = 0; i < abeceda; i++)
          cout << i << "\t";
          for( int i = 0; i < m; i++)
          cout << i << "\t";
          cout << endl;
          minimum = min;
          for( int i = 0; i < pocet_stavov; i++ )
          {
             cout << minimum << "\t";
             for( int j = 0; j < abeceda; j++ )
             {
                cout << prechody[ i ][j ] << "\t";
             }
             for( int j = 0; j < m; j++ )
             {
                cout << vystupy[ i ][j ] << "\t";
             }
             cout << endl;
             minimum++;
          }
          cout << endl << "Zadany automat je minimalny.";
       }
       else
       {
          //Maximalne triedy
          for( int u = 0; u < pocet_stavov; u++)
          {
             if( u >= max_triedy.size() )
             max_triedy.resize( u + 1 );
             max_triedy[ u ].push_back( 'A' + u );
          }
       int index = 0, icko = 0, krat = 0, hodnota = 0;
       for( int i = pocet_stavov - 2; i >= 0; i--)
       {
          for( int j = pocet_stavov - 1; j > i; j-- )
          {
             if( impF[j][i] == '1' )
             {
                if( icko ==  0)
                {
                   max_triedy[ index ].push_back( i );
                   max_triedy[ index ].push_back( j );
                   icko++;
                }
                else
                max_triedy[ index ].push_back( j );
             }
          }
          if ( max_triedy[ index ].size() >= 2 )
          {
             for ( int h = 0; h < index; h++ )
             {
                if ( max_triedy[ h ].size() < 2 )
                continue;
                for( int g = 1; g < max_triedy[ h ].size(); g++ )
                {
                   if( max_triedy[ h ][ g ] == max_triedy[ index ][ 2 ] )
                   {
                      max_triedy[ h ].push_back(max_triedy[ index ][ 1 ]);
                      max_triedy[ index ].erase( max_triedy[ index ].begin() + 1, max_triedy[ index ].end() );
                      index--;
                      break;
                   }
                }
                if(max_triedy[index].size()<2)
                break;
             }
          }
          if ( icko ) index++;
          icko = 0; krat = 0;
       }
       vector<int> isnt;
       bool zhoda = false;
       int stavy[ pocet_stavov ];
       for( int i = 0; i < pocet_stavov; i++ )
       {
          stavy[ i ] = i;
       }
       for( int i = 0; i < pocet_stavov; i++ )
       {
          zhoda = false;
          for( int vec = 0; vec < max_triedy.size(); vec++ )
          {
             for( int pos = 1; pos < max_triedy[ vec ].size(); pos++ )
             {
                if( max_triedy[ vec ][ pos ] == stavy[ i ] )
                {
                   zhoda = true;
                   break;
                }
             }
          }
          if( zhoda == false)
          isnt.push_back( stavy[ i ] );
       }
       for( int i = 0; i < isnt.size(); i++ )
       {
          for( int vec = 0; vec < max_triedy.size(); vec++ )
          {
             if( max_triedy[ vec ].size() == 1 )
             {
                max_triedy[ vec ].push_back( isnt[ i ] );
                break;
             }
          }
       }
       for( int vec = 0; vec < max_triedy.size(); vec++ )
       {
          if( max_triedy[ vec ].size() == 1 )
          {
             max_triedy.erase( max_triedy.begin() + vec, max_triedy.end() );
             break;
          }
       }
       char automat[ pocet_stavov ][ abeceda ];
       char min_automat[ max_triedy.size() ][ abeceda ];
       int min_automatV[ max_triedy.size() ][ m ];
      int y;
       for( int i = 0; i < pocet_stavov; i++ )
       {
          for( int j = 0; j < abeceda; j++ )
          {
             for( int vec = 0; vec < max_triedy.size(); vec++ )
             {
                for( y = 1; y < max_triedy[ vec ].size(); y++ )
                {
                   if( max_triedy[ vec ][ y ] == prechody[ i ][ j ] )
                      break;
                }
                if( y != max_triedy[ vec ].size() )
            {
               automat[ i ][ j ] = max_triedy[ vec ][ 0 ];
               break;
            }
             }
          }
       }
       for( int i = 0; i < abeceda; i++ )
       {
          min_automat[ 0 ][ i ] = automat[ 0 ][ i ];
       }
       for( int i = 0; i < m; i++ )
       {
          min_automatV[ 0 ][ i ] = vystupy[ 0 ][ i ];
       }
       int kolko = 1;
      int x,z;
       for( int i = 1; i < pocet_stavov; i++ )
       {
          for( x = 0; x < kolko; x++ )
          {
             for( y = 0; y < abeceda; y++ )
             {
                if( min_automat[ x ][ y ] != automat[ i ][ y ] )
                break;
             }
           for( z = 0; z < m; z++ )
             {
                if( min_automatV[ x ][ z ] != vystupy[ i ][ z ] )
            break;
             }
             if( y == abeceda && z == m )
             break;
          }
        if( x == kolko )
          {
           for( int l = 0; l < abeceda; l++)
           {
              min_automat[ kolko ][ l ] = automat[ i ][ l ];
          }
          for( int l = 0; l < m; l++)
          {
              min_automatV[ kolko ][ l ] = vystupy[ i ][ l ];
          }
          kolko++;
          }
       }
       char *novy_stav;
       novy_stav = new char[ max_triedy.size() ];
       for ( int i = 0; i < max_triedy.size(); i++ )
       novy_stav[ i ] = max_triedy[ i ][ 0 ];
       char choice;
       cin.get();
       cout << "Chcete vypisat medzivysledky?a/n: ";
       cin.get( choice );
       cout << endl;
       if( choice == 'a' || choice == 'A' )
       {
          //Vypis implikacnej tabulky
          cout << "Implikacna tabulka automatu" << endl << endl;
          a = 1;
          minimum = min;
          for( int i = 1; i < pocet_stavov; i++ )
          {
             for( int j = 0; j < a; j++ )
             {
                if( j == 0)
                cout << min + i << "\t" << impF[ i ][ j ] << "\t";
                else
                cout << impF[ i ][ j ] << "\t";
             }
             a++;
             cout << endl;
          }
          cout << endl;
          minimum = min;
          for( int i = 0; i < pocet_stavov - 1; i++ )
          {
             cout << "\t" << minimum;
             minimum++;
          }
          cout << endl << endl;
             //Vypis priradenia stavov
          cout << "Priradenie novych stavov" << endl;
          for ( int u = 0; u < max_triedy.size(); u++ )
          {
             cout << "{ ";
             for ( int v = 1; v < max_triedy[u].size(); v++ )
             {
                cout << max_triedy[ u ][ v ] << " ";
             }
             cout << "} --> " << novy_stav[ u ] << "  ";
          }
          cout << endl << endl;
       }
       //Vypis prechodovej tabulky povodneho automatu
       cout << "Povodny automat" << endl;
       cout << "STAV \t   Vstup \t  Vystup" << endl;
       cout << "\t";
       for( int i = 0; i < abeceda; i++)
       cout << i << "\t";
       for( int i = 0; i < m; i++)
       cout << i << "\t";
       cout << endl;
       minimum = min;
       for( int i = 0; i < pocet_stavov; i++ )
       {
          cout << minimum << "\t";
          for( int j = 0; j < abeceda; j++ )
          {
             cout << prechody[ i ][j ] << "\t";
          }
          for( int j = 0; j < m; j++ )
          {
             cout << vystupy[ i ][j ] << "\t";
          }
          cout << endl;
          minimum++;
       }
       //Vypis prechodovej tabulky minimalneho automatu
       cout << endl << "Minimalny automat" << endl;
       cout << "STAV \t   Vstup \t  Vystup" << endl;
       cout << "\t";
       for( int i = 0; i < abeceda; i++)
       cout << i << "\t";
       for( int i = 0; i < m; i++)
       cout << i << "\t";
       cout << endl;
       for( int i = 0; i < max_triedy.size(); i++ )
       {
          cout << novy_stav[ i ] <<"\t";
          for( int j = 0; j < abeceda; j++ )
          {
             cout << min_automat[ i ][ j ] << "\t";
          }
          for( int j = 0; j < m; j++ )
          {
             cout << min_automatV[ i ][ j ] << "\t";
          }
          cout << endl;
       }
       delete[] novy_stav;
    }
    cout << endl << "Chcete minimalizovat iny automat?" << endl << "A - pre ano, iny znak pre nie." << endl << "Vasa volba: ";
    cin.get();
    cin.get( volba );
    }
    while( volba == 'A' || volba == 'a' );
    cout << endl << "program by Jozef Jenca" << endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}


Za kazdu 1 radu dakujem.


Offline

Užívateľ
Užívateľ
graficke rozhranie z existujuceho kodu v c++

Registrovaný: 05.04.11
Príspevky: 1693
Témy: 50 | 50
Bydlisko: Žilina, Pop...

"al som Qt creator, lenze ked nemam triedy tak s tym velmi nepochodim,"


_________________
rMBP 13 2015
iPhone 7
Offline

Skúsený užívateľ
Skúsený užívateľ
graficke rozhranie z existujuceho kodu v c++

Registrovaný: 24.01.08
Prihlásený: 13.09.17
Príspevky: 14572
Témy: 66 | 66
Bydlisko: Žilina

Fúúú, takúto špagetu som už dlho nevidel. V prvom rade by som riešil tento kód, potom k nemu robil grafické nadstavby......


_________________
C#, PHP, ...
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.04.13
Prihlásený: 17.04.13
Príspevky: 3
Témy: 1 | 1
Napísal autor témyOffline : 15.04.2013 16:03 | graficke rozhranie z existujuceho kodu v c++

riesil kod myslis, prepisat to na funkcie a triedy?


Offline

Užívateľ
Užívateľ
graficke rozhranie z existujuceho kodu v c++

Registrovaný: 05.04.11
Príspevky: 1693
Témy: 50 | 50
Bydlisko: Žilina, Pop...

no veď o tom by predsa malo byť to C++ ako objektové riešenie modelu.


_________________
rMBP 13 2015
iPhone 7
Offline

Skúsený užívateľ
Skúsený užívateľ
graficke rozhranie z existujuceho kodu v c++

Registrovaný: 24.01.08
Prihlásený: 13.09.17
Príspevky: 14572
Témy: 66 | 66
Bydlisko: Žilina

Áno, proste to vyčistiť a použiť princípy OOP. Je pravda, že C++ dovoľuje aj takéto veci, ale určite by som to nepoužíval. Čím čistejší budeš mať kód, tým ľahšie sa ti s ním bude pracovať.


_________________
C#, PHP, ...
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.04.13
Prihlásený: 17.04.13
Príspevky: 3
Témy: 1 | 1
Napísal autor témyOffline : 15.04.2013 22:43 | graficke rozhranie z existujuceho kodu v c++

este taka vec, keby som chcel pouzit nejaku kniznicu, ako bolo v Ccku Allegro na tvorbu hier, dalo by sa to nejako cez nejaku tu kniznicu spravit?


Offline

Užívateľ
Užívateľ
graficke rozhranie z existujuceho kodu v c++

Registrovaný: 14.03.11
Prihlásený: 04.07.24
Príspevky: 815
Témy: 23 | 23
Bydlisko: Bratislava

Rýchlejšie to bude napísať znovu (a poriadne). Každý tretí riadok cout a cin... :oops:


 [ Príspevkov: 8 ] 


graficke rozhranie z existujuceho kodu v c++



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Ako tvoriť grafické užívateľské rozhranie pre programy v C++

v Assembler, C, C++, Pascal, Java

4

2914

04.05.2010 14:39

programmer

V tomto fóre nie sú ďalšie neprečítané témy.

Eclipse - grafické rozhranie sa nezobrazí

v Assembler, C, C++, Pascal, Java

1

314

14.04.2013 15:48

programmer

V tomto fóre nie sú ďalšie neprečítané témy.

Kubuntu 9.04 - nenabootuje graficke rozhranie

v Operačné systémy Unix a Linux

6

877

10.09.2009 11:52

dudan

V tomto fóre nie sú ďalšie neprečítané témy.

Patent na grafické rozhranie vstáva z mŕtvych

v Novinky

1

512

26.04.2007 18:30

OmeGa

V tomto fóre nie sú ďalšie neprečítané témy.

Skratenie kodu - C++

v Assembler, C, C++, Pascal, Java

1

520

17.01.2017 22:50

BX

V tomto fóre nie sú ďalšie neprečítané témy.

Vlozenie c++ kodu do wordu

v Assembler, C, C++, Pascal, Java

2

438

27.04.2010 10:20

vama

V tomto fóre nie sú ďalšie neprečítané témy.

C a grafické rozhrahie

v Assembler, C, C++, Pascal, Java

4

348

01.05.2013 21:00

chrono

V tomto fóre nie sú ďalšie neprečítané témy.

C++ Grafické aplikácie (Hry)

v Assembler, C, C++, Pascal, Java

14

1237

29.01.2015 15:36

petozaba

V tomto fóre nie sú ďalšie neprečítané témy.

Rozhranie

v nVidia grafické karty

20

1433

01.07.2008 15:39

OmeGa

V tomto fóre nie sú ďalšie neprečítané témy.

Web rozhranie

v Ostatné

2

816

19.03.2009 18:46

Romanko

V tomto fóre nie sú ďalšie neprečítané témy.

Rozhranie Aero

v Operačné systémy Microsoft

3

359

10.06.2014 22:32

brmbo

V tomto fóre nie sú ďalšie neprečítané témy.

rozhranie HDD

v Krčma

17

1255

26.11.2009 22:11

waika

V tomto fóre nie sú ďalšie neprečítané témy.

Vnutorne rozhranie TPM

v Intel čipové sady

7

839

11.06.2013 19:40

michalesku

V tomto fóre nie sú ďalšie neprečítané témy.

rozhranie grafickej karty

v Grafické karty

3

757

19.08.2009 15:59

dominique

V tomto fóre nie sú ďalšie neprečítané témy.

rozhranie ssd disku

v SSD disky

11

782

22.01.2018 9:02

sajmon.ol.

V tomto fóre nie sú ďalšie neprečítané témy.

Windows nespusti uzivatelske rozhranie

v Antivíry a antispywary

10

1249

22.03.2009 12:17

mates321



© 2005 - 2024 PCforum, edited by JanoF