Тупой ламерский вопрос!
От: LamoTypoe  
Дата: 08.06.05 20:25
Оценка:
Гм...
В общем дан одномерный интовский массив ну скажем элементов на 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
Re: Тупой ламерский вопрос!
От: slavdon  
Дата: 08.06.05 20:32
Оценка:
Здравствуйте, LamoTypoe, Вы писали:

LT>Гм...

LT>В общем дан одномерный интовский массив ну скажем элементов на 100 элементов
LT>Например заполненый случайно 90 элементов этого массива
LT>Требуется:
[bla-bla]

pasted from mIRC
[17:41:05] <******> да, вполне. буду ещё рассматривать, пока сессия..

к чему бы это......
Re[2]: Тупой ламерский вопрос!
От: LamoTypoe  
Дата: 08.06.05 21:16
Оценка:
Здравствуйте, 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 Выхоть если помогать отказались то хоть ошибки исправте!!! Голова болит жуть
Re: Тупой ламерский вопрос!
От: Sinclair Россия https://github.com/evilguest/
Дата: 09.06.05 03:38
Оценка: 3 (1)
Здравствуйте, 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>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Тупой ламерский вопрос!
От: Кодт Россия  
Дата: 09.06.05 08:46
Оценка:
Здравствуйте, 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


Закодировать эти алгоритмы на любимом языке программирования — будь то императивный или функциональный — оставляю на твоё усмотрение.
Перекуём баги на фичи!
Re[2]: Тупой ламерский вопрос!
От: wildwind Россия  
Дата: 09.06.05 10:09
Оценка: 1 (1)
Здравствуйте, Кодт, Вы писали:

К>Есть несколько способов.

К>1) "дырочный":
К>2) "электронный":

Есть еще "хакерский" — memcpy()
Re[3]: Тупой ламерский вопрос!
От: Кодт Россия  
Дата: 09.06.05 10:56
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Есть еще "хакерский" — memcpy()


Как memcpy работает с перекрывающимися диапазонами?
Перекуём баги на фичи!
Re[3]: Тупой ламерский вопрос!
От: StDenis Россия  
Дата: 09.06.05 11:20
Оценка: +1
Здравствуйте, wildwind, Вы писали:

W>Есть еще "хакерский" — memcpy()

тады уж memmove()?..
Re[4]: Тупой ламерский вопрос!
От: Plague Россия 177230800
Дата: 09.06.05 11:35
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, 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>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.