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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2010, 20:51   #1
ewans
 
Регистрация: 13.12.2009
Сообщений: 6
По умолчанию Масивы

Отсортировать массив так, чтобы сначала в нем шли нулевые, затем положительные и, в конце, отрицательные элементы. Порядок следования самих элементов не менять. Посмотрите плиз что не так.
Код:
int main(int argc, char *argv[])
{
	int j=0,k=0,g=0;
	int a[10];
	int poss,i,pos,posss;
	printf ("Vvedite massiv\n");
	for ( i=0;i<10; i++)
	{
		scanf ("%i",&a[i]);
	}
		for ( i=0;i<10;i++)
{
if (a[i]==0) {poss=a[j]; a[j]=a[i]; a[i]=poss; j++;}
		if(a[i]>0) {pos=a[k];a[k]=a[i];a[i]=pos;k++;}
		if(a[i]<0) {posss=a[g];a[g]=a[i];a[i]=posss;g++;}
}
	
for (i=0;i<10;i++) printf ("%d",a[i]);
	return 0;
}

Последний раз редактировалось Sazary; 03.01.2010 в 22:15.
ewans вне форума Ответить с цитированием
Старый 04.01.2010, 00:45   #2
Valentine
Пользователь
 
Регистрация: 29.11.2009
Сообщений: 14
По умолчанию

Да всё не так. Если условие выполняется, то элеметы массива нужно сдвинуть вправо, а удовлетворяющий условию переписать в начало с учетом предыдущего сдвига. Первый цикл ставит в начало нули, второй - положительные элементы, а отрицательные сами сортируются. Переменные array,tmp,i,j передаются по ссылке, остальные по значению


Код:
s=0;
  for (i=array;i<array+n;i++)
    {
    if (*i==0)
      {
      *tmp=*i;
      for (j=i;j>array+s;j--)
	*j=*(j-1);
      *(array+s)=*tmp;
      s++;
      }
    }

  for (i=array;i<array+n;i++)
    {
    if (*i>0)
      {
      *tmp=*i;
      for (j=i;j>array+s;j--)
	*j=*(j-1);
      *(array+s)=*tmp;
      s++;
      }
Valentine вне форума Ответить с цитированием
Старый 04.01.2010, 01:17   #3
ewans
 
Регистрация: 13.12.2009
Сообщений: 6
По умолчанию

спасибо, буду разбираться
ewans вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Масивы ewans Общие вопросы C/C++ 3 28.12.2009 15:29
Масивы в С++ MoonDancer Помощь студентам 2 02.12.2009 11:41
масивы с++ Smile.id Помощь студентам 1 25.11.2009 15:09
С++ масивы Миха Шебалкин Помощь студентам 0 03.06.2009 22:33