Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Заполнение трехмерного массива 
:(
    Опции темы
Zhunko
Дата 15.11.2009, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 4.11.2009

Репутация: нет
Всего: нет



Может кто знает, как это сделать?

Код

void Fun(char (&aIndex)[12][70][10])
 {
  char lpBufTool[10] = "qwertyuio";
  char (*pBufTool)[10];
  //----
  strcpy (aIndex[2][3], lpBufTool);  // Не работает.
  strcat (aIndex[2][3], lpBufTool);  // Не работает.
   for (int i = 0; i < 10; i++) aIndex[2][3][i] = lpBufTool[i]; // Не работает.
   // Так тоже не работает.
   pBufTool = &aIndex[2][3];
   strcpy (*pBufTool, lpBufTool);
   //----
   cout << aIndex[2][3] << endl;
 }

Надо без библиотек CLR, чтобы в стиле С.
Интересно, что это всё для двухмерного массива работает...

Это сообщение отредактировал(а) Zhunko - 16.11.2009, 13:57
PM MAIL   Вверх
bsa
Дата 16.11.2009, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



"В стиле Си" нет ссылок, которыми ты пользуешься.

Подозреваю, что ты перемудрил. Озвучь задание полностью.
PM   Вверх
Zhunko
Дата 16.11.2009, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 4.11.2009

Репутация: нет
Всего: нет



Это, как нет ссылок? Имел ввиду без string.

По коду, по моему, и так видно...
Надо заполнить третье измерение строковыми символами (char).

Только, что провёл эксперимент.
Код

for (i = 0; i < 9; i++) aIndex[2][3][i] = 49 + i; // Так работает.

Т.е. надо теперь преобразовать буквы в числа char (коды ASCII).

Это сообщение отредактировал(а) Zhunko - 16.11.2009, 13:48
PM MAIL   Вверх
bsa
Дата 16.11.2009, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(Zhunko @  16.11.2009,  13:37 Найти цитируемый пост)
Это, как нет ссылок?
Очень просто - нет. Т.е. код 
Код
char (&aIndex)[12][70][10]
 не скомпилируется.
И вообще, массивы всегда по указателю и передаются (т.е. символ & указывать не нужно).
PM   Вверх
Zhunko
Дата 16.11.2009, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 4.11.2009

Репутация: нет
Всего: нет



У меня по разному компилируется без ошибок в VS2008.

Это сообщение отредактировал(а) Zhunko - 16.11.2009, 14:15
PM MAIL   Вверх
bsa
Дата 16.11.2009, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



смени расширение .cpp на .c и попробуй скомпилировать.
PM   Вверх
Zhunko
Дата 16.11.2009, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 4.11.2009

Репутация: нет
Всего: нет



Цитата(bsa @ 16.11.2009,  14:08)
смени расширение .cpp на .c и попробуй скомпилировать.

Понял. Но не буду экспериментировать. smile 
А по существу? Как самым простым способом заполнить строкой третье измерение?

Это сообщение отредактировал(а) Zhunko - 16.11.2009, 14:17
PM MAIL   Вверх
Zhunko
Дата 16.11.2009, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 4.11.2009

Репутация: нет
Всего: нет



Код

for (i = 0; i < 10; i++) aIndex[2][3][i] = (short) lpBufTool[i]; // Так тоже не работает.

PM MAIL   Вверх
ИванМ
Дата 16.11.2009, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 3
Всего: 23



Цитата(Zhunko @  16.11.2009,  15:13 Найти цитируемый пост)
код C++1:for (i = 0; i < 10; i++) aIndex[2][3][i] = (short) lpBufTool[i]; // Так тоже не работает.

Как это должно работать, если слева char, справа short?
PM MAIL   Вверх
Zhunko
Дата 16.11.2009, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 4.11.2009

Репутация: нет
Всего: нет



Цитата(ИванМ @ 16.11.2009,  17:46)
Цитата(Zhunko @  16.11.2009,  15:13 Найти цитируемый пост)
код C++1:for (i = 0; i < 10; i++) aIndex[2][3][i] = (short) lpBufTool[i]; // Так тоже не работает.

Как это должно работать, если слева char, справа short?

Так это никак не работает!...
Вопрос разве в том, что не работает?
Как сделать, чтобы работало?

То, что показал, это один из неработающих вариантов. В примере явное преобразование типов. Привожу к минимальному целому.

Это сообщение отредактировал(а) Zhunko - 16.11.2009, 18:23
PM MAIL   Вверх
ИванМ
Дата 16.11.2009, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 3
Всего: 23



Zhunko, объясни конкретно что тебе нужно.
То, что ты написал: 
Цитата

Т.е. надо теперь преобразовать буквы в числа char (коды ASCII).

странно. Ведь char и так хранит коды ASCII. Что еще можно преобразовывать?
PM MAIL   Вверх
Zhunko
Дата 16.11.2009, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 4.11.2009

Репутация: нет
Всего: нет



Цитата(ИванМ @ 16.11.2009,  19:24)
Zhunko, объясни конкретно что тебе нужно.
То, что ты написал: 
Цитата

Т.е. надо теперь преобразовать буквы в числа char (коды ASCII).

странно. Ведь char и так хранит коды ASCII. Что еще можно преобразовывать?

Да мне тоже странно...
Для двухмерного работает. Для трёхмерного не работает.
PM MAIL   Вверх
ИванМ
Дата 16.11.2009, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 3
Всего: 23



Zhunko, у меня твой код работает. Но в си нет ни ссылок, ни cout.

Добавлено через 4 минуты и 2 секунды
код для c:
Код

#include <stdio.h>
#include <string.h>

void Fun(char aIndex[12][70][10])
 {
  char lpBufTool[10] = "qwertyuio";
  char (*pBufTool)[10];
  int i;
  //----
  strcpy (aIndex[2][3], lpBufTool); 
  strcat (aIndex[2][3], lpBufTool); 
   
  for (i = 0; i < 10; i++) 
      aIndex[2][3][i] = lpBufTool[i]; 
   pBufTool = &aIndex[2][3];
   strcpy (*pBufTool, lpBufTool);
   //----
   printf("%s\n", aIndex[2][3]);
 }

PM MAIL   Вверх
Zhunko
Дата 16.11.2009, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 4.11.2009

Репутация: нет
Всего: нет



Причину нашёл!!!
Примеры все мои некорректные!
У меня более сложная адресация в массиве. Вот её не показал.

Так не работает:
Код

for (i = 0; i < 9; i++) aIndex[n][aCount[n]][i] = lpBufTool[i];


Так работает:
Код

b = aCount[n];
for (i = 0; i < 9; i++) aIndex[n][b][i] = lpBufTool[i];


Извините, что напряг. Спасибо!

Это сообщение отредактировал(а) Zhunko - 16.11.2009, 19:11
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0538 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.