Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Опять массивы


Автор: Wild 25.11.2004, 18:42
Что нужно сделать с элементом, чтобы изменить его положение
в списке элементов?
Example: В задаче сказано преобразовать массив так, чтобы все элементы, равные 0, стояли после всех остальных.

Автор: dargaard 25.11.2004, 19:00
Переместить нужный елемент куда надо.
Из примера:
Код

#include <stdlib.h>

int m[]={0,0,1,2,3,7,0,5,1,2,0,3,4,7,11,180,0};
int main() {

   int i,k,sz;

   sz=sizeof(m)/4;

   for (i=0; i<sz; i++) {
       printf("%d ",m[i]);
   }
   printf("\n");

   
   

   k=0;
   for (i=0; i<sz; i++) {
       if (m[i]!=0) {
           //перемешяем элемент куда надо (в к-ый кладем i-тый)
           m[k]=m[i];
           k++;
       }
   }
   
   for (; k<sz; k++) {
       m[k]=0;
   }

   for (i=0; i<sz; i++) {
       printf("%d ",m[i]);
   }
   printf("\n");
}


Автор: sergejzr 27.11.2004, 16:29
Вот ещё, возможно поможет smile Для замены местами двух елементов.
Код

<template class Element>
//el: Массив
// first, second индексу елементов, которые надо поменять местами
void exchange(Element *el, int first, int second)
{
Element help=el[first];
el[first]=el[second];
el[second]=help;
}

Автор: bel_nikita 27.11.2004, 18:34
sergej.z Может, вот, такое имел ввиду : smile
Код
template<class T> inline
void swap(T& Left, T& Right)
{
 T Temp  = Left;
 Left    = Right;
 Right   = Temp;
}

...
 int Array[100];
 Array[30] = 0xFFFFF;
 Array[10] = 0xAAAAA;
 printf("\nArray[30]= %08X",Array[30]);
 printf("\nArray[10]= %08X",Array[10]);
 swap(Array[30],Array[10]);
 printf("\nArray[30]= %08X",Array[30]);
 printf("\nArray[10]= %08X",Array[10]);
...

Автор: sergejzr 27.11.2004, 18:49
Да, конечно так элегантней smile

Автор: A... 28.11.2004, 00:10
bel_nikita , а что зто означает ?

Код

 Array[30] = 0xFFFFF;
 Array[10] = 0xAAAAA;

Автор: cardinal 28.11.2004, 00:35
Цитата(A @ 27.11.2004, 23:10)
bel_nikita , а что зто означает ?

Это присвоения значений элементам 11 и 31 (если исходить из того, что Array[0] это первый элемент)

Автор: bel_nikita 28.11.2004, 01:18
Дополню cardinal'а. 0xFFFFF и 0xAAAAA - это числа в Hex'ах smile

А вот, еще для пущей путаницы: smile
Код

int Array[100];
30[Array] = 0xFFFFF; //;)
10[Array] = 0xAAAAA; //;)
printf("\nArray[30]= %08X",Array[30]);
printf("\nArray[10]= %08X",Array[10]);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)