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

Tablica przechowująca dwa typy danych

Ostatnio zmodyfikowano 2017-06-16 22:31
Autor Wiadomość
1551
Temat założony przez niniejszego użytkownika
Tablica przechowująca dwa typy danych
» 2017-06-14 15:11:24
Witam.

Czy jest możliwość deklaracji tablicy przechowującej dwa typy danych ? Chciałbym zrobić macierz która zawiera elementy int(wszelkie wprowadzane liczby) oraz znaki typu 'A', 'B', 'C'. Z samymi intami nie było by problemu
int macierz[ a ][ b ];
, ale co zrobić z faktem znaków ? Czy da się w jakiś sposób zapisać te znaki w kodach ascii, aby przy wyświetlaniu tablicy te wartości na ekranie były przeradzane w 'A', 'B','C' ...?
P-162535
Kinexity
» 2017-06-14 15:14:24
Jak się nie mylę to da się rzutować int na char -
static_cast < char >( nazwa_zmiennej )
P-162536
hit
» 2017-06-14 15:22:13
"Czy da się w jakiś sposób zapisać te znaki w kodach ascii, aby przy wyświetlaniu tablicy te wartości na ekranie były przeradzane w 'A', 'B','C' ...?"

Da się.

Edit:
https://stackoverflow.com​/questions/5322056​/how-to-convert-an-ascii-character-into-an-int-in-c
https://stackoverflow.com​/questions/4629050​/convert-an-int-to-ascii-character
P-162537
1551
Temat założony przez niniejszego użytkownika
» 2017-06-14 15:36:18
Dziękuję bardzo, już sobie poradziłem. Nie wpadłem na tak prostą rzecz jak rzutowanie. Z ASCII też prosta sprawa, a jakoś mi umknęła.
P-162538
1551
Temat założony przez niniejszego użytkownika
» 2017-06-14 16:49:14
Mógłby ktoś jeszcze przejrzeć kod i powiedzieć dlaczego nie wczytuje poprawnie danych ?
C/C++
#include<iostream>
#define max 10000

using namespace std;

int main()
{
    int size;
    int c;
    int M[ size ][ size ];
    char ch;
   
    cout << " Prosze wprowadzic rozmiar tablicy z przedzialu [0;10^4] : "; cin >> size;
    if( size < 0 || size > max ) cout << "\n Wprowadzony rozmiar nie spelnia warunkow !\n";
    else
    {
       
        cout << endl << endl;
       
        for( int i = 0; i < size; i++ )
        {
            cout << " Wprowadz elementy " << i << " wiersza : \n";
            for( int j = 0; j < size; j++ )
            {
               
                if(( j % 2 == 0 && i % 2 != 0 ) ||( j % 2 != 0 && i % 2 == 0 ) )
                {
                    cin >> c;
                    M[ i ][ j ] = c;
                }
               
                if( j % 2 == 0 && i % 2 == 0 )
                {
                    cin >> ch;
                    if( ch != 'X' )
                    {
                        cout << " \n Zle wprowadzono dane - miejsce na X";
                        system( "Pause" );
                        return 0;
                    }
                    else
                         M[ i ][ j ] = int( ch );
                   
                }
               
                if( j % 2 != 0 && i % 2 != 0 )
                {
                    cin >> ch;
                    if( ch != 'Y' )
                    {
                        cout << " \n Zle wprowadzono dane - miejsce na Y";
                        system( "Pause" );
                        return 0;
                    }
                    else
                         M[ i ][ j ] = int( ch );
                   
                }
            }
        }
    }
   
   
    cout << endl << endl << endl << " Aktualnie wygenerowana macierz ma postac : \n\n ";
   
    /*for(int i=0; i<size; i++)
      {
             cout<<endl<<endl;
      for(int j=0; j<size; j++)
      {
       if((j%2==0&&i%2!=0)||(j%2!=0&&i%2==0))
       {
        cout<<M[i][j]<<"  ";
       }
       if(j%2==0&&i%2==0)
        cout<<M[i][j]<<"  ";
       if(j%2!=0&&i%2!=0)
        cout<<M[i][j]<<"  ";
       }
      }*/
   
   
    cout << "\n\n\n\n ";
    system( "Pause" );
    return 0;
}

Dlaczego program się wysypuje i dlaczego nie wczytuje poprawnie danych ? Na miejscach i oraz j parzyste ma byc mozliwy jedynie X do wprowadzenia a odwrotnie tylko Y. Kiedy jedynie i albo j jest parzyste a drugie nie to wprowadzamy liczbe.
P-162539
1aam2am1
» 2017-06-14 17:43:45
int M[ size ][ size ]; jaką to ma wielkość?
P-162541
1551
Temat założony przez niniejszego użytkownika
» 2017-06-14 17:47:21
Miało być [max][max], ale w tym przypadku też wysypuje program. Ewentualnie mogę chyba dać delkarację tablicy M[size][size] po pobraniu cin>>size, prawda?
P-162542
1aam2am1
» 2017-06-14 17:52:05
Nie tego nie można zrobić w c++
P-162543
« 1 » 2
  Strona 1 z 2 Następna strona