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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2011, 21:47   #1
Corvette
Пользователь
 
Регистрация: 31.07.2011
Сообщений: 55
По умолчанию Разбивка массива по элементам!

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

Подскажите, пожалуйста, как решить следующею задачу:
Дан массив вида: 11223344
Разбить исходный массив на массив по два элемента вида:
11
12
22
23
33
34
44

У меня получается только вот так:
Код:
 
#include <iostream>
#include <conio.h>
#include <clocale>
 
using namespace std;
 
const int size=9;
 
int main ()
{
    setlocale (LC_ALL, "Russian");
    char A [size] ={"11223344"};
    
    cout << "Исходный массив:" << endl;
    
    for (int i=0; i<size; i++) cout << A[i] << " ";
    
    cout << endl << endl;
    char temp1 [4][5] = {{0}}; // тетрады
     
    int temp_i=0;
    int temp_j=0;
 
    for (int i=0; i<size; i++) { // разбивка на тетрады
       if (i%2 ==0  && i!=0)
       {
       temp_i++;
       temp_j=0;
       } 
    temp1[temp_i][temp_j++]=A[i];
        }
    
    for (int i=0; i<4; i++) { // к концу строки добавляем символ окончание строки
        temp1 [i][4] = '\0';
        }
    cout << "Разбивка по 2 элемента:" << endl;
    for (int i=0; i<4; i++) {
                for (int j=0; j<5; j++)
                {
                cout << temp1[i][j] << " ";
                }
                cout << '\n';
                }
                cout << endl << endl;
    
    char temp2 [4][5] = {{0}}; // тетрады
     
    int temp_2_i=0;
    int temp_2_j=0;
 
    for (int i=1; i<size; i++) { // разбивка на тетрады
       if (i%2!=0  && i!=0)
       {
       temp_2_i++;
       temp_2_j=0;
       } 
    temp2[temp_2_i][temp_2_j++]=A[i];
        }
    
    for (int i=0; i<4; i++) { // к концу строки добавляем символ окончание строки
        temp2 [i][4] = '\0';
        }
    cout << "Разбивка по 2 элемента:" << endl;
    for (int i=0; i<4; i++) {
                for (int j=0; j<5; j++)
                {
                cout << temp2[i][j] << " ";
                }
                cout << '\n';
                }
                cout << endl << endl;    
   
    
    getch ();
    return 0;
}
Вот этот фрагмент кода
Код:
for (int i=0; i<size; i++) { 
       if (i%2 ==0  && i!=0)
       {
       temp_i++;
       temp_j=0;
       } 
    temp1[temp_i][temp_j++]=A[i];
        }
у меня разбивает массив
на
11
22
33
44
и записывает результат в массив temp1

А вот этот фрагмент кода

Код:
for (int i=1; i<size; i++) { 
       if (i%2!=0  && i!=0)
       {
       temp_2_i++;
       temp_2_j=0;
       } 
    temp2[temp_2_i][temp_2_j++]=A[i];
        }
разбивает массив на
12
23
34
и записывает результат в temp2

А стоит задача, что бы результат записывался в один массив. Хотелось бы эти два фрагмента объединить в один и чтобы сразу запись происходила в один массив.
Corvette вне форума Ответить с цитированием
Старый 11.10.2011, 22:32   #2
SteAlzzer
Пользователь
 
Аватар для SteAlzzer
 
Регистрация: 11.10.2011
Сообщений: 60
По умолчанию

PHP код:
int main()
{
    
char input[] ={"11223344"};
    
char output[7][2] = {{0}};
    
cout<< input <<"\n";
    
    for(
int i 00;input[i]; j++)
    {
        
        
output[j][0] = input[i++];
        
output[j][1] = input[i];
        
    }
    for(
int i 07i++)
        
cout << output[i] <<"\n";
    return 
0;
}; 
Попробуйте, вроде должно заработать)
SteAlzzer вне форума Ответить с цитированием
Старый 11.10.2011, 22:40   #3
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

Код:
	const int size = 8;

	char A[size+1] ="11223344";

	char B[size-1][2];

	int cur=0;

	for (int i=1; i<size; i++) {
		B[cur][0]=A[i-1];
		B[cur][1]=A[i];
		cur++;
	}

	for (int i=0; i<size-1; i++)
		std::cout << B[i][0] << B[i][1] << '\n';
onewho вне форума Ответить с цитированием
Старый 11.10.2011, 22:45   #4
Corvette
Пользователь
 
Регистрация: 31.07.2011
Сообщений: 55
По умолчанию

Спасибо SteAlzzer!!!

Но она выдает странный результат:
Изображения
Тип файла: jpg прога.jpg (16.9 Кб, 63 просмотров)
Corvette вне форума Ответить с цитированием
Старый 11.10.2011, 22:50   #5
Corvette
Пользователь
 
Регистрация: 31.07.2011
Сообщений: 55
По умолчанию

Спасибо onewho!!!
Извините, но если можно подскажите пожалуйста а если надо разбивать таким же способом но по 4 элемента. То есть из 11223344 получить
1122
1223
2233
2334
3344
Corvette вне форума Ответить с цитированием
Старый 11.10.2011, 22:50   #6
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

я сначала тоже сделал std::cout << B[i], но там надо тупить с завершающими символами
onewho вне форума Ответить с цитированием
Старый 11.10.2011, 22:53   #7
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

Corvette, тогда нужно сделать внутри основного цикла ещё 1 цикл от i-1 до i-1+КОЛ, где КОЛ в вашем случае = 4. как-то так)
onewho вне форума Ответить с цитированием
Старый 11.10.2011, 22:57   #8
Corvette
Пользователь
 
Регистрация: 31.07.2011
Сообщений: 55
По умолчанию

Спасибо Оnewho!!!

Последний раз редактировалось Corvette; 11.10.2011 в 23:31.
Corvette вне форума Ответить с цитированием
Старый 11.10.2011, 23:04   #9
Corvette
Пользователь
 
Регистрация: 31.07.2011
Сообщений: 55
По умолчанию

Должно быть что то вида:
Код:
c const int size = 8, size2=5;
 

	char A[size+1] ="11223344";

	char B[size2][4];

	int cur=0;

	for (int i=0; i<size2; i++) {
    
        B[cur][0]=A[i];
		B[cur][1]=A[i+1];
        B[cur][2]=A[i+2];
        B[cur][3]=A[i+3];
		cur++;
   }

	for (int i=0; i<5; i++)
		std::cout << B[i][0] << B[i][1] << B[i][2] << B[i][3] << '\n';
 
        getch ();
        return 0;
        
}
????

Типа что то вроде этого???

Последний раз редактировалось Corvette; 11.10.2011 в 23:28.
Corvette вне форума Ответить с цитированием
Старый 12.10.2011, 09:08   #10
SteAlzzer
Пользователь
 
Аватар для SteAlzzer
 
Регистрация: 11.10.2011
Сообщений: 60
По умолчанию

Цитата:
Сообщение от Corvette Посмотреть сообщение
Спасибо SteAlzzer!!!

Но она выдает странный результат:
Вот это нежданчик) Извини, делал как-то на бумаге, не было под рукой компилятора.
Цитата:
Должно быть что то вида:
Код:

PHP код:
const int size 8size2=5;
 

    
char A[size+1] ="11223344";

    
char B[size2][4];

    
int cur=0;

    for (
int i=0i<size2i++) {
    
        
B[cur][0]=A[i];
        
B[cur][1]=A[i+1];
        
B[cur][2]=A[i+2];
        
B[cur][3]=A[i+3];
        
cur++;
   }

    for (
int i=0i<5i++)
        
std::cout << B[i][0] << B[i][1] << B[i][2] << B[i][3] << '\n';
 
        
getch ();
        return 
0;
        

????

Типа что то вроде этого???
Ну возьмите, попробуйте)
А вообще, похоже.
SteAlzzer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
к элементам первой половины массива добавить минимум, а к элементам второй - добавить максимум specialist Паскаль, Turbo Pascal, PascalABC.NET 3 08.05.2011 01:46
Обращение к элементам массива через указатель Miha85193 Общие вопросы Delphi 21 19.07.2010 18:43
обращение к элементам массива в С++ с помощью указателей серг Помощь студентам 0 05.12.2009 22:58
обращение к элементам двумерного массива на С++ серг Помощь студентам 16 05.12.2009 21:01
Обращение к элементам массива через указатель в С++ серг Помощь студентам 1 24.11.2009 01:30