@Legion123212

Как решать задачу?

Задача:
Даны натуральные числа n, b0, ...,bn. Вычислить f(b0), f(b1), ..., f(bn), где
f(х)=x^2, если x кратно 3;
f(х)=x, если х при делении на 3 даёт остаток 1;
f(х)=x/3, во всех остальных случаях.

Вот мои наработки
#include <iostream>
#include <stdio.h>
#include <cmath>

using namespace std;
double f = 0.0;
int n,x,i;

int main() {
    setlocale(0, "rus");
    cout << "hello";
    cout << "Введите натуральное число n - ";
    cin >> n;

    for(i = 1; i >= n; i++){
        if(n % 3 == 0){
            f = n * n; }
    else if(n % 3 == 1){
        f = n;
    }
    else {
        f = n/3;}
    cout << "f равно: " << f;
}
}

Мне не могу понять в каком направлении двигаться. Я понимаю зачем в этой задаче цикл, но как его реализовать? Я может не понял сути задачи, в чём она тогда заключается
  • Вопрос задан
  • 265 просмотров
Решения вопроса 1
myjcom
@myjcom Куратор тега C++
Собственно
отсюда

#include <algorithm>
#include <iterator>
#include <iostream>
#include <vector>

using namespace std;

auto fx = [](int x){
  int r = 0;
  switch(x % 3)
  {
    case 0:
      r = x * x;
      break;
    case 1:
      r = x;
      break;
    default:
      r = x / 3;
      break;
  }
  return r;
};

auto calculate = [](const vector<int>& vx, auto fx){
  vector<int> calcValues(vx.size());
  transform(vx.begin(), vx.end(), calcValues.begin(), fx);
  return calcValues;
};

int main()
{
  cout << "Введи кол-во чисел: ";
  int n = 0;
  cin >> n;

  cout << "Введи через пробел " << n << " натуральных чисел:\n" << "$: ";
  vector<int> values(n);
  copy_n(istream_iterator<int>(cin), n, values.begin());

  cout << "Результат твоих расчетов:\n";
  copy_n(calculate(values, fx).begin(), n, ostream_iterator<int>(cout, "\n"));
}


тебе нужна только fx в остальное можешь не погружаться, кроме того что
Даны натуральные числа

https://ru.wikipedia.org/wiki/Натуральное_число --> unsigned
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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