Задача:
Дан массив(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 // Результат надо записать в таком виде
Мои коментарии: этот кусочек программы нужно записать в одном методе.
Почему-то у меня мозги не доходят сделать его компактно( ну или вообще сделать). Как я понял для того,чтобы подсчитать всё остальное нужно будет создать новый массив. куда нужно записать индексы одинаковых чисел.
ПРошу помочь создать эту маленькую програмку. Я не прошу создать её целиком. Просто объяснить, как можно будет записать в новый массив индексы повторяющихся чисел. Зараниие огромное спасибо, это кусочек задания для подготовки к экзамену
Java
Started By lexlexlex, янв 15 2006 14:33
6 ответов в этой теме
#2
Отправлено 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 )
int main(void)
#5
Отправлено 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.возможно, вы знаете более простой способ найти эти расстояния, поделитесь, буду признателен.
писал на яве, если кто на С подскажет все равно...я не прошу готовую программу, прошу помочь разобраться с алгоритмом, наиболее рациональным(возможно с кусочками поясняющего кода).
моя версия прилагается.
моя версия прилагается.не стал создавать новую тему, напишу в этой:
такая проблемма: нужно написать программу, в которой с клавиатуры вводится 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 )