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

нахождение наибольшего числа в массиве - C++

Восстановить пароль Регистрация
 
fuzzytoozy
8 / 8 / 1
Регистрация: 23.11.2012
Сообщений: 94
23.11.2012, 17:47     нахождение наибольшего числа в массиве #1
Здравствуйте! У меня такая проблема: есть задача написать функцию, которая принимает в качестве аргумента адрес массива и количество элементов в нем, а возвращает индекс наибольшего элемента и собственно сам наибольший элемент. Может оно всё и гораздо проще и я что то сильно намудрил. У меня получилась программа, которая работает только для четного количества значений в массиве, как сделать её работающей и для нечетных ума пока что не хватает. Дело в том что в случае, если пользователь ввел нечетное количество элементов, то элемент массива str[++j] цикла for остается не инициализированным, а дальнейший цикл все равно производит операции сравнения с этим элементом, что естественно выливается в ошибку. Прошу сильно не пинать, помогите кто чем может =)
вот собственно сам код:

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <iostream>
using namespace std;
int maxint(int []);
int main()
{
const int MAX = 80;
int str[MAX];
maxint(str);
system("PAUSE");
return 0;
}
int maxint(int str[])
{
int one,two,c;
c=0;
int biggest;
int ind = 0;
int county=0;
char ch;
int g = 0;
while(ch != 'n')
{
cout<<"Enter number: ";
cin>>str[g];
county++;
cout<<"Continue?(Y/N)";
cin>>ch;
g++;
}
one = str[0];
two = str[1];
if(one > two)
{
ind = 0;
biggest = one;
}
else
{
ind = 1;
biggest = two;
}
for(int j = 2; j<county; j++)
{
one = str[j];
two = str[++j];
if(biggest < one && biggest > two)
{
biggest = one;
ind = j-1;
}
if(biggest > one && biggest < two)
{
ind = j;
biggest = two;
}
if(biggest > one && biggest > two)
{
ind = ind;
biggest = biggest;
}
if(biggest < one && biggest < two)
{
if(one > two)
{
ind = j-1;
biggest = one;
}
else
{
ind = j;
biggest = two;
}
}
}
cout<<"Biggest entered number's index: "<<ind<<endl;
cout<<"Biggest entered number: "<<biggest<<endl;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
23.11.2012, 17:58     нахождение наибольшего числа в массиве #2
C++
1
2
3
4
5
6
7
8
9
10
11
void maxint(int str[])
{
    int index_biggest = 0;
 
    for (int i=1; i<MAX; i++)
        if (str[i] > str[index_biggest])
            index_biggest = i;
 
    cout << "Индекс наибольшего элемента " << index_biggest << endl;
    cout << "Наибольший элемент " << str[index_biggest] << endl;
}
здесь я правда сделал функцию void. ничего не возвращает
fuzzytoozy
8 / 8 / 1
Регистрация: 23.11.2012
Сообщений: 94
23.11.2012, 18:16  [ТС]     нахождение наибольшего числа в массиве #3
что то я не разобрался попробую этот код применительно к проге
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
23.11.2012, 18:24     нахождение наибольшего числа в массиве #4
Типа такого
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>  
 
int func(int* arr, int s)
{ 
    int max = arr[0]; 
    int max_index = 0; 
    int i;  
 
    for ( i = 1; i < s; ++i) 
        if(max < arr[i]) 
        { 
            max = arr[i]; 
            max_index = i; 
        } 
        return arr[max_index];
}
 
int main() 
{ 
    const int size = 6; 
    int array[size] = { 1, 2, 5, 6, 3, 4 };  
    std::cout << "Max element " << func(array, size) << std::endl;
}
fuzzytoozy
8 / 8 / 1
Регистрация: 23.11.2012
Сообщений: 94
23.11.2012, 18:41  [ТС]     нахождение наибольшего числа в массиве #5
всё понял, спасибо большое =) даже стыдно сидел мудрил, чего мудрил спрашивается
Yandex
Объявления
23.11.2012, 18:41     нахождение наибольшего числа в массиве
Ответ Создать тему
Опции темы

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