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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2010, 12:49   #1
MeTeOpA
Форумчанин
 
Аватар для MeTeOpA
 
Регистрация: 17.02.2010
Сообщений: 194
По умолчанию

Решил вот сесть вспомнить C# и поставил себе задачу что есть массив из 6 элементов. Требуется найти сколько в этом массиве разных чисел. Решил пойти путем нахождения хотя бы совпадений но выдает скажем мягко не тот результат который я ожидал. Если возможно укажите бестолковому где ошибка.

Вот собственно и код :

Код:
static void Main(string[] args)
        {
            Console.WriteLine("Введите количество элементов в массиве");
            int n= Convert.ToInt32(Console.ReadLine());
            int [] old = new int [n];
            int [] nw = new int[n];
            int i;
            int k;
            for (i = 0; i < n; i++)
            {
                Console.WriteLine("Введите элемент массива");
                old[i] = Convert.ToInt32(Console.ReadLine());
            }
            for (i=0; i < n; i++)
            {               
                for (int j=0; j < n; j++)
                {
                    if (old[i] == old[j])
                    {
                        Console.WriteLine("Совпадение найдено!");
                    }
                }
            }
            Console.ReadLine();
        }
При выполнении программы вне зависимости от того какие элементы массива были указаны выдает ряд строк "Совпадение найдено !".
Вопрос в том где ошибка?

Последний раз редактировалось Stilet; 07.10.2010 в 14:01.
MeTeOpA вне форума Ответить с цитированием
Старый 07.10.2010, 13:08   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Потому что вы проверяете весь массив со всем массивом.
То есть элемент old[i] при i = 0 и old[j] при j = 0.
Вы сравниваете элемент с собой и получаете совпадение.
Проверка должна быть такой
Код:
if (old[i] == old[j] && i != j)
MaTBeu вне форума Ответить с цитированием
Старый 07.10.2010, 13:15   #3
Tema_Crazzzy
Форумчанин
 
Регистрация: 29.04.2010
Сообщений: 114
По умолчанию

Цитата:
Сообщение от MeTeOpA Посмотреть сообщение
for (i=0; i < n; i++)
{
for (int j=0; j < n; j++)
{
if (old[i] == old[j])
{
Console.WriteLine("Совпадение найдено!");
}
................................... .
}[/CODE]
Нужно сделать так, чтобы индексы i и j не совпадали при проверке.
Например:
Код:
if ((old[i]==old[j])&&(j!=i)) cout<<"Совпадение найдено!"
Пока писал уже опередили))))))
Tema_Crazzzy вне форума Ответить с цитированием
Старый 07.10.2010, 13:43   #4
MeTeOpA
Форумчанин
 
Аватар для MeTeOpA
 
Регистрация: 17.02.2010
Сообщений: 194
По умолчанию

спасибо
MeTeOpA вне форума Ответить с цитированием
Старый 07.10.2010, 13:46   #5
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Можно еще проще - замените границу во втором цикле. Совсем не обязательно сравнивать элемент с предшествующими - это ведь уже проделано.
Напишите
Код:
for (int j=i+1; j < n; j++)
Black Fregat вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу разобраться в программном коде knight190 Помощь студентам 0 12.06.2010 12:27
Помогите разобраться в коде не погу понять где ошибка wagonwils Общие вопросы C/C++ 0 23.12.2009 21:02
ошибка в коде. не могу найти Giffon Общие вопросы C/C++ 3 30.11.2009 15:24
Не могу понять где ошибка в коде SeRhy Общие вопросы C/C++ 5 20.09.2009 13:10
помогити разобраться вчём ошибка в коде С++ Lorden Помощь студентам 2 02.02.2009 22:26