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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.08.2011, 20:43   #1
Corvette
Пользователь
 
Регистрация: 31.07.2011
Сообщений: 55
По умолчанию Преобразование 3-х мерного в 2-х мерный массив.

Здравствуйте!!!

Подскажите, пожалуйста, что я не правильно делаю.
Пытаюсь трехмерный массив преобразовать в двухмерный. Даны две матрицы А (размер 2х2) с индексом 1 и 2.
А1 =
1 2
3 4
А2=
5 6
7 8

Мне требуется их преобразовать их в две матрицы В с индексами 1 и 2
В1 =
1
2
3
4
В2 =
5
6
7
8

Код:
#include <iostream>
#include <conio.h>

using namespace std;

int main ()
{
    int A [2][2][2] = {
                      {{1,2},{3,4}},
                      {{5,6},{7,8}}
                      };
                      
    int B [2][4] = {{0}};
    
    	for(int i = 0; i < 2; i++)
	{
		cout << "A" << i << endl << endl; 
		for(int j = 0; j < 2; j++)
		{
			for(int k = 0; k < 2; k++)
				cout <<  A[i][j][k] << " ";
			cout << endl << endl;
		}
		cout << endl;
	}
    int r=0;
    int p=0;
    
   	for(int i = 0; i < 2; i++)
	{
		for(int j = 0; j < 2; j++)
		{
			for(int k = 0; k < 2; k++)
              B[r][p]=A[i][j][k]; 
              p++;
               
		}
             r++; 
           
	}
   
   	for(int i = 0; i < 2; i++)
	{
       cout << "B" << i << endl << endl; 
		for(int j = 0; j < 4; j++)
		{
				cout <<  B[i][j] << " ";
			cout << endl << endl;
		}
		cout << endl;
	}
   
   
    getch ();
    return 0;
}
Написанная программа работает не корректно. Ошибку, к сожалению, найти не могу. Подскажите, пожалуйста, что не правильно!

PS: Преобразование из 2-х в одномерный получилось, а с 3-х в 2-х возникли трудности.

Код:
#include <iostream>
#include <conio.h>

using namespace std;

int main ()
{
    int A [2][2] = {{1,2},
                   {3,4}};
    int B [4] = {0};
    
    cout << "A" << endl << endl;
    
    for (int i=0; i<2; i++){
        for (int j=0; j<2; j++){
            cout << A [i][j] << " ";
            }
            cout << endl;
            }
    int p=0;
    for (int i=0; i<2; i++){
        for (int j=0; j<2; j++){
             B[p]=A [i][j];
            p++;
            }
            }     
    cout << endl << endl;
    for (int i=0; i<4; i++){
        cout << B[i]<< " \n";
        } 
            
    getch ();
    return 0;
}
Corvette вне форума Ответить с цитированием
Старый 28.08.2011, 21:02   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Второй цикл:
Код:
  for (int i = 0; i < 2; i++)
    for (int j = 0; j < 2; j++)
      for (int k = 0; k < 2; k++)
        B[i][j * 2 + k] = A[i][j][k];
netrino вне форума Ответить с цитированием
Старый 28.08.2011, 21:10   #3
Corvette
Пользователь
 
Регистрация: 31.07.2011
Сообщений: 55
По умолчанию

Спасибо!!!!!!
Corvette вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
2х мерный массив delphi sofiya Помощь студентам 1 22.02.2011 10:26
2-мерный массив Golovastik PHP 1 30.06.2010 23:13
Двух мерный массив студент36 Помощь студентам 3 17.05.2010 07:56
N-мерный массив в c++ builder vasuc Qt и кроссплатформенное программирование С/С++ 0 27.02.2010 16:54
N мерный массив Лубышев Общие вопросы Delphi 3 08.05.2009 12:12