Перейти к содержимому

Фото
- - - - -

Java


  • Вы не можете создать новую тему
  • Please log in to reply
6 ответов в этой теме

#1 lexlexlex

lexlexlex
  • Пользователь
  • 197 сообщений

Отправлено 15 января 2006 - 14:33

Задача:

Дан массив(jarjend).
Результат. Нужно написать метод, где будет подсчитываться сумма чисел массива, которые встречаются в нём более одного раза.
Пример:
int[]a={1, 0,-4, 2, 3, 5, -5, 2, -2, 5, 1, 5, 4}


Должна выдавать программа:
1, 2, 5 //числа из массива, которые встречаются более одного раза
1+1+2+2+5+5+5=21 // Результат надо записать в таком виде



Мои коментарии: этот кусочек программы нужно записать в одном методе.
Почему-то у меня мозги не доходят сделать его компактно( ну или вообще сделать). Как я понял для того,чтобы подсчитать всё остальное нужно будет создать новый массив. куда нужно записать индексы одинаковых чисел.
ПРошу помочь создать эту маленькую програмку. Я не прошу создать её целиком. Просто объяснить, как можно будет записать в новый массив индексы повторяющихся чисел. Зараниие огромное спасибо, это кусочек задания для подготовки к экзамену
  • 0

#2 V^v

V^v
  • Пользователь
  • 316 сообщений

Отправлено 15 января 2006 - 18:20

можно сделать так:
если нельзя модифицировать исходный массив, скопировать его в новый
отсортировать массив, в возрастаюшем порядке
и дальше:
int c = 0;
int b[N];
int sum = 0;
bool was = false;

if (a[0] == a[1])
{
  b[c++] = a[0];
  was = true;
}
for (int i = 1; i < N; i++) //N - number of elements
{
  if (a[i] == a[i+1])
  {
    b[c++] = a[i];
    was = true;
  }
  else if (was == true)
  {
    b[c++] = a[i];
    was = false;
  }
}

for (int i = 0; i < c; i++)
{
  sum += b[i];
  printf("%d %c ", b[i], (i == c-1) ? '=' : '+');
}
printf("%d\n", sum);
вместо printf используешь нужную функцию вывода
не очень компактно и элегантно, думаю можно сделать легче... у меня мозги сейчас не варят...

Сообщение изменено: V^v (15 января 2006 - 18:21 )

  • 0
int main(void)

#3 lexlexlex

lexlexlex
  • Пользователь
  • 197 сообщений

Отправлено 15 января 2006 - 23:29

спасибо, это выход
  • 0

#4 not nil

not nil
  • Пользователь
  • 27 сообщений

Отправлено 25 января 2006 - 04:16

Думаю проще будет для сортировки использовать Arrays.sort(type[]) из java.util.*;
  • 0

#5 OzzY

OzzY

    Великий и Ужасный

  • Пользователь
  • 461 сообщений

Отправлено 08 февраля 2006 - 07:54

не стал создавать новую тему, напишу в этой:

моя версия прилагается.не стал создавать новую тему, напишу в этой:

такая проблемма: нужно написать программу, в которой с клавиатуры вводится 3-х столбчатый массив а, с n рядами(1<=n<=10), где числа в рядах координтаы точки в пространстве. (тоесть количество рядов=количество точек). А на экран вывести расстояние между самыми далеко расположенными друг от друга точками и координаты этих точек.

расстояние я нахожу по формуле квадратного корня из суммы квадратов разностей координат.
я сделал проверку условий, когда введены 2 точки, (и соответственно расчет расстояний между ними и вывод его(тут вроде понятно)).если вводится 3 точки, 4, 5,...10. Когда больше двух точек, все расстояния(которые находил с помощью дополнительных вложеных циклов(на каждую точку на 1 цикл больше)) помещал в новый массив, потом его сортировал и печатал последнее число. При таком методе:
1.не получается найти координаты точек, между которыми расстояние самое больше. Как выбрать их из уже упорядоченного массива?
2.почему-то в результате длины пишет 1.0 Либо формула записана неправильно, либо он не хочет работать с введенными точками(хотя для двух точек координаты пишет правильно).
3.возможно, вы знаете более простой способ найти эти расстояния, поделитесь, буду признателен.

писал на яве, если кто на С подскажет все равно...я не прошу готовую программу, прошу помочь разобраться с алгоритмом, наиболее рациональным(возможно с кусочками поясняющего кода).

моя версия прилагается.не стал создавать новую тему, напишу в этой:

такая проблемма: нужно написать программу, в которой с клавиатуры вводится 3-х столбчатый массив а, с n рядами(1<=n<=10), где числа в рядах координтаы точки в пространстве. (тоесть количество рядов=количество точек). А на экран вывести расстояние между самыми далеко расположенными друг от друга точками и координаты этих точек.

расстояние я нахожу по формуле квадратного корня из суммы квадратов разностей координат.
я сделал проверку условий, когда введены 2 точки, (и соответственно расчет расстояний между ними и вывод его(тут вроде понятно)).если вводится 3 точки, 4, 5,...10. Когда больше двух точек, все расстояния(которые находил с помощью дополнительных вложеных циклов(на каждую точку на 1 цикл больше)) помещал в новый массив, потом его сортировал и печатал последнее число. При таком методе:
1.не получается найти координаты точек, между которыми расстояние самое больше. Как выбрать их из уже упорядоченного массива?
2.почему-то в результате длины пишет 1.0 Либо формула записана неправильно, либо он не хочет работать с введенными точками(хотя для двух точек координаты пишет правильно).
3.возможно, вы знаете более простой способ найти эти расстояния, поделитесь, буду признателен.

писал на яве, если кто на С подскажет все равно...я не прошу готовую программу, прошу помочь разобраться с алгоритмом, наиболее рациональным(возможно с кусочками поясняющего кода).

моя версия прилагается.

Сообщение изменено: OzzY (08 февраля 2006 - 07:58 )

  • 0

#6 V^v

V^v
  • Пользователь
  • 316 сообщений

Отправлено 08 февраля 2006 - 17:36

покажи, что у тебя есть на данный момент
  • 0
int main(void)

#7 OzzY

OzzY

    Великий и Ужасный

  • Пользователь
  • 461 сообщений

Отправлено 08 февраля 2006 - 21:28

вообщем, сегодня добил, теперь расстояния ищет как нужно, а вот с выводом соответствующих координат проблемка...

в этом приложении не исправлена формула подсчета длины...как тут найти координаты? подскажите.

Прикрепленные файлы


  • 0