Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/25: Рейтинг темы: голосов - 25, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 06.04.2011
Сообщений: 6

Оставить в списке только первые вхождения одинаковых элементов

08.09.2011, 10:13. Показов 5448. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В составе программы описать функцию, которая оставляет в списке только первые вхождения одинаковых элементов.

Добавлено через 10 минут
куку ))))
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.09.2011, 10:13
Ответы с готовыми решениями:

Оставить только первые вхождения каждой цифры, остальные вхождения заменить нулями
Размер длинного числа – 4 байта. Ввод-вывод в шестнадцатеричной СС. Использовать побитовые операции. Дано длинное целое...

Оставить в числе только первые вхождения каждой цифры
23) Дано длинное целое неотрицательное число, шестнадцатеричное представление которого не содержит ни одного нуля. Просматривая число,...

Оставить в словах только первые вхождения каждой буквы.
Всем Hello! Помогите с решением друзья, буду очень благодарен))) Строки: 1) Оставить в словах только первые вхождения каждой буквы.

3
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
08.09.2011, 10:16
Твои наработки?
1
0 / 0 / 0
Регистрация: 06.04.2011
Сообщений: 6
08.09.2011, 10: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
#include <iostream>
using namespace std;
 
void main()
{   struct node {   int info;
        struct node *next;
       };
    typedef node *NodePtr;  // указатель на тип node
    NodePtr head = NULL;
    NodePtr p;          // указатель на текущий элемент
    NodePtr tail;           // указатель на "хвост" очереди
    int N = 10;         // количество элементов в очереди
    int cnt = 1;            // счетчик элементов в очереди
 
    if (head == NULL)
    {   head = new node;
    head->info = cnt++; // или какому-то другому значению
    head->next = NULL;
    tail = head;
    }
    for (int i = 2; i<=N; i++)
    { p = new node;
    p->info = cnt++;
    tail->next = p;     // в данном случае - NULL
    p->next = NULL;
    tail = p;
    }
// Вывод очереди на экран
p = head;
for (i = 1; i<=N; i++)
    {   cout << p->info << ' ';
    p = p->next;
    }
cout <<endl;}
 Комментарий модератора 
Используйте теги форматирования кода

вот эту лабу сделал а ту не могу смысла не понимаю (
в этой задание (Программа формирования очереди из 10 элементов и вывода ее на экран. )вроде они из одной темы ))
заранее спасибо

Добавлено через 7 минут
я новичок в этом деле слегка не понимаю можешь просто помоч пожалуйста

Добавлено через 3 минуты
а потом я исправлюсь
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
08.09.2011, 11:15
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#include <stdio.h>
#include <stdlib.h>
 
#define FREE(PTR) free(PTR), (PTR) = NULL
 
struct node
{
    int data;
    struct node* next;
};
 
struct queue
{
    struct node* head;
    struct node* tail;
};
 
void create(struct queue*);
void delete(struct queue*);
void enqueue(struct queue*, int);
void unique(struct queue*);
int dequeue(struct queue*);
int empty(struct queue*);
void print(struct queue*);
 
int main(int argc, char* argv[])
{
    int i;
    int val;
 
    struct queue queue;
    
    if(argc == 1)
    fputs("No data\n", stderr), exit(1);
 
    create(&queue);
    
    for(i = 1; i < argc; ++i)
    {
    val = atoi(argv[i]);
    enqueue(&queue, val);
    }
    
    puts("Before removing duplicates:");
    print(&queue);
    unique(&queue);
    puts("After removing duplicates:");
    print(&queue);
    delete(&queue);
 
    exit(0);
}
 
void create(struct queue* l)
{
    l->head = l->tail = NULL;
}
 
void delete(struct queue* l)
{
    struct node* n;
    while(l->head != NULL)
    {
    n = l->head;
    l->head = l->head->next;
    FREE(n);
    }
}
 
void enqueue(struct queue* l, int elem)
{
    struct node* n;
    n = malloc(sizeof(struct node));
    n->data = elem;
    n->next = NULL;
    if(l->head == NULL)
    l->head = n;
    else
        l->tail->next = n;
    l->tail = n;
}
 
int dequeue(struct queue* l)
{
    struct node* n;
    int retval;
    n = l->head;
    if(n == NULL)
    abort();        /* тут обрабока случая с пустым списком */
    retval = n->data;
    l->head = l->head->next;
    FREE(n);
    return retval;
}
 
void unique(struct queue* l)
{
    struct node *p, *q, *last;
    p = l->head;
    while(p != NULL)
    {
    last = p;
    q = last->next;
    while(q != NULL)
    {
        if(q->data == p->data)
        {
        last->next = q->next;
        FREE(q);
        q = last->next;
        }
        else
        {
        last = q;
        q = q->next;
        }
    }
    p = p->next;
    }
}
 
int empty(struct queue* l)
{
    return l->head != NULL;
}
 
void print(struct queue* l)
{
    struct node* n;
    n = l->head;
    while(n != NULL)
    {
    printf("%d ", n->data);
    n = n->next;
    }
    
    putchar('\n');
}
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[nameless@desktop c]$ ./sample 1 2 3 4
Before removing duplicates:
1 2 3 4 
After removing duplicates:
1 2 3 4 
[nameless@desktop c]$ ./sample 2 2 2 2
Before removing duplicates:
2 2 2 2 
After removing duplicates:
2 
[nameless@desktop c]$ ./sample 1 2 3 3 2 4
Before removing duplicates:
1 2 3 3 2 4 
After removing duplicates:
1 2 3 4 
[nameless@desktop c]$
Обработку ошибочных ситуаций (невыделение памяти, удаление элементов из пустой очереди) сделаешь сам
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.09.2011, 11:15
Помогаю со студенческими работами здесь

Оставить в слове только первые вхождения каждой буквы
Задав с клавиатуры последовательность символов, реализовать обработку ее.Исходные данные задать самостоятельно. оставить в слове...

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

Оставить в строке только первые вхождения букв в словах классом string
Здравствуйте, форумчане! Столкнулся с проблемой при изучении строк : Нужно оставить в строке только первые вхождения букв в словах с...

Текстовые файлы: оставить в каждом слове только первые вхождения каждой буквы
Здравствуйте, прошу помочь с заданием по программированию. Задание на программирование: используя технологию процедурного...

Напечатать все слова, предварительно оставить в слове только первые вхождения каждой буквы
8.Составить программу для розвязання задачи. Дана последовательность, содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 строчных...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru