Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Количество одинаковых элементов массива

13K
03 октября 2005 года
Aramis
2 / / 03.10.2005
Количество одинаковых элементов массива

Здравствуйте,
никак не могу разобраться с этой задачей:

необходимо посчитать количество одинаковых элементов в массиве.
те есть массив, например:
@dot=qw(1 2 3 6 7 2 1 1 2 6 1);

необходимо вывести такую статистику:
единиц - 4 штуки,
двоек - 3 штуки и тп

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

Единственно что пришло в голову - скопировать массив и сравнивать каждый элемент массива со всеми элементами его копии. Но этот вариант крайне ресурсоёмкий. Наверняка есть какое-то более простое решение.

Специалисты, помогите пожалуйста.
Спасибо большое заранее.
299
03 октября 2005 года
3D Bob
885 / / 18.04.2005
Я очень давно изучал Перл, и его уже мало помню и мало того у меня нету сейчас его интерпретатора.
Но на сях я бы сделал так. Более опитмального и лучшего способа это сделать, я не вижу.

Код:
#pragma hdrstop
#include <iostream.h>
#include <vector.h>
//---------------------------------------------------------------------------
struct tabl{
        char simbol;
        int cout;
};
#pragma argsused
int main(int argc, char* argv[])
{
        char st[] = "aaalkjasdhkwebsdfl;j";
        vector<tabl> t;

        for (int i=0; i<sizeof(st); i++){
                bool z = false;
                for (unsigned int j=0; j<t.size(); j++)
                        if (t[j].simbol == st){
                                t[j].cout++;
                                z = true;
                        }
                if (!z){
                        tabl s = {st,1};
                        t.push_back(s);
                }
        }
        for (unsigned int j=0; j<t.size(); j++)
                cout << t[j].simbol << "-" << t[j].cout << endl;
        cin >> "";
        return 0;
}
2
04 октября 2005 года
squirL
5.6K / / 13.08.2003
все проще гораздо...
Код:
#!/usr/bin/perl

@array = qw(1 2 1 1 5 6 7 8 9 1 2 3);

foreach $element (@array)
{
  $hash{$element}++;
}

foreach $element (sort keys(%hash))
{
  print "$element = $hash{$element}\n";
}


3D Bob
улыбнул...
13K
04 октября 2005 года
Aramis
2 / / 03.10.2005
Many thanx всем,
всё работает :-)

а вот ещё один вариант подсказали:


my @dot=qw(1 2 3 6 7 2 1 1 2 6 1);
my %hash;
$hash{$_}++ for @dot;
print "$_ => $hash{$_}\n" for sort keys %hash;
299
04 октября 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by squirL
все проще гораздо...
Код:
#!/usr/bin/perl

@array = qw(1 2 1 1 5 6 7 8 9 1 2 3);

foreach $element (@array)
{
  $hash{$element}++;
}

foreach $element (sort keys(%hash))
{
  print "$element = $hash{$element}\n";
}


3D Bob
улыбнул...



Да этот способ мне знаком. Но я его проигнорил.
Почему улыбнул?? Ты в курсе что что
$hash{$element}++;
В своем внутреннем алгоритме выполняет тоже самое что и мой код?

2
04 октября 2005 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by 3D Bob
Да этот способ мне знаком. Но я его проигнорил.
Почему улыбнул?? Ты в курсе что что
$hash{$element}++;
В своем внутреннем алгоритме выполняет тоже самое что и мой код?



да. правда насчет "тоже самое" не уверен. не видел реализации :)
что улыбнуло? не обижайся, но зачем на просьбу написать перловый код давать реализацию на С++? чтобы автор "переводом" занимался?

299
04 октября 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by squirL
да. правда насчет "тоже самое" не уверен. не видел реализации :)
что улыбнуло? не обижайся, но зачем на просьбу написать перловый код давать реализацию на С++? чтобы автор "переводом" занимался?


Хотел показать алгоритм.

51K
16 июня 2009 года
alex410
1 / / 16.06.2009
Цитата:


#!/usr/bin/perl

@array = qw(1 2 1 1 5 6 7 8 9 1 2 3);

foreach $element (@array)
{
$hash{$element}++;
}

foreach $element (sort keys(%hash))
{
print "$element = $hash{$element}\n";
}



Может кто-нибудь перевести это в PHP

Спасибо большое заранее.

16K
17 июня 2009 года
k0t
97 / / 23.04.2007
Если максимально приближено к приведенному коду, то так:
Код:
<?php
$array = Array(1,2,1,1,5,6,7,8,9,1,2,3);

foreach ($array as $element)
{
    $hash[$element]++;
}

ksort($hash);
foreach ($hash as $element => $count)
{
    echo $element." = ".$count."\n";
}
?>

только интерпретатор закидает нотисами
12
19 июня 2009 года
alekciy
3.0K / / 13.12.2005
Цитата: 3D Bob
Хотел показать алгоритм.


Ты бы понял алгоритм, если ты тебе дали его словестное описание на японском (идише, латинском, etc)? Не думаю... тут так же.

14
19 июня 2009 года
Phodopus
3.3K / / 19.06.2008
Эу! Первые 7 постов от 2005 года :)
12
19 июня 2009 года
alekciy
3.0K / / 13.12.2005
Цитата: Phodopus
Эу! Первые 7 постов от 2005 года :)


Блин, как-то не заметил...

"Твою ж мать!..." (с) Э. Картман

... чертовы некропостеры :mad:

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог