Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/29: Рейтинг темы: голосов - 29, средняя оценка - 4.62
1 / 1 / 0
Регистрация: 08.09.2012
Сообщений: 35
1

Проверить, есть ли в списке хотя бы два одинаковых элемента

08.10.2013, 16:07. Показов 5261. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Народ, нужна помощь, как можно сделать проверку через булевскую переменную, добрался до списков, а с булевыми так и не довелось поработать и тут встрял...

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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <locale.h>
 
 typedef struct list_elem { // структура - элемент списка
 
      int index;            // поле данных
 
      struct list_elem *next;
 
 
  } LEL;            // пользовательский тип структурной переменной
  LEL* AddElem (LEL *last); // функция присоединения нового элемента списка 
  void Del_El(void);        // функция проверки четности чисел и удаления элемента списка
  void PrintList(void);     //функция вывода на печать данных списка
  void  PoiskEl(void);      //функция поиска одинаковых элементов
  LEL  *list;           // адрес начала списка
 
  int main()
{
  setlocale(LC_ALL, "");
  int N;
  printf("\n Размер списка: ");
  scanf("%d",&N);       // ввод размера списка
  LEL *end=NULL;        // указатель на последний элемент
 
  printf("\nВвод элементов:");
 
  do{           // цикл формирования списка
     end=AddElem(end);
     if(end==NULL)      //  выход из цикла
     break;
     N--;           // счетчик введенных элементов
    } while(N > 0); // пока необходимо вводить элементы                      
 
    printf("\n\n\nРезультат:");
    PrintList();            // вывод на печать сформированного списка
    PoiskEl();
    printf("\n\n\n Нету одинаковых элементов в списке ");
    getch();
    return 0;
}
 
  LEL* AddElem (LEL *last)
  {
    LEL *pel;               // указатель на новый элемент        
    static int num=1;           // номер вводимого элемента
    pel=(LEL*)malloc(sizeof(LEL));      // выделение памяти для элемента
    printf("\n\t%d Элемент: ",num);
    scanf("%d",&pel->index);        // ввод данных
    pel->next=NULL;         // элемент становится последним в списке
 
    if(list==NULL)          // если список пуст, то введенный элемент становится первым  
        list=pel;
    else// иначе присоединяется к последнему в списке
        last->next=pel;
    num++;              // счетчик элементов
    return pel;
  }
 
  void PrintList(void)
  {
    LEL *pel=list;  
     while(pel!=NULL)           // пока не найден последний элемент
    {
        printf("%5d",pel->index);   // выводим содержимое поля index
        pel=pel->next;
 
    }
  }
 
  void PoiskEl(void)
    {
        LEL *pel=list;
        while(pel->next!=NULL)      //цикл сравнения элементов
        {
            while(pel->next!=NULL)
                {
                     pel=pel->next;
                     if(list->index==pel->index)   //если есть одинаковые элементы - выходим из цикла 
                        {
                            printf("\n\n Есть одинаковые элементы в списке.\n\n");
                             exit (0);
       
                        }
 
                }
            pel=list->next;
            list=list->next;
      
        }
    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.10.2013, 16:07
Ответы с готовыми решениями:

Проверить, есть ли в непустом дереве хотя бы два одинаковых элемента
Описать логическую функцию проверяющую есть ли в непустом дереве хотя бы два одинаковых элемента

Проверить, есть ли в списке L хотя бы два одинаковых элемента
1)Составить программу, которая проверяет, есть ли в списке L хотя бы два одинаковых элемента. 2)...

Проверить, есть ли в списке хотя бы два одинаковых элемента
Доброго времени суток всем. Помогите, пожалуйста, переписать этот код на c++. Заранее спасибо. ...

Проверить, есть ли в списке хотя бы два одинаковых элемента
Прошу проверить правильность кода и помочь написать его дальше. Написать программу, обеспечивающую...

4
3564 / 2711 / 347
Регистрация: 11.03.2009
Сообщений: 6,236
09.10.2013, 20:08 2
Что значит "проверка через булеву переменную"?
0
419 / 418 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
09.10.2013, 22:21 3
наверное имеется ввиду дополнительная переменная, играющая роль флажка???
и по алгоритму, вы сравниваете последовательно значения 1 с 2,3..., 2 с 3,4... и т.д., а если список большой и повторяющиеся элементы в его самом конце??? Может упорядочить (как самый простой вариант), а потом проверять попарно?
0
1 / 1 / 0
Регистрация: 08.09.2012
Сообщений: 35
11.10.2013, 21:45  [ТС] 4
Ну булева, принимающая значение 0 или 1...

Добавлено через 2 минуты
Цитата Сообщение от vua72 Посмотреть сообщение
наверное имеется ввиду дополнительная переменная, играющая роль флажка???
и по алгоритму, вы сравниваете последовательно значения 1 с 2,3..., 2 с 3,4... и т.д., а если список большой и повторяющиеся элементы в его самом конце??? Может упорядочить (как самый простой вариант), а потом проверять попарно?
Ну, я если честно не представляю сам алгоритм, как тут действовать, у меня есть предложение функцию поиска элемента организовать через флажок, но тут получается придется сносить циклы.... не совсем понимаю с оформлением
0
3564 / 2711 / 347
Регистрация: 11.03.2009
Сообщений: 6,236
11.10.2013, 22:02 5
Циклы останутся. Просто вместо вывода на экран и выхода из программы, присваиваем некоторой переменной значение 1 (или 0, как больше нравится). После выхода из всех циклов проверяем значение переменной и, в зависимости от ее значения, решаем, что делать дальше.
1
11.10.2013, 22:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.10.2013, 22:02
Помогаю со студенческими работами здесь

Проверить, есть ли в списке хотя бы два одинаковых элемента
1. Проверить, есть ли в списке хотя бы два одинаковых элемента Помогите, пожалуйста, разобраться в...

Проверить, есть ли в списке хотя бы два одинаковых элемента
Дан список А, состоящий из записей: первое поле – символ, второе – адрес следующего элемента....

Проверить, есть ли в списке хотя бы два одинаковых элемента
Написать логическую функцию, которая проверяет, есть ли в списке хотя бы два одинаковых элемента....

Описать и проверить процедуру или функцию, которая проверяет, есть ли в списке L хотя бы два одинаковых элемента
Выдает ошибку памяти, где моя ошибка? unit Unit1; interface uses Winapi.Windows,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru