Форум программистов, компьютерный форум CyberForum.ru

Двумерный массив С++ - C++

Восстановить пароль Регистрация
 
Aniritake
1 / 1 / 0
Регистрация: 27.06.2009
Сообщений: 65
14.04.2010, 19:58     Двумерный массив С++ #1
изначально:
Двумерный массив С++

мне вот нужно реализовать массив, как показано на рисунке 10.4
массив вида [<номер строки>][<номер столбца>] = <буква>;
помогите, пожалуйста.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2010, 19:58     Двумерный массив С++
Посмотрите здесь:

Дан двумерный массив размерностью 4*5. Сформировать одномерный массив C++
C++ Как можно вложить двумерный массив в двумерный?
Дан двумерный массив. Сформировать одномерный массив из элементов заданного массива, расположенных под побочной диагональю. C++
C++ Двумерный массив. Сформировать одномерный массив, каждый элемент которого равен первому четному элементу соответствующего столбца
Двумерный массив (поменять статический массив на динамический) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MikeSoft
Эксперт C++
 Аватар для MikeSoft
3781 / 1765 / 85
Регистрация: 21.11.2009
Сообщений: 2,540
15.04.2010, 01:29     Двумерный массив С++ #2
Aniritake, а что не получается?
По условию просят использовать ASCII код символа...
Если это unsigned char, то максимальный размер массива
C++
1
int a[256][256]; // массив для ASCII от 0 до 255
Идём дальше... как писать по адресу ASCII символа...
Для начала его нужно получить:
C++
1
2
3
4
char x1[] = "c";
int pos = (unsigned int)(unsigned char)(x1[0]);
// теперь можно ссылаться на нужную ячейку, как просят на рис. 10.4
a[0][pos] = 1;
Трудность была в этом?
Думаю, да.
Если в условии алфавит ограничен - то нужно отсортировать полученные коды по возрастанию и писать их в массив a[][] ссылаясь на новые индексы.
Aniritake
1 / 1 / 0
Регистрация: 27.06.2009
Сообщений: 65
15.04.2010, 08:11  [ТС]     Двумерный массив С++ #3
Цитата Сообщение от MiCr0s0fT Посмотреть сообщение
а что не получается?
в целом получается, что я пытаюсь загнать алфавит в двумерный массив

C++
1
char x1[] = "c"
"c" я правильно понимаю, что это уже символ алфавита?

Добавлено через 12 минут
а вот так вот получится?
C++
1
2
3
4
5
6
7
8
9
10
11
int myArr [6][5]= 
{    А,Б,В,Г,Д,Е,
     Ж,З,И,К,Л,М,
     Н,О,П,Р,С,Т,
     У,Ф,Х,Ц,Ч,Ш,
     Щ,Ь,Ы,Э,Ю,Я };  
for(int i=0;i<n;i++)
{  
for (int j=0;j<n;j++)  
printf("%2d",myArr[i][j]);
}
MikeSoft
Эксперт C++
 Аватар для MikeSoft
3781 / 1765 / 85
Регистрация: 21.11.2009
Сообщений: 2,540
15.04.2010, 17:01     Двумерный массив С++ #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Aniritake Посмотреть сообщение
"c" я правильно понимаю, что это уже символ алфавита?
Да, так и есть.

Цитата Сообщение от Aniritake Посмотреть сообщение
а вот так вот получится?
C++
1
2
3
4
5
6
7
8
9
10
11
int myArr [6][5]= 
{    А,Б,В,Г,Д,Е,
     Ж,З,И,К,Л,М,
     Н,О,П,Р,С,Т,
     У,Ф,Х,Ц,Ч,Ш,
     Щ,Ь,Ы,Э,Ю,Я };  
for(int i=0;i<n;i++)
{  
for (int j=0;j<n;j++)  
printf("%2d",myArr[i][j]);
}
Нет, так делать нельзя, т.к. Вы пытаетесь присвоить значение типа char массиву значений типа int.

Нужно либо делать неявные преобразования, либо поступить вот так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//---------------------------------------------------------------------------
#include <iostream.h>
//---------------------------------------------------------------------------
int main()
{
    const int x = 6, y = 6;
    char a[x][y];
 
    int pos = 128;
    for (int i = 0; i < x; i++) {
        for (int j = 0; j < y; j++) {
            a[i][j] = char(pos);
            cout << a[i][j] << " ";
            if (j == y-1) {
                cout << endl;
            }
            pos++;
        }
    }
    cin.get();
 
    return 0;
}
//---------------------------------------------------------------------------
Если нужно всё же забивать руками, тогда можно присваивать так:
C++
1
char a[2][2] = {{'А', 'Б'},{'В', 'Г'}};
Aniritake
1 / 1 / 0
Регистрация: 27.06.2009
Сообщений: 65
16.04.2010, 10:02  [ТС]     Двумерный массив С++ #5
,
C++
1
int a[256][256]; // массив для ASCII от 0 до 255
Идём дальше... как писать по адресу ASCII символа...
Для начала его нужно получить:
C++
1
2
3
4
char x1[] = "c";
int pos = (unsigned int)(unsigned char)(x1[0]);
// теперь можно ссылаться на нужную ячейку, как просят на рис. 10.4
a[0][pos] = 1;
если я буду делать таким способом, то мне для каждого символа алфавита нужно будет это прописать.
для а:
C++
1
2
3
4
5
char x1[] = "а";
int pos = (unsigned int)(unsigned char)(x1[0]);
// теперь можно ссылаться на нужную ячейку, как просят на рис. 10.4
a[0][pos] = 1;
a[1][pos] = 1;
для б:
C++
1
2
3
4
5
char x2[] = "б";
int pos = (unsigned int)(unsigned char)(x2[0]);
// теперь можно ссылаться на нужную ячейку, как просят на рис. 10.4
a[0][pos] = 1;
a[1][pos] = 2;
для в:
C++
1
2
3
4
5
char x3[] = "в";
int pos = (unsigned int)(unsigned char)(x3[0]);
// теперь можно ссылаться на нужную ячейку, как просят на рис. 10.4
a[0][pos] = 2;
a[1][pos] = 1;
для с:
C++
1
2
3
4
5
char x4[] = "г";
int pos = (unsigned int)(unsigned char)(x4[0]);
// теперь можно ссылаться на нужную ячейку, как просят на рис. 10.4
a[0][pos] = 2;
a[1][pos] = 2;
ну это по примеру образования массива н рисунке 10.4
Yandex
Объявления
16.04.2010, 10:02     Двумерный массив С++
Ответ Создать тему
Опции темы

Текущее время: 16:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru