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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Aniritake
1 / 1 / 0
Регистрация: 27.06.2009
Сообщений: 65
#1

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

14.04.2010, 19:58. Просмотров 902. Ответов 4
Метки нет (Все метки)

изначально:
Двумерный массив С++

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

Как можно вложить двумерный массив в двумерный? - C++
Нужно написать программу перемножения двух матриц размерностью МxМ, элементы которых, матрицы размерностью КxК... Подскажите (желательно с...

Массив: Как скопировать двумерный массив в другой массив? - C++
Как скопировать двумерный массив в другой массив?

Массив: преобразорвать двумерный массив в одномерный и отсортировать его методом пузырька - C++
всем привет. народ помогите с прогой, конкретно с функцией sort (65 строка), она должна двухмерный массив перевести построчно в одномерный...

Массив: Как можно задать и вывести симметричный двумерный массив? - C++
как можно задать и вывести симметричный массив

Чем отличаются двумерный символьный массив и массив указателей на строки - C++
Двумерный символьный массив и массив указателей на строки. Собственно чем они отличаются? Заранее спасибо.

Дан двумерный массив 3х3. Получить одномерный массив из из отрицательных элементов матрицы. - C++
Пожалуйста, помогите решить простым методом задачку, просто не могу понять смысл ее выполнения. Дан двумерный массив 3х3.Получить...

4
MikeSoft
Эксперт С++
3800 / 1776 / 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[][] ссылаясь на новые индексы.
1
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]);
}
0
MikeSoft
Эксперт С++
3800 / 1776 / 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] = {{'А', 'Б'},{'В', 'Г'}};
0
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
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.04.2010, 10:02
Привет! Вот еще темы с ответами:

Дан двумерный массив размерностью 4*5. Сформировать одномерный массив - C++
Дан двумерный массив размерностью 4*5, заполненный целыми числами с клавиатуры. Сформировать одномерный массив каждый элемент которого...

Дан двумерный массив, создать другой массив, строками которого будут диагонали первого массива - C++
Дан двумерный массив , создать другой массив ,строками которого будут диагонали первого массива, решить с помощью классов . Класс...

Дан двумерный массив. Сформировать одномерный массив из элементов заданного массива, расположенных под побочной диагональю. - C++
Дан двумерный массив размером n x n. Сформировать: Одномерный массив из элементов заданного массива, расположенных под побочной...

Двумерный массив (поменять статический массив на динамический) - C++
Нужно поменять статический массив на динамический с выделением памяти #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
16.04.2010, 10:02
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru