Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2017, 20:42   #1
Silentium.noxe
Пользователь
 
Аватар для Silentium.noxe
 
Регистрация: 22.09.2016
Сообщений: 40
Вопрос Вывод многомерного масива

Добрый день\вечер

Сразу к вопросу:
Нужно вывести значение массива. Вот код:
Код:
#include <iostream>
using namespace std;

class Map {
  static const int SIZE = 3;
public:
  int map();
};

int Map::map() {
  char latties[SIZE][SIZE][SIZE] = {0,0,0,
                                    0,0,0,
                                    0,0,0
                                   };

  for (int a = 0; a < SIZE; a++) {
    for (int b = 0; b < SIZE; b++) {
      for (int c = 0; c < SIZE; c++) {
        cout << latties[a][b][c] << " ";  // неправильный вывод массива
      }
    }
  }

  return 0;
}
И вот что мне пишет компилятор:
Код:
     ~\g++ main.cpp
     ~\a.exe
                                                          0
     ~\
Почему это происходит и как можно решить данную проблему?
Спасибо за ответы.

Последний раз редактировалось Silentium.noxe; 01.03.2017 в 21:18.
Silentium.noxe вне форума Ответить с цитированием
Старый 01.03.2017, 22:01   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

main, главная функция программы где?
p51x вне форума Ответить с цитированием
Старый 01.03.2017, 22:17   #3
Silentium.noxe
Пользователь
 
Аватар для Silentium.noxe
 
Регистрация: 22.09.2016
Сообщений: 40
Лампочка

я нашёл ответ на это вопрос: при инициализации массива типа char используются числа, а нужно символы.

другой вопрос:
в этом же коде:
Код:
16  for (int a = 0; a < size; a++) {
17    for (int b = 0; b < size; b++) {
18      for (int c = 0; c < size; c++) {
19        cout << latties[a][b][c];
20      }
21      cout << "\n";
22    }
23  }
из-за 21 строки компилятор делает очень много отступов, компилятор:
Код:
~\g++ main.cpp
~\a.exe
000
000
000







~\
можно ли избавится от этих отступов и как это сделать?
Silentium.noxe вне форума Ответить с цитированием
Старый 01.03.2017, 22:18   #4
Silentium.noxe
Пользователь
 
Аватар для Silentium.noxe
 
Регистрация: 22.09.2016
Сообщений: 40
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
main, главная функция программы где?
данный код встраиваемый. Здесь функция main не используется.
Silentium.noxe вне форума Ответить с цитированием
Старый 02.03.2017, 14:26   #5
Silentium.noxe
Пользователь
 
Аватар для Silentium.noxe
 
Регистрация: 22.09.2016
Сообщений: 40
Вопрос ошибки вывода символов на коносль

есть код:
Код:
//main.cpp

#include <iostream>
#include <clocale>
#include "Map.h"
using namespace std;

int main() {
  setlocale(LC_ALL, "Rusiian");
  setlocale(LC_ALL, "rus");

  Map latties_map;
  latties_map.map(5); //функция по выводу массива
                      //аргумент "size" для задания размера массива   
  return 0;
}
Код:
//map.h

#include <iostream>
using namespace std;

class Map {
public:
  int map(int size);
};

int Map::map(int size) {
  char latties[size][size][size] = {'0','0','0', //инициализация массива
                                    '0','0','0',
                                    '0','0','0'
                                   };

  for (int a = 0; a < size; a++) {
    for (int b = 0; b < size; b++) {
      for (int c = 0; c < size; c++) {
        cout << latties[a][b][c]; // вывод массива
      }
      cout << "\n";
    }
  }

  return 0;
}
Как бы нечего не предвещало беды, но компилятор выводит в консоль это:
Код:
~>g++ main.cpp
~>a.exe
00000
0000o
l а
RRuss
ian_R





















~>
Почему это происходит и как это можно исправить?
Silentium.noxe вне форума Ответить с цитированием
Старый 02.03.2017, 14:46   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Инициализировать массив полностью или затирать память нулями.
p51x вне форума Ответить с цитированием
Старый 02.03.2017, 15:59   #7
Silentium.noxe
Пользователь
 
Аватар для Silentium.noxe
 
Регистрация: 22.09.2016
Сообщений: 40
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Инициализировать массив полностью или затирать память нулями.
Я инициализирую массив Символами, а не числами
Silentium.noxe вне форума Ответить с цитированием
Старый 02.03.2017, 16:06   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Хоть ежиками из тумана ориона. Вы неинициализировали память и выводите из нее что-то... Что там? Да что угодно.

Кстати, символьные массивы то же инициализируют нулями, которые являются терминальными.
p51x вне форума Ответить с цитированием
Старый 02.03.2017, 16:07   #9
Silentium.noxe
Пользователь
 
Аватар для Silentium.noxe
 
Регистрация: 22.09.2016
Сообщений: 40
По умолчанию Решение задачи

в коде:
Код:
12 int Map::map(int size) {
13   char latties[size][size][size] = {'0','0','0', //лишний массив
14                                     '0','0','0',
15                                     '0','0','0',
16                                     '0','0','0',
17                                     '0','0','0'
18                                    };
19 
20   for (int a = 0; a < size; a++) {
21     for (int b = 0; b < size; b++) {
22       for (int c = 0; c < size; c++) {
23         cout << latties[a][b][c]; // вывод массива
24       }
25      cout << "\n";
26    }
27   }
28
29   return 0;
30 }
При объявлении массива (13 строка) пишется: latties[x][x][x], а нужно latiies[x][x].
Silentium.noxe вне форума Ответить с цитированием
Старый 02.03.2017, 16:10   #10
Silentium.noxe
Пользователь
 
Аватар для Silentium.noxe
 
Регистрация: 22.09.2016
Сообщений: 40
По умолчанию

Всем участникам спасибо за "ПОМОЩЬ"
Silentium.noxe вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка многомерного массива KuckaMAXHATKA PHP 1 12.06.2014 19:24
Вывод древовидного масива с БД exFAT PHP 1 15.03.2013 22:39
Оброботка масива.найти елемент масива с указанием его адреса в строке и в столбце Rokko195 Паскаль, Turbo Pascal, PascalABC.NET 3 20.12.2012 07:22
Сортировка и вывод строкового масива.(DevC++) alljustforfun Помощь студентам 3 16.04.2012 15:41
Сортировка многомерного массива Evgen1503 Помощь студентам 0 29.01.2010 13:59