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

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

Войти
Регистрация
Восстановить пароль
 
Boderman
3 / 3 / 3
Регистрация: 25.03.2013
Сообщений: 140
#1

Результат функции зависит от ёё расположения в коде О_о - C++

04.09.2013, 17:51. Просмотров 288. Ответов 2
Метки нет (Все метки)

Подскажите студенту пожалуйста в чём у меня косяк (ну кроме ДНК ):

Функция по разному реагирует на расположение в коде .

При вызове функции Bubbles (а точнее очередности вызова параметра Min и Max) расчет верен если ( 1->Max 2->Min ) и
не верен если (1->Min 2->Max):

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
 
#include <iostream>
#include <Windows.h>
using namespace std;
 
int Min (int a, int b)
{
    return a>b;
}
 
int Max (int a, int b)
{
    return a<b;
}
 
void Bubbles(int *d,int n, int (*comp)(int,int))
{int buf=NULL;
    for(int i=1;i<n-1;i++)
    {
       for(int j=0;j<n-i;j++)
               {
                  if (comp ((*(d+j)),(*(d+(j+1)))))
                  {
                     buf=(*(d+j));
                     *(d+j)=(*(d+(j+1)));
                     *(d+(j+1))=buf;
                  }
 
               }  
    }
    
}
 
 
 
void main()
{
    int array_0[]={32,23,2,4,3,2,34,32,2,31,32,43,1221,43,2};
      
    Bubbles(array_0,sizeof(array_0)/sizeof(int),Max);
 
    for (int i=0;i<sizeof(array_0)/sizeof(int);i++)
    {
        cout<<array_0[i]<<"  ";
    }
    cout<<endl; 
    
    Bubbles(array_0,sizeof(array_0)/sizeof(int),Min);
 
    for (int i=0;i<sizeof(array_0)/sizeof(int);i++)
    {
        cout<<array_0[i]<<"  ";
    }
    cout<<endl;
    
   system("pause");
 
}
Добавлено через 39 минут
Немного переделал код но результат тот же.

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
#include <iostream>
#include <Windows.h>
using namespace std;
 
int Min (int a, int b)
{
    return a>b;
}
 
int Max (int a, int b)
{
    return a<b;
}
 
void Bubbles(int *d,int n, int (*comp)(int,int))
{/*int buf=NULL;*/
    for(int i=1;i<n-1;i++)
    {
       for(int j=0;j<n-i;j++)
               {
                  if (comp ((*(d+j)),(*(d+(j+1)))))
                  {
                     /*buf=(*(d+j));
                     *(d+j)=(*(d+(j+1)));
                     *(d+(j+1))=buf;*/
 
                      *(d+j)=(*(d+j))+(*(d+(j+1)));
                      *(d+(j+1))=(*(d+j))-(*(d+(j+1)));
                      *(d+j)=(*(d+j))-(*(d+(j+1)));
 
                  }
 
               }  
    }
    
}
 Комментарий модератора 
Языки программирования не путаем!..
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.09.2013, 17:51     Результат функции зависит от ёё расположения в коде О_о
Посмотрите здесь:

Функции. Вычислить результат выражения C++
C++ Каким будет результат функции?
C++ Запуск функции О_о
C++ Результат вычислений функции
C++ Найти результат работы функции
Вывести результат функции на экран C++
C++ Если указатель хранит адрес ячейки памяти, на которую он указывает, то почему тогда в моем экспериментальном коде такой результат?
Написать программу, проверяющую корректность расположения continue в коде C++
Не могу разобраться в коде. Некорректный результат работы программы C++
C++ Вывести результат функции, до n-го члена
C++ Найти значение функции A, которая зависит от трёх переменных
Куда return возвращает результат из функции? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6549 / 3969 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
04.09.2013, 19:09     Результат функции зависит от ёё расположения в коде О_о #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void Bubbles(int* d,int n, int (*comp)(int,int))
{
    for(int i = 0; i < n; ++i)
    {
       for(int j = 0; j < n - i - 1; ++j)
       {
           if (comp(*(d + j), *(d + j + 1)))
           {
               int buf = *(d + j);
               *(d + j) = *(d + j + 1);
               *(d + j + 1) = buf;
           }
       }
    }
}
Добавлено через 15 секунд
и да, ваш код на с++, а не на си
Boderman
3 / 3 / 3
Регистрация: 25.03.2013
Сообщений: 140
05.09.2013, 18:40  [ТС]     Результат функции зависит от ёё расположения в коде О_о #3
Спасибо
Yandex
Объявления
05.09.2013, 18:40     Результат функции зависит от ёё расположения в коде О_о
Ответ Создать тему
Опции темы

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