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

Не работает fabs - C++

Восстановить пароль Регистрация
 
n0n4m3r
23 / 23 / 6
Регистрация: 12.10.2013
Сообщений: 183
08.12.2013, 00:52     Не работает fabs #1
Задание: найти максимальный по модулю элемент массива и вывести его номер.
Результат на скрине. Кусок кода там же. Если надо - могу предоставить весь.
Миниатюры
Не работает fabs  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HidForce
54 / 54 / 13
Регистрация: 17.11.2012
Сообщений: 1,121
08.12.2013, 01:00     Не работает fabs #2
n0n4m3r, давайте весь код!
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
08.12.2013, 01:05     Не работает fabs #3
n0n4m3r, у Вас там с индексами массива большая путаница.
n0n4m3r
23 / 23 / 6
Регистрация: 12.10.2013
Сообщений: 183
08.12.2013, 01:09  [ТС]     Не работает fabs #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
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
78
79
80
81
82
83
84
85
86
87
88
89
#include <iostream>
#include <ctime>
#include <cmath>
#include <iomanip>
 
using namespace std;
 
int main(){
    setlocale(LC_ALL,"Russian");
    int num, a, b, pos=0, i=0, maxn;
    float summ=0;
    cout << "Введите количество элементов массива: ";
    cin >> num;
    float *mass = new float[num];
    srand (time(NULL));
    cout << endl << "Выберите способ заполнения массива:\nM - вручную;\nA - автоматически;\nЛюбая другая клавиша - завершить работу: ";
    char option;
    cin >> option;
 
 
        switch(option){
        case 'm': case 'M':
            {
                cout << "Вы выбрали ручное заполнение массива!" << endl;
                for(int i=0; i<num;i++){
                    cout << "Введите " << i+1 << " элемент: ";
                    cin >> mass[i];
                }
                break;
            }
        case 'a': case 'A':
            {
                cout << "Вы выбрали автоматическое заполнение массива!" << endl;
                for(int i=0; i<num; i++){
                    mass[i]=(rand()%10000-5000)*pow(0.1,rand()%3);
                    cout << "Элемент " << i+1 << " равен " << setw(8) << mass[i] << endl;
                }
                break;
            }
        default: 
            break;
 
        }
 
 
        //Задание 1:
        float max=fabs(mass[0]);
        maxn=1;
        for (i=0; i<num-1;i++){
            if (max < fabs(mass[i+1])){
                maxn=i+1;
                max=mass[i];
            }
        }
        
        cout << "Номер максимального элемента по модулю: " << maxn << endl;
 
        //Задание 2:
        while(mass[pos]<0)
            pos++;
        
        for(i=pos; i<num; i++)
            summ+=mass[i];
        cout << "Сумма всех чисел после первого положительного равна " << summ << endl << endl;
 
        //Задание 3:
        cout << endl << "А теперь немного посортируем!\nВведите меньшее значение интервала сортировки: ";
        cin >> a;
        cout << "Теперь большее: ";
        cin >> b;
        i=0;
        do{
            if(floor(mass[i]) >= a && floor(mass[i]) <= b)
                cout << mass[i] << endl;
            i++;
        }while(i<num);
        i=0;
        do{
            if(floor(mass[i]) < a || floor(mass[i]) > b)
                cout << mass[i] << endl;
            i++;
        }while(i<num);
        //end
 
 
        system("pause");
        return 0;
 
    }
Весь код
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
08.12.2013, 01:12     Не работает fabs #5
Цитата Сообщение от n0n4m3r Посмотреть сообщение
float max=fabs(mass[0]);
maxn=1;
for (i=0; i<num-1;i++){
if (max < fabs(mass[i+1])){
maxn=i+1;
max=mass[i];
}
}

cout << "Номер максимального элемента по модулю: " << maxn << endl;
C++
1
2
3
4
5
6
7
8
9
float max=fabs(mass[0]);
* * * * maxn=0;
* * * * for (i=1; i<num;i++){
* * * * * * if (max < fabs(mass[i])){
* * * * * * * * maxn=i;
* * * * * * * * max=fabs(mass[i]);
* * * * * * }
* * * * }
cout << "Номер максимального элемента по модулю: " << maxn+1 << endl;
Alex566
 Аватар для Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
08.12.2013, 01:13     Не работает fabs #6
C++
1
2
3
4
5
  int max=0;
  for(int i=1;i<n;i++)
      if(fabs(mass[i])>fabs(mass[max]))
          max=i;
  cout<<"Max = "<<mass[max];
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2013, 01:23     Не работает fabs
Еще ссылки по теме:

C++ Неправильное вычисление уравнения (atan, acos, fabs)
Конечные суммы на С++, fabs() C++
C++ Тип выводимых данных. abs() и fabs()

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

Или воспользуйтесь поиском по форуму:
n0n4m3r
23 / 23 / 6
Регистрация: 12.10.2013
Сообщений: 183
08.12.2013, 01:23  [ТС]     Не работает fabs #7
Цитата Сообщение от kazak Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
float max=fabs(mass[0]);
* * * * maxn=0;
* * * * for (i=1; i<num;i++){
* * * * * * if (max < fabs(mass[i])){
* * * * * * * * maxn=i;
* * * * * * * * max=fabs(mass[i]);
* * * * * * }
* * * * }
cout << "Номер максимального элемента по модулю: " << maxn+1 << endl;
Все равно выдает какое-то случайное максимальное число.
Сейчас указал на номер элемента со значением -1.14

Добавлено через 7 минут
Заработало, огромное спасибо!
Остановился на варианте
C++
1
2
3
4
5
6
int max=0;
        for (int i=1; i<num; i++)
            if(fabs(mass[i])>fabs(mass[max]))
                max=i;
        
        cout << "Номер максимального элемента по модулю: " << max+1 << endl;
Yandex
Объявления
08.12.2013, 01:23     Не работает fabs
Ответ Создать тему
Опции темы

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