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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2014, 17:02   #1
schibeki
Пользователь
 
Регистрация: 27.11.2013
Сообщений: 67
По умолчанию подкорректировать: Дан массив, все элементы которого упорядочены. Найти количество различных элементов в данном массиве ( Delphi )

Помогите подделать прогу. само условие: Дан целочисленный массив размера N, все элементы которого упорядочены(по возрастанию и по убыванию). Найти количество различных элементов в данном массиве. у меня сам код на делфи
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
R:integer;
N:integer;
j,i:integer;
a: array [1..10] of integer;
bol:boolean;
begin
// ввод данных
n:=StrToInt(InputBox('Введите N (N<=10)','','0'));
// ручной ввод значений массива
for i:=1 to n do begin A[i]:=StrToInt(InputBox(format('a[%d]',[i]),'','0')); end;
for i:=1 to n do Memo1.Lines.Add(IntToStr(A[i]));
R:=0;
for i:=1 to n-1 do
begin
bol:=true; // присвоение начального значения
for j:=i+1 to n do
begin
if (a[i]=a[j])and(i<>j) then bol:=false; //цикл для проверки элементов от определяемого до конца массива.
end;
if bol then inc(R); // если элемент неимеет похожих элементов подсчитываем его
end;
// вывод результата
Memo1.Lines.Add('количество различных элементов = '+IntToStr(R));
end;
Но данная прога работает некорректно,т.е. вот Введенные элементы:
1
2
3
4
1
2
3
4
количество различных элементов = 3
должно было написать,что различных элементов нет, а если так
Введенные элементы:
2
2
6
5
количество различных элементов = 2
то правильно и если введу так
Введенные элементы:
2
2
3
3
4
4
количество различных элементов = 2

тоже неправильно. помогите,пожалуйста....
schibeki вне форума Ответить с цитированием
Старый 19.02.2014, 22:16   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

не смотрел ваш код, но, обратите внимание, что Вы НАРУШАЕТЕ условия задачи!!!
Цитата:
Дан целочисленный массив размера N, все элементы которого упорядочены
Вы задаёте НЕУПОРЯДОЧЕННЫЕ массивы.
А это принципиально важно!!


p.s. кстати, и не согласен с вашей трактовкой задачи!
Цитата:
2
2
6
5
количество различных элементов = 2
то правильно
на мой взгляд, это неверно. В данном примере 3(три) различных элемента! Это 2, 5, 6

а, например, если взять массив:
1
2
3
4
5
то тут различных элементов ровно 5(пять). Перечислить, или сами найдёте?

Последний раз редактировалось Serge_Bliznykov; 19.02.2014 в 22:19.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.02.2014, 22:52   #3
schibeki
Пользователь
 
Регистрация: 27.11.2013
Сообщений: 67
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
не смотрел ваш код, но, обратите внимание, что Вы НАРУШАЕТЕ условия задачи!!!


Вы задаёте НЕУПОРЯДОЧЕННЫЕ массивы.
А это принципиально важно!!


p.s. кстати, и не согласен с вашей трактовкой задачи!

на мой взгляд, это неверно. В данном примере 3(три) различных элемента! Это 2, 5, 6

а, например, если взять массив:
1
2
3
4
5
то тут различных элементов ровно 5(пять). Перечислить, или сами найдёте?
я ввел
3
6
7
7
9
9
должно было вывести 2 различных элемента,т.е те,которые не повторяются в массиве,а вывело 3

тоже самое,когда ввожу
7
7
4
4
2
5

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

Последний раз редактировалось Stilet; 19.02.2014 в 23:35.
schibeki вне форума Ответить с цитированием
Старый 19.02.2014, 23:05   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от schibeki Посмотреть сообщение
я ввел
3
6
7
7
9
9
должно было вывести 2 различных элемента,т.е те,которые не повторяются в массиве,а вывело 3
нет, не так. При чём здесь - "повторяются" или "не повторяются".

в данном массиве четыре различных элемента.

Вот, допустим, Вы собираете марки.
У Вас две марки "Голубой Маврикий", пять марок (одинаковых) с Юрием Гагариным и три одинаковые марки с А.П.Чеховым.

Вопрос, сколько РАЗЛИЧНЫХ марок у Вас в коллекции?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.02.2014, 23:06   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от schibeki Посмотреть сообщение
все,я понял,кажись,саму суть условия,т.е. если два элемента,просто считать за один и все
если только они ОДИНАКОВЫЕ!!

И вообще, все одинаковые элементы, хоть их два, хоть пятьдесят, если они одинаковые - то их считать за ОДИН отличный от других элемент!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.02.2014, 01:37   #6
schibeki
Пользователь
 
Регистрация: 27.11.2013
Сообщений: 67
По умолчанию

а если вообще их не считать,то неправильно будет?
schibeki вне форума Ответить с цитированием
Старый 20.02.2014, 08:29   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от schibeki Посмотреть сообщение
а если вообще их не считать,то неправильно будет?
ну, конечно же, неправильно!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.02.2014, 08:35   #8
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Код:
arr : array[0..n] of real;
for i:=0 to n-1 do
if (arr[i] != arr[i+1]) then inc(numb);
Считаем только переходы от 1 символа к другому, т.к. массив упорядочен.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 20.02.2014, 09:35   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Vanta11a Посмотреть сообщение
Код:
arr : array[0..n] of real;
for i:=0 to n-1 do
if (arr[i] != arr[i+1]) then inc(numb);
Считаем только переходы от 1 символа к другому, т.к. массив упорядочен.
В принципе с подходом полностью согласен!

А почему у Вас индексация массива в примере такая странная?!
и ещё, важно! Нужно numb проиницилизировать единицей (разумеется, если массив не пустой!)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.02.2014, 09:39   #10
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Цитата:
А почему у Вас индексация массива в примере такая странная?!
А чтобы жизнь медом не казалась ^_^
Цитата:
и ещё, важно! Нужно numb проиницилизировать единицей (разумеется, если массив не пустой!)
Нужно, но это на совести ТС.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан массив из 18 вещественных чисел, все элементы которого различны. Не могу сделать вывод результатов. ( на С ) Максим28 Помощь студентам 4 22.11.2013 02:38
Дан массив A[7,7]. Найти количество столбцов, составленных из попарно различных элементов (Pascal) yul111-95 Паскаль, Turbo Pascal, PascalABC.NET 0 02.02.2013 22:01
Дан массив, содержащий N элементов. Найти наименьший элемент массива а, значения элементов которого вычисляются по формуле: аiтое= Андрей9317 Помощь студентам 0 13.12.2011 13:30
В массиве из п элементов много совпадающих элементов. Найти количество различных элементов Strax Фриланс 11 12.06.2010 20:13