NotCoolProgrammer
@NotCoolProgrammer

Проблемы с выводом массива. В чём ошибка?

Суть задания: вывести количество и сумму элементов, которые по модулю меньше 0.1. Элементами массива считать a[i] = sin(i + 2) * cos(i). Я догадываюсь, что ошибка находится здесь void input(int *a, const int n), но что именно не так — не пойму.
#include <iostream>
#include <stdlib.h>
#include <math.h>
using namespace std;

void input(int *a, const int n);
void output(int *a, const int n);
void res(int *a, const int n);

int main() {
  int n;
  cout<<"Enter a nubmer of elements: ";
  cin>>n;
  int a[n];
  input(a, n);
  cout<<"Array A:"<<endl;
  output(a, n);
  res(a, n);
}

void res(int *a, const int n){
  int S = 0; // sum of elements
  int N = 0; // number of elements
  for (int i = 0; i < n; i++){
    if (fabs(a[i]) < 0.1){
      N++;
      S += a[i];
    }
  }
  cout<<"Number of elements: "<<N<<endl;
  cout<<"Sum of elements: "<<S<<endl;
}

void input(int *a, const int n){
  for (int i = 0; i < n; i++){
    a[i] = sin(i + 2) * cos(i);
  }
}

void output(int *a, const int n){
  int i;
  for (i = 0; i < n; i++){
    cout<<a[i]<<" ";
  }
  cout<<endl;
}
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
@galaxy
int a[n];

...

a[i] = sin(i + 2) * cos(i);


подумайте, что у вас будет в a[i].
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы