Ошибка НАН для всех возможных случаев, когда я вхожу - PullRequest
0 голосов
/ 03 января 2019

Выходной результат - распечатать самое дальнее число из x из массива мой код, во всех случаях, только распечатать nan, я часами смотрел на свой код, но все равно ничего не получил, хотя знаю, что что-то пошло не так.

Ошибка не отображается.Итак, я не знаю, что делать, я новичок, и я знаю, что этот вопрос может показаться глупым, но может кто-нибудь помочь мне, пожалуйста: ((

#include <iostream>
#define MAX 100
#include <cmath>
using namespace std;
void nhap(float a[] ,int &n)
{
    int x;
    do
       {
        cout<< "\nnhap so n: ";
        cin >> n;
        cout<< "\nnhap so x: ";
        cin >> x;
    if(n<0 || n> MAX)
        cout << "\nsai roi, moi nhap lai ";
        }
        while(n<0 || n >MAX);
        for(int i=0; i<n; i++)
            {
            cout << "a[" << i << "]= ";
            cin >> a[i];
            }
}
void xuat(float a[], int &n)
{
    for(int i=0; i <n; i++)
    {
    cout << a[i] << " ";
    }
}
void taomang (float a[], float b[], int &n, int x)
{
    for (int i=0; i<n; i++)
        b[i] = abs(a[i] - x);
}
float xaxnhat(float a[], float b[], int &n)
{
    int s = b[0];
    for(int i=0; i<n; i++)
    {
        if(b[i]>s)
        {
            s=b[i];
        }
    }
        return s;
}
float xuatketqua (float a[], float b[], int n)
{
    int k = xaxnhat(a,b,n);
    for (int i=0; i<n; i++)
    {
        if (b[i] == k)
            return a[i];
    }
}
int main()
{
int n;
float a[MAX];
float b[MAX];
nhap(a,n);
xuat(a,n);
cout << " \ngia tri xa gia tri x nhat la: ";
cout << xuatketqua(a,b,n);
return 0;
}

например массив:19 434 23 55 7 x: 2, то самое дальнее значение от x равно: 434

1 Ответ

0 голосов
/ 03 января 2019
  1. Вы читаете b, определенное в main, неинициализированное в xaxnhat, которое называется xuatketqua из cout << xuatketqua(a,b,n);. Это вызывает неопределенное поведение.

  2. xuatketqua не имеет возвращаемого значения во всех филиалах. Если k не найден в цикле, то в конце потока управления функции не будет оператора return, что снова приведет к неопределенному поведению.

  3. xaxnhat не использует первый параметр float a[], кажется подозрительным.

  4. taomang не используется. Вы намеревались инициализировать b из main с помощью этой функции перед передачей в xuatketqua?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...