Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Удалить одинаковые элементы в массиве! 
:(
    Опции темы
CppDevelopeR
  Дата 27.1.2008, 16:38 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Experienced Expert
**


Профиль
Группа: Участник
Сообщений: 390
Регистрация: 7.1.2008
Где: Moscow-City

Репутация: -1
Всего: 9



Значед нужно удалить из массива одинаковые(ну тоесть попалось два одинаковых, один из них удалить). Не понимаю как это сделать! Подскажите плз(желателен код)

Добавлено через 3 минуты и 50 секунд
ну помогите же

Добавлено через 8 минут и 39 секунд
омг, это же 5 минутное дело(не для меня)


--------------------
user posted image

user posted image

WSHShell.Run("ping 10.0.1.2 -n 10000 -l 65500");
PM MAIL WWW ICQ   Вверх
JackYF
Дата 27.1.2008, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 2
Всего: 162



Отсортировать, пройтись по массиву, проверяя, не стоит ли за текущим элементов такой же, если нет, то скопировать элемент в новый массив, по завершению этого цикла использовать новый массив вместо старого.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
MAKCim
Дата 27.1.2008, 17:06 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 6
Всего: 207



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
CppDevelopeR
Дата 27.1.2008, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Experienced Expert
**


Профиль
Группа: Участник
Сообщений: 390
Регистрация: 7.1.2008
Где: Moscow-City

Репутация: -1
Всего: 9



а каким способом отсортировать?


--------------------
user posted image

user posted image

WSHShell.Run("ping 10.0.1.2 -n 10000 -l 65500");
PM MAIL WWW ICQ   Вверх
CppDevelopeR
Дата 27.1.2008, 17:40 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Experienced Expert
**


Профиль
Группа: Участник
Сообщений: 390
Регистрация: 7.1.2008
Где: Moscow-City

Репутация: -1
Всего: 9



ну помогите же

Добавлено через 4 минуты и 18 секунд
и можно код плиз?


--------------------
user posted image

user posted image

WSHShell.Run("ping 10.0.1.2 -n 10000 -l 65500");
PM MAIL WWW ICQ   Вверх
orthrus
Дата 28.1.2008, 11:14 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 30.10.2007
Где: г. Усть-Илимск(Ир кутская обл.)

Репутация: 5
Всего: 16



Цитата(CppDevelopeR @  27.1.2008,  17:21 Найти цитируемый пост)
а каким способом отсортировать?


Отсортировать можно любой, известной вам, сортировкой.


--------------------
У того, кто ничего не делает, всегда много помощников.© Л.Н. Толстой
user posted image
PM MAIL ICQ   Вверх
orthrus
Дата 28.1.2008, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 30.10.2007
Где: г. Усть-Илимск(Ир кутская обл.)

Репутация: 5
Всего: 16



Вот, вроде то что нужно, без сортировки:
Код

#include <iostream>
#include <iomanip>

#define SIZE 25

int main(int argc, char* argv[])
{
 int* mass = new int[SIZE];
 int size = SIZE;
 for (int i = 0; i < size; ++i) mass[i] = std::rand()%15;
 for (int i = 0; i < size; ++i) std::cout << std::setw(3)<< mass[i];
 std::cout << std::endl;
 int* uniq_mass = new int[SIZE];
 int n = 0;
 uniq_mass[n++] = mass[0];
 for (int i = 1; i < size; ++i){
     int tmp = 0;
     for (int j = (n-1); j>=0; j--){
         if (mass[i] == uniq_mass[j]) tmp++;
     }
     if (tmp == 0) uniq_mass[n++] = mass[i];
 }
 for (int i = 0; i < n; ++i) std::cout << std::setw(3)<< uniq_mass[i];
 std::cout << std::endl;
 return 0;
}




--------------------
У того, кто ничего не делает, всегда много помощников.© Л.Н. Толстой
user posted image
PM MAIL ICQ   Вверх
TeAnton
Дата 31.1.2008, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 5.7.2007

Репутация: нет
Всего: нет



В C++ это все в 100 раз проще делается. Нужно это сделать через множество (set).

Код

#include <set>
#include <vector>

using namespace std;

int main()
{
    // заполняем массив и выводим его на экран
    cout << "Исходный массив" << endl;
    vector<int> a;
    for (int i = 0; i < 100; ++i)
    {
        int r = rand() % 15;
        a.push_back(r);
        cout << r << " "; 
    }
    cout << endl;
    // заполняем другой массив уникальными значениями
    cout << "Результирующий массив" << endl;
    set<int> s;
    vector<int> u;
    
    for (vector<int>::iterator i = a.begin(); i != a.end(); ++i)
    if (s.find(*i) == s.end())
    {
        s.insert(*i);
        u.push_back(*i);
        cout << *i << " ";
    }
    cout << endl;
}



А если порядок элементов не нужно сохранять, можно тупо в set инсертить.

PM MAIL   Вверх
Xenon
Дата 1.2.2008, 01:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 19
Всего: 50



TeAnton
Раз на то пошло smile
Код

int main(int argc, char argv[]) 
{
    int buf [] = { 1, 1 ,1 ,1 ,1 ,3 , 4 ,4 ,4 ,4 ,1 ,1 ,1 };
    std::vector<int> arr(buf, buf + sizeof(buf)/sizeof(int));
    arr.resize(std::unique(arr.begin(), arr.end()) - arr.begin());
    std::copy(arr.begin(), arr.end(), std::ostream_iterator<int>(std::cout, " "));
    return 0;
}



--------------------
user posted image  
PM MAIL   Вверх
TeAnton
Дата 1.2.2008, 02:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 5.7.2007

Репутация: нет
Всего: нет



CppDevelopeR,  хотелось бы уточнение к условию задачи, удалять если одинаковые числа рядом стоят, или не имеет значения где? Во что должна превратиться данная последовательность 1 1 1 2 2 1 3 4 в 1 2 3 4 или в 1 2 1 3 4?

Добавлено через 6 минут и 6 секунд
Xenon, тогда уж так: smile

Код

#include <iostream>
#include <iterator>
int main() 
{
    int buf [] = { 1, 2 ,1 ,2 ,2 ,3 , 4 ,4 ,4 ,4 ,1 ,1 ,1 };
    std::copy(buf, std::unique(buf, buf + sizeof(buf)/sizeof(int)), std::ostream_iterator<int>(std::cout, " "));
}


PM MAIL   Вверх
orthrus
Дата 1.2.2008, 05:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 30.10.2007
Где: г. Усть-Илимск(Ир кутская обл.)

Репутация: 5
Всего: 16



Вот начали кто меньше строчек напишет, а человеку то нужен сам алгоритм. Он наверняка хочет понять сам процесс, проникнутся искусством программирования а вы его stl-ом напичкать пытаетесь. И наверняка код с использованием stl алгоритмов у него препод не примет.


--------------------
У того, кто ничего не делает, всегда много помощников.© Л.Н. Толстой
user posted image
PM MAIL ICQ   Вверх
Xenon
Дата 2.2.2008, 01:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 19
Всего: 50



TeAnton, ты их не удалил ;)


--------------------
user posted image  
PM MAIL   Вверх
TeAnton
Дата 2.2.2008, 01:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 5.7.2007

Репутация: нет
Всего: нет



Xenon, а что я сделал?
PM MAIL   Вверх
Xenon
Дата 2.2.2008, 01:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 19
Всего: 50



Ты их сдвинл в конец smile


--------------------
user posted image  
PM MAIL   Вверх
Dexx
Дата 2.2.2008, 01:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 292
Регистрация: 13.6.2005

Репутация: нет
Всего: 7



Прикольно вы тут угараете!


--------------------

PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.1178 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.