Консультация № 55356
13.09.2006, 22:15
0.00 руб.
0 11 1
Здравствуйте Уважаемы эксперты!!! Мне очень нужна ваша помощь, я в програмировании дуб-дубом, а нам задали написать програмку. Я хочу попросить вас, если вам не трудно, помогите мне с ней.
Вот задание:
"Задан одновимірний масив целых чисел(инициализовать как константу), определить количество разных элементов в нем"

Обсуждение

Неизвестный
14.09.2006, 00:39
общий
До какой наглости народ дошел... Мало того, что напишите за меня программу, так даже условия лень перевести на русский. Который на этом портале здесь понимают гораздо больше человек, чем украинский.
Неизвестный
14.09.2006, 02:47
общий
2Сухомлин Кирилл Владимирович: Лечись от русского ВеликоДержавия
Неизвестный
14.09.2006, 11:38
общий
По-моему, проблема все-таки не в моем национализме, а в нераспространенности украинского языка. Был бы вопрос, например, на немецком, я бы тоже предложил перевести.
Неизвестный
14.09.2006, 13:14
общий
А вы не конфликтный человек - уважаю :)А теперь по сути: Вы думаете, что на украинском говорят только преподаватели-филологи в учебных заведениях Украины? Глубоко ошибаетесь. Здесь на портале много экспертов из Украины, и они бы могли ответить. Но есть негласное правило не помогать лентяям. Кстати, если не ошибаюсь, в своё время, Вы очень активно его нарушали, решая примерчики двоечникам, и этим АБСОЛЮТНО ничему их не учили.И на самом деле, разве Вы не поняли, что там было написано на украинском???? Не верю :)
Неизвестный
15.09.2006, 12:14
общий
<u>Случайно наткнулся на данный вопрос...</u><font color=purple>Решил все-таки ответить <b>земляку</b></font>.Вот решение задачи (может конечно уже поздно - но все-таки):<code>const n=5; a:array [1..n] of integer=(2,2,2,3,3);var i,k,tmp,kol:integer;begin kol:=0; for i:=1 to n do begin tmp:=0; for k:=1 to i-1 do if a[i]=a[k] then inc(tmp); if tmp=0 then inc(kol); end; write(‘** ‘,kol);end.</code>
Неизвестный
15.09.2006, 13:21
общий
Если числа помещаются в байт, то я бы предложил ещё проще:const n=...;a: array[1..n] of byte=(...);var _, col : interger; __ : set of byte;begin col := 0; __:= []; for _:= 1 to n do begin if not(a[_] in __) then inc(col); __:= __+ [a[_]] end; writeln(‘Count: ‘, col)end;
Неизвестный
15.09.2006, 13:30
общий
<font color=purple>To <b>mvp</b></font>В условии написано что <u><b>массив целых чисел</b></u>.А Byte=0..255, так что никак не получиться.Например массив <b><font color=red>может состоять из целых отрицательных чисел</font></b>, так что Ваш ответ я бы не стал использовать....
Неизвестный
15.09.2006, 14:08
общий
да я и написал, что если помещаются в байт (это может быть и shortint: -128..127), т. е., оговорку на область применения сделал. Но если не помещается, то конечно же, как Вы, хотя бы не помешало бы ещё break добавить, если есть уже совпадение, да и без переменной tmp можно обойтисьНо это не принципиально, и, думаю, что мы ж не будем ссорится из-за этого :)
Неизвестный
15.09.2006, 14:15
общий
Да по моему никто и не собирался ссориться...Спасибо за поддержку разговора.Удачи!!!
Неизвестный
15.09.2006, 14:26
общий
это ответ
Здравствуйте, Kostenko Artem!
В приложении готовый исходник. Я его как следует оттестировать не успел, но вроде работает как надо. Проверьте с другими массивами - если че-то будет не так, пишите во внутреннюю почту. Суть алгоритма: берем элемент a[i] и смотрим, сколько раз он повторяется в массиве, и увеличиваем счетчик на 1/число раз. Например, он повторяется 2 раза. Тогда мы переберем 2 одинаковых числа, каждый раз увеличивая счетчик на 1/2. Получается: 1/2+1/2=1 - одно неповторяющееся число.

Приложение:
program Project1;{$APPTYPE CONSOLE}const a: array[1..5] of integer = (3, 1, 7, 1, 5);var i, j, k, m, w: integer; r: real;begin r := 0; for i := 1 to 5 do begin for m := 1 to 5 do begin if a[i] = a[m] then w := w + 1; end; r := r + 1 / w; w := 0; end; writeln(r); readln;end.
Неизвестный
15.09.2006, 15:06
общий
Просто если прочитать этот мини-форум, то это будет выглядеть так, как будто я ко всем цепляюсь :)Ладно, всем успехов!
Форма ответа