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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
-ExotiC-
1 / 1 / 0
Регистрация: 25.12.2012
Сообщений: 29
#1

Найти наибольший элемент массива - C++

27.12.2012, 22:36. Просмотров 1080. Ответов 11
Метки нет (Все метки)

Помогите пожалуйста решить задачу
Дан массив чисел. Найти наибольший элемент, поставить его первым.
Заранее благодарю
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2012, 22:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти наибольший элемент массива (C++):

Найти наибольший элемент массива - C++
Данный целочисленный массив В. Найти наибольший элемент массива.

Найти наибольший элемент массива - C++
Дан целочисленный массив В. Найти наибольший элемент массива и сообщить его расположение относительно левой диагонали.

Найти наибольший элемент массива - C++
3. Найти наибольший элемент массива

Найти наибольший по модулю элемент массива - C++
2. Найти наибольший по модулю элемент

Найти наибольший элемент массива A отсутствующий в массиве B - C++
Даны два массива натуральных чисел A ( m ) и B ( n ) . Найти наибольший элемент в массиве A , которого нет в массиве B.

Найти наибольший элемент массива в каждой строке. - C++
Дан массив из n x m элементов. Найти наибольший элемент массива в каждой строке.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 543
27.12.2012, 22:45 #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
31
#include <iostream>
using namespace std;
 
#ifndef countof
    #define countof(array) (sizeof(array) / sizeof((array)[0]))
#endif
 
int main()
{
    int arr[] = {2,3,7,1,3,8,3,2,8,1};
    int max = arr[0], temp;
 
    for (int i = 0; i < (countof(arr)-1); ++i)
    {
        if (max < arr[i])
        {
            temp = i;
            max = arr[i];
        }
    }
 
    arr[temp] = arr[0];
    arr[0] = max;
 
    for (int i = 0; i < (countof(arr)-1); ++i)
        cout << arr[i] << " ";
 
    cout << endl;
    system("pause");
    return 0;
}
-ExotiC-
1 / 1 / 0
Регистрация: 25.12.2012
Сообщений: 29
27.12.2012, 22:55  [ТС] #3
Afflicted, спасибо большое
Немогли бы эти операторы объяснить?
Цитата Сообщение от Afflicted Посмотреть сообщение
C++
1
2
3
#ifndef countof
* * #define countof(array) (sizeof(array) / sizeof((array)[0]))
#endif
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
27.12.2012, 22:59 #4
Afflicted, ошибка на 1 в циклах
Легко заметить на
int arr[] = {2,3,7,1,3,8,3,2,8,100};
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 543
27.12.2012, 23:01 #5
это макрос для выведения длины одномерного массива.

Можно, конечно, не заморачиваться и просто написать arr[10], но это ограничит кол-во элементов в массиве до 10.
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
27.12.2012, 23:01 #6
И программа может вылететь, если максимальный элемент - это нулевой элемент массива
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 543
27.12.2012, 23:04 #7
Спасибо, I.M., особенно с countif(..).
Вот переделанный код программы с "излечением" всех найденных ошибок.

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
int main()
{
    int arr[] = {522,3,7,1,3,8,3,2,8,100};
    int max = arr[0], temp = 0;
 
    for (int i = 0; i < countof(arr); ++i)
    {
        if (max < arr[i])
        {
            temp = i;
            max = arr[i];
        }
    }
 
    arr[temp] = arr[0];
    arr[0] = max;
 
    for (int i = 0; i < countof(arr); ++i)
        cout << arr[i] << " ";
 
    cout << endl;
    system("pause");
    return 0;
}
Avazart
Эксперт С++
7152 / 5329 / 278
Регистрация: 10.12.2010
Сообщений: 23,585
Записей в блоге: 17
27.12.2012, 23:08 #8
Макросы не стоит использовать в С++
-ExotiC-
1 / 1 / 0
Регистрация: 25.12.2012
Сообщений: 29
27.12.2012, 23:13  [ТС] #9
Цитата Сообщение от Afflicted Посмотреть сообщение
Спасибо, I.M., особенно с countif(..).
Вот переделанный код программы с "излечением" всех найденных ошибок.

Кликните здесь для просмотра всего текста
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
int main()
{
    int arr[] = {522,3,7,1,3,8,3,2,8,100};
    int max = arr[0], temp = 0;
 
    for (int i = 0; i < countof(arr); ++i)
    {
        if (max < arr[i])
        {
            temp = i;
            max = arr[i];
        }
    }
 
    arr[temp] = arr[0];
    arr[0] = max;
 
    for (int i = 0; i < countof(arr); ++i)
        cout << arr[i] << " ";
 
    cout << endl;
    system("pause");
    return 0;
}
В этом варианте C++ матерится на 7 строку
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 543
27.12.2012, 23:21 #10
о горе... копировать - вставить и ноль раздумий. Конечно он будет ругаться на "countof(..)", ведь он не определен. Равно как и не подключены библиотеки. Добавьте его обратно, как было в старом варианте и все заработает.
Croessmah
Модератор
Эксперт CЭксперт С++
13155 / 7418 / 831
Регистрация: 27.09.2012
Сообщений: 18,256
Записей в блоге: 3
Завершенные тесты: 1
28.12.2012, 06:52 #11
Цитата Сообщение от Avazart Посмотреть сообщение
Макросы не стоит использовать в С++
Что же Вы так категоричны то? Если ими грамотно пользоваться, то ничего страшного в их использовании нет.
Avazart
Эксперт С++
7152 / 5329 / 278
Регистрация: 10.12.2010
Сообщений: 23,585
Записей в блоге: 17
28.12.2012, 13:57 #12
По тому что макрос тут не нужен, достаточно было определить константу определяющую размер массива, если хотелось гибкости- использовать std::vector<>
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.12.2012, 13:57
Привет! Вот еще темы с ответами:

Что-то не хочет пахать :( | Даны два целочисленных массива К(m) и L(n). Найти наибольший элемент массива K, не имеющий себе равных в массиве L. - C++
Даны два целочисленных массива К(m) и L(n). Найти наибольший элемент массива K, не имеющий себе равных в массиве L. #include...

Найти и вывести на печать наибольший по модулю элемент массива - C++
Дан массив из 12 чисел со знаком. Найти и вывести на печать наибольший по модулю элемент массива. Помогите написать программу или...

Найти наибольший элемент массива удовлетворяющий заданному условию - C++
Пытался сам написать, но если скину свои наброски это вряд ли поможет. Помогите пожалуйста кто знает. Ввести с клавиатуры вещественный...

Найти наибольший элемент второго столбца двумерного массива - C++
2) Дан двумерный массив в котором необходимо найти наибольший элемент второго столбца.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.12.2012, 13:57
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru