Как я могу округлить элементы вектора? - PullRequest
0 голосов
/ 17 февраля 2020

-заменить каждый элемент его целым числом для (2.72,4.34,9.82, 1.0,4.05,2.45) cout 2 4 9 1 4 2.

я пробовал это

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    int n;
    double v[100],i;
    cin>>n;
    for(i=1;i<=n;i++)
        cin>>v[i];
    for(i=1;i<=n;i++)
    {
        round(v[i]);
    }
    for(i=1;i<=n;i++)
        cout<<v[i]<<" ";
}

но я получаю эту ошибку:

|10|error: invalid types 'double [100][double]' for array subscript|
|13|error: invalid types 'double [100][double]' for array subscript|
|16|error: invalid types 'double [100][double]' for array subscript|

1 Ответ

0 голосов
/ 17 февраля 2020

Я вижу следующие вопросы и предложения:

  1. Итератор массива должен использовать целочисленную переменную, а не двойную.
  2. Согласно приведенному вами примеру, вы должны округлять вместо округления, поэтому вы должны использовать пол вместо округления. Это должно быть v[i] = floor(v [i]);.
  3. Вообще говоря, если размер массива не фиксированный, будет использовано динамическое распределение c. Например, используйте новую функцию double *v = new double[n]; и не забудьте удалить при использовании up.
  4. Массив v содержит 100 элементов. Он начинается с v [0], v [1] ... до v [99], поэтому переменную I лучше начинать с 0, чтобы предотвратить превышение.
...