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

Ошибка в функции - C++

Восстановить пароль Регистрация
 
Leonman
 Аватар для Leonman
15 / 15 / 0
Регистрация: 17.06.2012
Сообщений: 266
22.04.2013, 16:33     Ошибка в функции #1
У меня значения j должен изменятся от 0 до 9, а вместо этого он изменяется от 11 до 20, почему?

Мой код:
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
#include <iostream>
#include <conio.h>
using namespace std;
 
const int size = 10;
int max_maxi_finder(int *arr, int size, int& max, int& maxi, int& j)
{
  for (int i = j; i < size; i++)
  {
   if (max < arr[i])
   {
    max = arr[i];
    maxi = i;
   }
   int temp = arr[i];
   arr[i] = max;
   arr[max] = temp;
  }
   j++;
  return 0;
}
 
int main()
{
  int arr[size] = {2,7,3,6,8,1,4,9,5,10}, max = arr[0], maxi, j = 0;
  for (int i = 0; i < size; i++)
  {
   max_maxi_finder(arr, size, max, maxi, j);
   cout << max << endl;
   cout << j << endl;
  }
  getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2013, 16:33     Ошибка в функции
Посмотрите здесь:

Ошибка в функции C++
C++ Ошибка в Функции
Ошибка в функции C++
Ошибка в функции C++
Ошибка в функции C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
22.04.2013, 16:43     Ошибка в функции #2
В 18-й строке ты выходишь за пределы массива.
Leonman
 Аватар для Leonman
15 / 15 / 0
Регистрация: 17.06.2012
Сообщений: 266
22.04.2013, 16:51  [ТС]     Ошибка в функции #3
lazybiz, Спасибо, исправил. Ещё вопрос, почему максимальный элемент у меня постоянно 10, задача, чтобы при j = 0, max = 10, а при j = 1, max = 9, при j = 2, max = 8 и т.д.
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
22.04.2013, 16:55     Ошибка в функции #4
Цитата Сообщение от Leonman Посмотреть сообщение
Ещё вопрос, почему максимальный элемент у меня постоянно 10, задача, чтобы при j = 0, max = 10, а при j = 1, max = 9, при j = 2, max = 8 и т.д.
Потому что у тебя алгоритм программы такой. Откуда мне знать как должна работать твоя программа?
Leonman
 Аватар для Leonman
15 / 15 / 0
Регистрация: 17.06.2012
Сообщений: 266
22.04.2013, 17:02  [ТС]     Ошибка в функции #5
Мысль была такова, что при j = 0, во всем массиве ищется максимальный элемент, затем максимальный элемент и первый элемент меняются местами, после того как они поменялись местами j = 1, и в массиве снова ищется максимальный элемент, только теперь берётся не весь массив, а весь массив, но без первого элемента, тоесть.
Пример:
Изначальный массив arr[size] = {2,7,3,6,8,1,4,9,5,10}, j = 0, max = 10, поменяли местами максимальный элемент и первый элемент, стало arr[size] = {10,7,3,6,8,1,4,9,5,2}, после этого j = 1, а значит что теперь максимальный элемент ищется в массиве arr[size] = {7,3,6,8,1,4,9,5,2}, потому что теперь цикл идёт от 1 до size (size = 10)
Такова была моя логика
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
22.04.2013, 17:34     Ошибка в функции #6
У меня получился такой вариант:
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
#include <iostream>
#include <conio.h>
 
using namespace std;
 
void iterate( int *a, size_t i, size_t n, int &max )
{
    int k = -1;
    for ( size_t j = i; j < n; j++ ) {
        if ( a[j] > max ) {
            max = a[j];
            k = j;
        }
    }
    if ( k != -1 ) {
        int tmp = a[i];
        a[i] = a[k];
        a[k] = tmp;
    }
}
 
int main()
{
    int a[] = { 2,7,3,6,8,1,4,9,5,10 };
    const size_t n = sizeof( a ) / sizeof( a[0] );
 
    for ( size_t i = 0; i < n; i++ ) {
        int max = a[i];
        iterate( a, i, n, max );
        cout << i << "\t" << max << endl;
    }
 
//  getch();
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2013, 23:52     Ошибка в функции
Еще ссылки по теме:

Ошибка в функции C++
C++ Ошибка в функции
C++ Ошибка в функции

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

Или воспользуйтесь поиском по форуму:
Leonman
 Аватар для Leonman
15 / 15 / 0
Регистрация: 17.06.2012
Сообщений: 266
22.04.2013, 23:52  [ТС]     Ошибка в функции #7
lazybiz, Огромное спасибо.
Yandex
Объявления
22.04.2013, 23:52     Ошибка в функции
Ответ Создать тему
Опции темы

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