Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.02.2010, 20:05   #1
CHIFIRp
Новичок
Джуниор
 
Регистрация: 16.02.2010
Сообщений: 3
По умолчанию с++, одномерный массив, нахождение равных значений

Не могу понять каким образом прописать проверку наличия одинаковых значений.
Заранее спасибо.
CHIFIRp вне форума Ответить с цитированием
Старый 16.02.2010, 20:13   #2
Александр Елис
Пользователь
 
Регистрация: 18.08.2009
Сообщений: 70
По умолчанию

по-моему, проще всего создать переменную temp в нее записать первый элемент массива, пробежать по нему, сравнивая значения с temp. ну и записать потом в temp второе значение и т.д.
Александр Елис вне форума Ответить с цитированием
Старый 16.02.2010, 20:58   #3
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

Александр Елис зачем??
мы не ищем одинаковые числа
создаем перед записью цикл, от начала до конца массива на данный момент
{
в нем проверяем все элементы на равенство, если равно то некой переменной присваиваем значение 1, если нет то 0
}
если 0 то записываем в массив
и все)
dampirik вне форума Ответить с цитированием
Старый 16.02.2010, 21:18   #4
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от dampirik Посмотреть сообщение
создаем перед записью цикл
Перед записью чего куда?
Цитата:
Сообщение от dampirik
в нем проверяем все элементы на равенство
На равенство, пардон, чему?
Vago вне форума Ответить с цитированием
Старый 16.02.2010, 22:23   #5
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

вводим скажем с клавиатуры определенное число
//--------------
создаем переменную а=0
создаем цикл от начала до конца массива на данный момент
{
если элемент массива равен числу введенному с клавиатуры, то а=1
}
если а=0, то записываем в массив новое число(которое ввели с клавиатуры)
//--------------
dampirik вне форума Ответить с цитированием
Старый 16.02.2010, 22:46   #6
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от dampirik Посмотреть сообщение
если элемент массива равен числу введенному с клавиатуры, то а=1
Вообще-то, на этот случай в C оператор break есть

Но дело не в этом. Мне, всё-таки, почему-то кажется, что условие у этой задачи ближе к тому решению, которое Александр Елис дал Массив, будучи однажды введённым, уже не меняется, и всё, что нужно сделать, - это определить - имеется ли в нём хотя бы одна пара совпадающих между собой элементов. По крайней мере, я так условие понял...
Vago вне форума Ответить с цитированием
Старый 16.02.2010, 23:11   #7
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

Цитата:
Не могу понять каким образом прописать проверку наличия одинаковых значений.
Я понял так, идет заполнение массива и сравнивание элементов...чтобы не было повторений))
Автору два решения на выбор, в зависимости от цели)

ЗЫ а по решению Александр Елис, зачем создавать новую переменную
когда можно сравнивать первую переменную с массивом, вторую с массивом..и тд.(конечно в цикле)
ЗЫЫ Vago
Цитата:
C оператор break есть
есть, он прерывает цикл...
ты прав, что не стоит смотреть дальше если есть повтор...(ну мало ли повторы тоже нужно посчитать), но в данном решении(моем) переменная а нужна, ибо на основании её происходит запись или не происходит.
dampirik вне форума Ответить с цитированием
Старый 16.02.2010, 23:16   #8
CHIFIRp
Новичок
Джуниор
 
Регистрация: 16.02.2010
Сообщений: 3
По умолчанию

Дан массив, если в нём есть скажем две тройки, то надо написать, что есть повторение.
CHIFIRp вне форума Ответить с цитированием
Старый 16.02.2010, 23:38   #9
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

Код:
int[] mass = new int[10] {1,2,3,4,5,6,7,8,9,0};
            bool hod = true;
            for (int i = 0; i < mass.Length; i++)
            {
                for (int y = i+1; y < mass.Length; y++)
                {
                    if (mass[i] == mass[y])
                    {
                        this.textBox1.Text = "Есть повторы"+mass[i]+"       "+mass[y];
                        hod = false;
                        break;
                    }
                    
                }
                if (hod == false)
                    break;
                this.textBox1.AppendText(mass[i].ToString() + "  ");
            }
dampirik вне форума Ответить с цитированием
Старый 16.02.2010, 23:39   #10
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от dampirik Посмотреть сообщение
в данном решении(моем) переменная а нужна, ибо на основании её происходит запись или не происходит.
Это вот так примерно делается:
Код:
...
// где-то здесь объявлено всё, что нужно
...
// где-то здесь введён массив y[]
...
cin >> z;
...
for ( i = 0; i < n; i++ ) {
   if ( z == y[i] )
      break;
}
if ( i < n ) {  // Вышли по break ( a == 1 :)  )
// Может, что-то и в этом случае нужно сделать...
} else {   // Вышли по достижении конца цикла  ( a == 0 )
// Добавляем z в массив (список, вектор,.. - технические детали не важны сейчас) y[].
}
...
Vago вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерный массив. Q basic - Построить новый массив из элементов исходного ,которые больше P. Marishkaa Помощь студентам 2 12.01.2010 16:54
Двумерный массив, одномерный массив. Branbal Помощь студентам 14 18.11.2009 12:40
нахождение в массиве суммы значений, удовлетворяющих условию azov Microsoft Office Excel 27 26.06.2008 21:24