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

Поиск максимального элемента одномерного массива (рекурсией) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 45, средняя оценка - 4.64
ERZ19
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 6
05.04.2012, 18:35     Поиск максимального элемента одномерного массива (рекурсией) #1
С помощью рекурсивной функции
осуществить поиск максимального
элемента одномерного массива

Добавлено через 51 секунду
Ой тоесть функций)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2012, 18:35     Поиск максимального элемента одномерного массива (рекурсией)
Посмотрите здесь:

C++ программа для нахождения максимального элемента одномерного массива
C++ Поиск и замена максимального элемента двумерного массива
C++ Для одномерного массива, состоящих из n целых чисел: Найти номер максимального элемента;
C++ Удалить из одномерного массива промежуток элементов от максимального до минимального.
C++ В программе написать функции: вставки элемента, поиска максимального элемента, определения среднего арифметического элементов массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
05.04.2012, 19:10     Поиск максимального элемента одномерного массива (рекурсией) #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <time.h>
using namespace std;
int search(int *array,int max_number, int current_index,int size)
{
 int temp=0;
 if (array[current_index]>max_number) { temp=current_index; max_number=array[current_index]; }
 if (current_index==size-1) return temp;
 int temp2=search(array,max_number,current_index+1,size);
 if (temp<temp2) return temp2; else return temp;
}
 
int main()
{
 cout<<"Enter size of array: ";
 int N;
 cin>>N;
 int *a=new int[N];
 srand(time(NULL));
 for (int i=0;i<N;i++) 
  { 
   a[i]=rand()%100;
   cout<<a[i]<<" ";
  }
 int max_index=search(a,a[0],1,N);
 cout<<"\nMaximum element a["<<max_index<<"]="<<a[max_index]<<endl;
 system("pause");
 delete [] a;
 return 0;
}
Вроде пашет, но наверное можно красивее это написать, не люблю рекурсии
baboo
3 / 3 / 1
Регистрация: 05.04.2012
Сообщений: 9
05.04.2012, 23:23     Поиск максимального элемента одномерного массива (рекурсией) #3
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <time.h>
using namespace std;
 
int search( int *array, int array_size )
{
    static int maxVal = 0;
    static int currIndex = 0;
    static int memIndex = 0;
 
    if( array_size ) {
        if( *array > maxVal ) {
            maxVal = *array;
            memIndex = currIndex;
        }
        currIndex++;
        return search( ++array, --array_size );
    }
    return memIndex;
}
 
void main()
{
    cout << "Enter size of array: ";
    int arraySize;
    cin >> arraySize;
    int *myArray = new int[ arraySize];
    srand( time(NULL) );
 
    for( int i = 0; i < arraySize; i++ ) 
    { 
        myArray[ i] = rand() % 100;
        cout << myArray[ i] << " ";
    }
    int foundIndex = search( myArray, arraySize );
    cout<<"Index of max elemet is "<< foundIndex << endl;
    cout<<"Value of max elemet is "<< myArray[ foundIndex] << endl;
    system("pause");
}
ERZ19
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 6
09.04.2012, 16:44  [ТС]     Поиск максимального элемента одномерного массива (рекурсией) #4
Спасибо!А без iostream ,простым способом можете?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
09.04.2012, 17:00     Поиск максимального элемента одномерного массива (рекурсией) #5
Цитата Сообщение от ERZ19 Посмотреть сообщение
простым способом можете?
А то!
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
int * max_element(const int * arr, const size_t size) {
    return ( size < 2 ) ? (int*)arr : ( *arr < *(arr + size - 1) ) ? max_element(arr + 1, size - 1) : max_element(arr, size - 1);
}
 
#define SIZE 5
 
int main(void){
    int arr[SIZE] = { 3, 1, 2, 5, 4 }, i;
    
    printf("Array: ");
    for ( i = 0; i < SIZE; ++i )
        printf("%d ", arr[i]);
    printf("\nMax element: %d\n", *max_element(arr, SIZE));
    
    return 0;
}
Yandex
Объявления
09.04.2012, 17:00     Поиск максимального элемента одномерного массива (рекурсией)
Ответ Создать тему
Опции темы

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