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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2009, 15:30   #1
Dest
 
Аватар для Dest
 
Регистрация: 13.05.2009
Сообщений: 8
Восклицание Операции над максимальными элементами масссива ( С )

День добрый.
Поскольку имею маленький опыт в программировании массивов, хотелось бы попросить у вас помощи. собственно, задача такова:
Необходимо повторяющиеся элементы поставить в начало массива; элементы, которые не имеют дубликатов, должны находиться после них, сохраняя отсортированый вид.
Не могу понять, в чём трабла. Выдаёт слишком большие значения при выводе массива.
метод вычисления максимальных элементов и попытка написания перестановки выделены красным

Код:

#include <stdio.h>
#include <conio.h>
#define N 10
void main ()
{
int mass[N], new_m[N];
int i,j;
float t;

clrscr();

printf("\nVvedite elementi massiva n:\n");

for (i=0;i<N;i++)
 scanf("%d",&mass[i]);

printf("\nIshodnii massiv:\n");

for (i=0;i<N;i++)
 printf("%d ",mass[i]);
 putchar('\n');

//сортировка
     for (i=0;i<N;i++)
     for (j=0;j<(N-i-1);j++)
      {
       if (mass[j]<mass[j+1])
       {t=mass[j];
	mass[j]=mass[j+1];
	mass[j+1]=t;
       }
      }
printf("\nOtsortirovannii massiv: \n");
for (i=0;i<N;i++)
printf("%d ",mass[i]);
///////////////////////////////////////////

/*for (i=0;i<N;i++)
 if (mass[i]=mass[i+1])
     { new_m[j]=mass[i];
      new_m[j+1]=mass[i+1];
    }*/

printf("\nNew massiv: \n");
for (j=0;j<N;j++)
printf("%d ",new_m[i]);
}
ЗЫ: если что-то не правильно оформил, сильно не судите, поскольку это моя первая тема здесь
Анархия – массив монархий, состоящих из одного индивида.
Dest вне форума Ответить с цитированием
Старый 14.05.2009, 15:41   #2
Pashan
Пользователь
 
Регистрация: 18.03.2009
Сообщений: 89
По умолчанию

У тебя там под условием стоит оператор присваивания:
if (mass[i]=mass[i+1]) ...
Нужно сравнение:
if (mass[i]==mass[i+1]) ...
Pashan вне форума Ответить с цитированием
Старый 14.05.2009, 15:47   #3
Dest
 
Аватар для Dest
 
Регистрация: 13.05.2009
Сообщений: 8
По умолчанию

да, немного ошибся. я прогонял программу и при if (mass[i]==mass[i+1]), но там просто дублируется одно случайное значение массива, заполняя собой весь массив new_m и ожидаемого результата нету. ещё есть предложения?
Анархия – массив монархий, состоящих из одного индивида.
Dest вне форума Ответить с цитированием
Старый 14.05.2009, 16:22   #4
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

А j кто будет изменять?
Как-то так, но там полюбому нужно будет дорабатывать ещё:
Код:
j = 0;
for (i=0;i<N;i++)
{
  if (mass[i] == mass[i+1])
  {
    new_m[j++] = mass[i];
    new_m[j] = mass[i+1];
  }
}
pu4koff вне форума Ответить с цитированием
Старый 14.05.2009, 17:50   #5
Dest
 
Аватар для Dest
 
Регистрация: 13.05.2009
Сообщений: 8
По умолчанию

Нашёл решение проблемы.
код ниже


Код:
for (dupe=0,i=0;i<N;i++)
   if (mass[i]==mass[i+1])
       { new_m[j]=mass[i];
	 new_m[j+1]=mass[i+1];
	 dupe++;
	  for (j=0;j<dupe;j++)
	  printf("\nPovtorajushiesya elementi:%d %d",new_m[j],new_m[j+1]);
       }
1 не существенная проблема:
если, допустим, дан массив 2 5 8 6 9 1 4 3 1 5
то выбьет
Код:
Povtorajushiesya elementi:5 5
Povtorajushiesya elementi:5 1
Povtorajushiesya elementi:1 1
и т.д.. Но я полагаю, что эта проблема не существенна.
Спасибо всем за помощь
можно прикрывать топик
Анархия – массив монархий, состоящих из одного индивида.
Dest вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Операции над повторяющими значениями Iskin Microsoft Office Excel 7 22.04.2009 14:45
Простейщие операции над массивами ZloyGenii2008 Паскаль, Turbo Pascal, PascalABC.NET 0 27.12.2008 14:24
Операции над данными в ListBox Mr.User Помощь студентам 14 23.11.2007 03:26
Операции над данными yulia БД в Delphi 24 21.05.2007 01:18
операции над полями и строками zetrix Microsoft Office Excel 0 31.10.2006 08:08