1 / 1 / 0
Регистрация: 22.01.2020
Сообщений: 6
1

Удаление дубликатов чисел в строке

05.02.2020, 15:32. Показов 5758. Ответов 4
Метки нет (Все метки)

Здравствуйте ,в чем ошибка?Необходимо удалить дубликаты.ВВОД
21
-2 -2 -2 4 5 6 7 7 7 7 7 7 7 7 91 91 92 92 93 93 96
ВЫВОД(каким должен быть)
-2 4 5 6 7 91 92 93 96
Вывод (у меня)
-2 4 5 6 7 91 92 93
Почему теряется последнее число?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main(){
int a, b, prev;
 
scanf("%d %d", &a, &prev);
 
for (int i =0; i < a; i++){
scanf("%d", &b);
if(b != prev)  
printf("%d ", prev);
prev=b;
}
 
 
return 0;
}
Сама задача
Удалить из последовательности дубликаты.

Входные данные:
В первой строке задано натуральное число N . Во второй строке записана упорядоченная по возрастанию последовательность из N целых чисел, которая может содержать одинаковые элементы.

Выходные данные:
Вывести все различные элементы последовательности, упорядоченные по возрастанию.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.02.2020, 15:32
Ответы с готовыми решениями:

Задача о строке. Удаление дубликатов слов
В строке символов определить количество повторений каждого слова и удалить дубликаты слов.Слова ...

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

Удаление дубликатов + ассинхронное удаление из другой таблицы
Есть две таблицы tbl_content : id, title tbl_pics : id, picname 1. Нужно удалить дубликаты...

Удаление дубликатов
скажите пожалуйста , как это работает вообще Const n=8000000; Var a,b:array of integer; ...

4
337 / 237 / 103
Регистрация: 26.03.2019
Сообщений: 407
05.02.2020, 15:41 2
Во-первых, поскольку вы читаете первое число сразу, цикл должен быть до a-1, а не до a. А последнее число теряется, потому что такой алгоритм: вы выводите последнее число из последовательности одинаковых, а самое последнее просто не с чем сравнивать. Если не менять алгоритм, то последнее прочитанное число нужно просто в любом случае выводить дополнительно в конце после цикла
2
1 / 1 / 0
Регистрация: 22.01.2020
Сообщений: 6
07.02.2020, 16:41  [ТС] 3
Спасибо,Елене изменил и всё работает.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
int main() {
int a, b,x=-9999;
scanf("%d", &a);
for (int i=0 ;  i <= (a-1); i++){
scanf("%d", &b);
 if(b > x)
printf("%d ", b );   
x=b;
}
  return 0;
}
1
0 / 0 / 0
Регистрация: 05.08.2019
Сообщений: 8
23.02.2021, 17:40 4
Wylsacom, а можете объяснить почему вы х приравниваете к b? Не могу понять этого маневра, тоже делаю это задание на степике как раз этого и не хватает.
0
13 / 13 / 0
Регистрация: 21.10.2011
Сообщений: 58
25.02.2021, 01:40 5
Честно сказать, я бы ваш ответ не принял. Не соблюдено условие. В условии не сказано, что дубликаты могут идти только подряд. Так что ваше решение, на других данных, будет давать некорректный результат

(придераюсь)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.02.2021, 01:40
Помогаю со студенческими работами здесь

Удаление дубликатов
Как с помощью макроса удалить дубликаты( не одну одинаковую линию из двух как в Экселе) а две...

Удаление дубликатов
Всем привет Пробую зачистить строки от повторений Текст строк примерно такой...

Удаление дубликатов
Как удалить из базы дубликаты, т.е. primati key у них отличаются, а отстальный данные совпадают?

Удаление дубликатов
Вопрос, как удалить дубликаты в столбце. Интересует удаление и дубликатов, и оригиналов...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru