Гм...
В общем дан одномерный интовский массив ну скажем элементов на 100 элементов
Например заполненый случайно 90 элементов этого массива
Требуется:
При запуске программы вводится элемент массива и число
После этого все элементы до этого элемента остаются теме же, всесто того элемента ставится новый элемент а все остальные элементы перехдят на одну ячейку дальше
т.е. так:
1 3 5 7 4 2 4 6 7 4 X X
1 3 4 5 7 4 2 4 6 7 4 X <- на 2-й элеемент массива число 4
Здравствуйте, LamoTypoe, Вы писали:
LT>Гм...
LT>В общем дан одномерный интовский массив ну скажем элементов на 100 элементов
LT>Например заполненый случайно 90 элементов этого массива
LT>Требуется:
[bla-bla]
pasted from mIRC
[17:41:05] <******> да, вполне. буду ещё рассматривать, пока сессия..
к чему бы это......
Здравствуйте, slavdon, Вы писали:
S>[bla-bla]
S>pasted from mIRC
S>[17:41:05] <******> да, вполне. буду ещё рассматривать, пока сессия..
S>к чему бы это......
НУ ВОТ ТАК ВСЕГДА ОПЯТЬ ПРЕДЁТСЯ САМОМУ МОЗГАМИ СКРЕПТЬ... ты бы знал как они у меня болят...
void main(){
int index, array[100];
index = 0;
while(index < 90){
array[index] = index * 2; /* заполняем всякой фигнёй */
index++;
}
int NomerElementa = 10;
int Element=78;
index = 0;
while(index < NomerElementa){
array1[index] = array[index]; /* заполняем массив той же лабудой*/
index++;
}
array1[index]=Element;
for(index=index+1; index < 100; index++)
array1[index] = array[index-1];
}
PS Выхоть если помогать отказались то хоть ошибки исправте!!! Голова болит жуть
Здравствуйте, LamoTypoe, Вы писали:
LT>Гм...
LT>В общем дан одномерный интовский массив ну скажем элементов на 100 элементов
LT>Например заполненый случайно 90 элементов этого массива
LT>Требуется:
LT>При запуске программы вводится элемент массива и число
LT>После этого все элементы до этого элемента остаются теме же, всесто того элемента ставится новый элемент а все остальные элементы перехдят на одну ячейку дальше
LT>т.е. так:
LT>1 3 5 7 4 2 4 6 7 4 X X
LT>1 3 4 5 7 4 2 4 6 7 4 X <- на 2-й элеемент массива число 4
for (int i = lastItemIndex-1; i>=insertedItemIndex; i--)
{
array[i+1] = array[i];
}
З.Ы. Бросай программирование. Не надо себя насиловать.
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Здравствуйте, LamoTypoe, Вы писали:
LT>В общем дан одномерный интовский массив ну скажем элементов на 100 элементов
LT>Например заполненый случайно 90 элементов этого массива
LT>Требуется:
LT>При запуске программы вводится элемент массива и число
LT>После этого все элементы до этого элемента остаются теме же, всесто того элемента ставится новый элемент а все остальные элементы перехдят на одну ячейку дальше
Ну ты жЁстко сформулировал условие.
Перевожу на русский язык:
"
вставить значение в произвольную позицию массива".
Есть несколько способов.
1) "дырочный":
— создаём "дырку" — свободную ячейку — на правом краю массива;
— двигаем дырку влево до тех пор, пока она не займёт нужную позицию;
— кладём в дырку вставляемое значение
V
0 1 2 3 4 5 6 _
0 1 2 3 4 5 _ 6
0 1 2 3 4 _ 5 6
0 1 2 3 _ 4 5 6
0 1 2 3 V 4 5 6
2) "электронный":
— назовём "свободным электроном" значение, которое нужно положить в данную ячейку
— попадая в ячейку, электрон выбивает направо предыдущее значение, которое становится свободным электроном
V
0 1 2 3 4 5 6
3
0 1 2 V 4 5 6
4
0 1 2 V 3 5 6
5
0 1 2 V 3 4 6
6
0 1 2 V 3 4 5
0 1 2 V 3 4 5 6
В случае массированной вставки эффективнее применять дырочный способ — он не требует дополнительной памяти
V V V
0 1 2 3 4 5 6 _ _ _
0 1 2 3 4 5 _ _ _ 6
0 1 2 3 4 _ _ _ 5 6
0 1 2 3 _ _ _ 4 5 6
0 1 2 _ _ _ 3 4 5 6
0 1 2 V V V 3 4 5 6
Закодировать эти алгоритмы на любимом языке программирования — будь то императивный или функциональный — оставляю на твоё усмотрение.
Здравствуйте, Кодт, Вы писали:
К>Есть несколько способов.
К>1) "дырочный":
К>2) "электронный":
Есть еще "хакерский" — memcpy()
Здравствуйте, wildwind, Вы писали:
W>Есть еще "хакерский" — memcpy()
Как memcpy работает с перекрывающимися диапазонами?
Здравствуйте, wildwind, Вы писали:
W>Есть еще "хакерский" — memcpy()
тады уж memmove()?..
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, wildwind, Вы писали:
W>>Есть еще "хакерский" — memcpy()
К>Как memcpy работает с перекрывающимися диапазонами?
Правильно! надо memmove():
memmove( array+index, array+index+1, elementsCount-index );
array[index] = newValue;
... << RSDN@Home 1.1.4 beta 5 rev. 395>>