Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
lerenia
3 / 3 / 3
Регистрация: 16.10.2012
Сообщений: 192
#1

Вывести повторяющиеся элементы - C (СИ)

12.04.2013, 17:46. Просмотров 1434. Ответов 27
Метки нет (Все метки)

Задан целочисленный массив Х из 20 элементов, среди которых есть повторяющиеся. Записать в массив Y по одному элементу из каждой группы одинаковых значений исходного массива.

Знаю что задача элементарная, но я не знаю с чего начать (после описания директорий).

http://www.cyberforum.ru/c-beginners/thread1938511.html
Добавлено через 43 минуты
я вот остановилась на вводе данных и дальше застряла, какой цикл организовать что бы он сравнивал елементы между собой?
C
1
2
for i:=1, x[i] = x[i+1], i++
y[i]=x[i]
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.04.2013, 17:46
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вывести повторяющиеся элементы (C (СИ)):

Вывести упорядоченные по убыванию повторяющиеся элементы произвольного одномерного массива
Вывести упорядочены по убыванию повторяющиеся элементы произвольного...

Найти повторяющиеся элементы массива
Есть одномерный массив надо выяснить сколько раз встречается пара таких же...

Удалить повторяющиеся элементы из массива
Требуется: Удалить из 2-мерного массива повторяющиеся элементы, оставив...

Удалить повторяющиеся элементы из односвязного списка
Я написал программу, которая удаляет дубликаты в списки, оставляя только его...

Заменить повторяющиеся в матрице элементы нулями
Известно, что в матрице A(n×m) нет нулей. Заменить повторяющиеся в матрице...

27
anmartex
...
1709 / 1202 / 909
Регистрация: 12.02.2013
Сообщений: 1,978
13.04.2013, 19:49 #21
Цитата Сообщение от lerenia Посмотреть сообщение
а как его переделать с указателем?
С каким указателем? И для каких целей?
0
lerenia
3 / 3 / 3
Регистрация: 16.10.2012
Сообщений: 192
13.04.2013, 19:54  [ТС] #22
Цитата Сообщение от anmartex Посмотреть сообщение
С каким указателем?
Цитата Сообщение от kotleta Посмотреть сообщение
#include <stdio.h> void stupid_sort(int * arr, int arr_size) { int i,j,tmp; for(i=0; i < arr_size; i++) { for(j=i+1; j < arr_size; j++) { if(arr[i] > arr[j]) { tmp=arr[i]; arr[i]=arr[j]; arr[j]=tmp; } } }
Цитата Сообщение от anmartex Посмотреть сообщение
И для каких целей?
научится разыменовывать и понять как вообще эти указатели работают
0
anmartex
...
1709 / 1202 / 909
Регистрация: 12.02.2013
Сообщений: 1,978
13.04.2013, 20:25 #23
Цитата Сообщение от lerenia Посмотреть сообщение
научится разыменовывать и понять как вообще эти указатели работают
Что ж, удачи!:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <locale.h>
 
#include <stdlib.h>
#include <time.h>
 
#define n 20
 
int main()
{
   srand(time(NULL));
   setlocale(LC_CTYPE, "");
   int x[n], y[n], i, k, t;
 
   int* ptrX;
   int* curX;
   int* endX = x + n;
 
   int* ptrY;
   int* endY = y;
   /***************************************/
   printf("Введите 5 элементов массива:\n");
   for (i = 0; i < n; i++)
   {
      //printf("%d-й элемент:\n", i);
      //scanf("%d", &x[i]);
      x[i] = rand() % 10;
   }
   /***************************************/
 
   k = 0;
   for (ptrX = x; ptrX < endX - 1; ++ptrX)
   {
      for (curX = ptrX + 1; (curX < endX) && (*curX != *ptrX); ++curX) { ; }
 
      if (*curX == *ptrX)
      {
         for (ptrY = y; (ptrY < endY) && (*ptrY != *ptrX); ++ptrY) { ; }
 
         if (*ptrY != *ptrX)
         {
            *(endY++) = *ptrX;
         }
      }
   }
 
   k = endY - y;
 
   /***************************************/
   printf("Исходный массив:\n");
   for (i = 0; i < n; i++)
   {
      printf("%5d", x[i]);
      if (((i + 1) % 5) == 0)
      {
         printf("\n");
      }
   }
   printf("\n Повторяющиеся элементы:\n");
   for (t = 0; t < k; t++)
   {
      printf("%5d", y[t]);
      if (((t + 1) % 5) == 0)
      {
         printf("\n");
      }
   }
   getch();
 
   return 0;
}
1
lerenia
3 / 3 / 3
Регистрация: 16.10.2012
Сообщений: 192
14.04.2013, 15:50  [ТС] #24
Цитата Сообщение от anmartex Посмотреть сообщение
#include <time.h>
простите а зачем эта функция? я думала она возвращает время в секундах с компьютера.
0
anmartex
...
1709 / 1202 / 909
Регистрация: 12.02.2013
Сообщений: 1,978
14.04.2013, 16:01 #25
Цитата Сообщение от lerenia Посмотреть сообщение
простите а зачем эта функция?
Для функции time, а она в свою очередь для функции srand.


Кстати, я в последнем коде потенциальный баг занёс. Строки 38 и 42, так что спешу исправиться:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <locale.h>
 
#include <stdlib.h>
#include <time.h>
 
#define n 20
 
int main()
{
   srand(time(NULL));
   setlocale(LC_CTYPE, "");
   int x[n], y[n], i, k, t;
 
   int* ptrX;
   int* curX;
   int* endX = x + n;
 
   int* ptrY;
   int* endY = y;
   /***************************************/
   printf("Введите 5 элементов массива:\n");
   for (i = 0; i < n; i++)
   {
      //printf("%d-й элемент:\n", i);
      //scanf("%d", &x[i]);
      x[i] = rand() % 10;
   }
   /***************************************/
 
   k = 0;
   for (ptrX = x; ptrX < endX - 1; ++ptrX)
   {
      for (curX = ptrX + 1; (curX < endX) && (*curX != *ptrX); ++curX) { ; }
 
      if (curX != endX)
      {
         for (ptrY = y; (ptrY < endY) && (*ptrY != *ptrX); ++ptrY) { ; }
 
         if (ptrY == endY)
         {
            *(endY++) = *ptrX;
         }
      }
   }
 
   k = endY - y;
 
   /***************************************/
   printf("Исходный массив:\n");
   for (i = 0; i < n; i++)
   {
      printf("%5d", x[i]);
      if (((i + 1) % 5) == 0)
      {
         printf("\n");
      }
   }
   printf("\n Повторяющиеся элементы:\n");
   for (t = 0; t < k; t++)
   {
      printf("%5d", y[t]);
      if (((t + 1) % 5) == 0)
      {
         printf("\n");
      }
   }
   getch();
 
   return 0;
}
1
lerenia
3 / 3 / 3
Регистрация: 16.10.2012
Сообщений: 192
14.04.2013, 16:44  [ТС] #26
anmartex, спасибо огромное)
Цитата Сообщение от anmartex Посмотреть сообщение
for (i = 0; i < n; i++) { //printf("%d-й элемент:\n", i); //scanf("%d", &x[i]); x[i] = rand() % 10; }
последний вопрос)))) а почему здесь считывание вводимых элементов комментарий?
0
anmartex
...
1709 / 1202 / 909
Регистрация: 12.02.2013
Сообщений: 1,978
14.04.2013, 16:49 #27
lerenia, для тестирования очень муторно вводить постоянно числа, поэтому я просто задал генерацию случайных чисел в диапазоне от 0 до 9 (строка 29), а вот ваш код я просто закомментировал.
0
lerenia
3 / 3 / 3
Регистрация: 16.10.2012
Сообщений: 192
14.04.2013, 16:50  [ТС] #28
ааа) ясно) спасибо)
0
14.04.2013, 16:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2013, 16:50
Привет! Вот еще темы с решениями:

Удалить повторяющиеся элементы из массива символов
Как удалить повторяющиеся элементы из массива символов? char str={&quot;abcdea&quot;};

Вывести повторяющиеся идентификаторы
#include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; #include &lt;ctype.h&gt; #include...

Сравнить два массива, из большего вытащить не повторяющиеся элементы в новый
Есть задача Даны два целочисленных массива. Если размер первого массива больше...

Сортировка элементов массива так, что сначала идут все повторяющиеся элементы
Привет всем, может кто-то уже сталкивался с такой задачей, вводим элементы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru