Member 11648410 Ответов: 1

Как разбить строку на массивы


есть входная строка, например "123456789098765432" нужно разбить на два массива OddArray и EvenArray на основе positionsi. e, все цифры в четной позиции(2,4,6,8....) в EvenArray и все цифры в oddposition(3,5,7...) в OddArray

Что я уже пробовал:

char EvenArray[256],OddArray[256],Inputarray[256];
CString dis = "123456789098765432";
strcpy(Inputarray,dis);
int i,j,k;
int x = strlen(dis);
for(i=0;i<x;i++)>
	{
		if((i+2)%2 ==0)
		{
			
			EvenArray[j]=Inputarray[i];
			j++;
		}
		else
		{
			OddArray[k]=Inputarray[i];
			k++;
		}
	}

jeron1

Неужели я что-то упустил? Вы ничего не делаете с CString, который предположительно содержит данные, подлежащие обработке, и CString имеет свой собственный метод GetLength ().

Member 11648410

strcpy(Inputarray, dis); забыл добавить это..Извиняюсь

phil.o

Для теста на странность Я предлагаю использовать if ((i & 1) == 0) вместо.

jeron1

Разве вы не можете получить доступ к элементам CString таким же образом, с помощью оператора []? Вы можете избавиться от inputarray [] и strcpy (), переменной x, и изменить цикл for, чтобы он выглядел как for(i = 0; i< dis.Метода getlength может служить метод(); я++)

1 Ответов

Рейтинг:
2

OriginalGriff

Ну... это нужно немного подправить.
Вы неправильно его обрабатываете - ваше определение "нечетного" и "четного" исключает ноль и единицу.
Ноль я могу понять (он не нечетный и не четный), но один-нечетный.
Но чтобы исключить их, все просто: измените начальное значение i:

for(i=2;i<x;i++)>
Должны делать это.

(Имейте в виду, что массивы в C / C++ / C# все начинаются с элемента с нулевым индексом, а не с индексом 1: поэтому в строке "12345" символ с индексом 2 равен "3".
Если ваши значения позиции не позволяют этого сделать, вам нужно немного подправить свой код.


CPallini

0-это четно.