Форум программистов, компьютерный форум CyberForum.ru

Поиск максимального елемента ,методом деления пополам - C++

Восстановить пароль Регистрация
 
Wedroid
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 27
24.09.2013, 15:13     Поиск максимального елемента ,методом деления пополам #1
Программа ищет максимальный элемент в массиве a1, ..., an, используя метод деления пополам max (a1, ..., an) = max (max (a1, ..., an/2), max (an/2+1, ..., an)).
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
double maxr(double *a,int n);
void main()
{
    double a[6]={2,1,4,5,10,3};
double r=maxr(a,6);
printf("maximum=%Lf\n",r);
getch();
 
}
double maxr(double *a,int n)
{
if(n==1) return a[0];// åñëè ïåðåäГ*ГҐГІГ±Гї îäèГ* ýëåìåГ*ГІ Г¬Г*Г±Г±ГЁГўГ* Г®Г* ГЁ ГҐГ±ГІГј Г¬Г*ГЄГ±.
if(n==2) return __max(a[0],a[1]); // Г*Г*éòè Г¬Г*ГЄГ± ГЁГ§ äâóõ ýëåìåГ*òîâ
double max1= maxr(a,n/2); // ГЁГ±ГЄГ*ГІГј Г¬Г*ГЄГ± Гў ïåðâîé ïîëîâèГ*ГҐ
double max2=maxr(a+n/2,n/2); // ГЁГ±ГЄГ*ГІГј Г¬Г*ГЄГ± ГўГ® âòîðîé ïîëîâèГ*ГҐ
return __max(max1,max2); // âûáðГ*ГІГј Г¬Г*ГЄГ±ГЁГ¬Г*ëüГ*ûé ГЁГ§ äâóõ ïðåäûäóùèõ
}
Помогите исправить программу : некорректно отображает максимальный элемент ,при нечетном количестве елементов масива.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.09.2013, 15:13     Поиск максимального елемента ,методом деления пополам
Посмотрите здесь:

Методом деления отрезка пополам и методом итераций найти прибли-женное значение корня уравнения C++
C++ Поиск методом деления пополам.
C++ Бинарный поиск деления пополам
C++ Нахождение корня методом деления отрезка пополам
C++ Поиск максимального елемента массива , используя метод деления пополам
C++ Нахождение корня уравнения методом деления отрезка пополам
C++ Поиск максимального елемента
C++ Найти максимум функции методом деления пополам

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Catstail
Модератор
 Аватар для Catstail
21430 / 10215 / 1664
Регистрация: 12.02.2012
Сообщений: 17,087
24.09.2013, 18:03     Поиск максимального елемента ,методом деления пополам #2
Найди два отличия:

C++
1
2
3
4
5
6
7
8
double maxr(double *a,int n)
{
    if(n==1) return a[0];// если передается один элемент массива он и есть макс.
    if(n==2) return __max(a[0],a[1]); // найти макс из двух элементов
    double max1= maxr(a,n/2); // искать макс в первой половине
    double max2=maxr(a+(n/2),n-n/2); // искать макс во второй половине
    return __max(max1,max2); // выбрать максимальный из двух предыдущих
}
Yandex
Объявления
24.09.2013, 18:03     Поиск максимального елемента ,методом деления пополам
Ответ Создать тему
Опции темы

Текущее время: 18:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru