Microsoft Visual C++ 2005-2008-2010-2012-2013-2019 Redistributable Package Hybrid вам в поміч.

2

(9 відповідей, залишених у C++)

koala написав:

Ну от, починається. В умові немає нічого на кшталт "не можна змінювати рядок cout<<f(a,5)<<endl;" Нащо вам взагалі щось виводити в main, якщо все вже вивелося в f?

Прихований текст
string f(int *a, size_t n) {
    stringstream ss;
    for(auto x: a) ss<<abs(x);
    return ss.str();
}
...
cout << f(a,5) << endl;

Про це не подумав) Вже зробив звичайний виклик функції без cout.

3

(9 відповідей, залишених у C++)

P.Y. написав:

Якщо цей вивід поверненого результату функції має принципове значення, і конче необхідно, щоб він був пустим, то можна зробити функцію типу char* і повертати пустий рядок "" — проте, в рамках студентської задачки виглядає як збочення.

Про це не подумав) Вже зробив звичайний виклик функції без cout.

4

(9 відповідей, залишених у C++)

koala написав:
loburyaka написав:

Проблема полягає в тому, що компілятор вимагає return щось для f

Ну от бачите, як важливо чітко формулювати питання.

void f(int *arr, size_t n) { //і вже ніхто нічого не вимагає

void - спеціальний тип, що означає "нічого". Користуйтеся на здоров'я.

Дуже дякую, тепер все так як треба. Але тепер, якщо я юзаю void, мені доведеться в main, там де cout, замінити "<<" на ":", бо компілятор не розпізнає "<<" для void. Є якийсь шлях залишити "<<"?

5

(9 відповідей, залишених у C++)

koala написав:

Для початку: щоб нормально відповісти на питання по коду, потрібні:
- завдання;
- код;
- опис проблеми.
Роздуми про можливе вирішення, опис спроб і т.д. також вітаються.

"Повернення масиву" - це завдання? Масив має повертатися з функції? Це можна зробити так само, як і передачу його в функцію, тобто вказівником:

int *f(int *arr, size_t n) { //повертаємо вказівник, n не змінюється
    ...
    return a;
}
...
int *b = f(a, 5); // тепер b вказує на масив на 5 елементів; але це не дуже й потрібно, бо a - той же масив

Однак потім ви намагаєтеся вивести те, що повертає функція, через cout. А cout не вміє виводити масиви; та ви й самі це знаєте - он, у функції виводите масив по елементах. Отже, що саме ви намагаєтеся зробити? Яке завдання?

Суть програми в тому, що є дві функції - одна f, друга main. Завдання f - перетворити в заданому в main масиві від'ємні елементи на додатні. В main задається цей масив і виконується f. Проблема полягає в тому, що компілятор вимагає return щось для f. І я запропонував два варіанти - замість cout в f вивести масив або ж його елементи через return (як?), або щоб return в f виводив порожнечу (як?). Інші варіанти вирішення проблеми вітаються)

6

(9 відповідей, залишених у C++)

#include <iostream>
using namespace std;
int f(int* arr, size_t n) {
    for (size_t i = 0; i < n; i++) {
        if (arr[i] < 0) {
            arr[i] = -(arr[i]);
        }
    }
    for (int i = 0; i < n; i++) {
        cout << arr[i] << endl;
    }
    return ;
}
int main() {
    int a[5] = { -5,-4,-3,-2,-1 };
    cout << f(a, 5) << endl;
    system("pause");
    return 0;
}

Доброго дня. Прошу вашої допомоги з цим кодом :) Є два варіанти вирішення : (в функції f) замість cout через return вивести кінцевий масив або ж return буде виводити порожнечу або ж слово "done". Проте, як це реалізувати не розумію. Наперед вдячний)

7

(14 відповідей, залишених у C++)

Доброго дня. Зараз на 1 курсі комп'ютерних наук і вчу С++. Викладач пояснює все вперемішок і дуже часто бракує банального знання синтаксису. Тому звертаюсь до тих, хто на цьому розуміється та може підказати якісний та сучасний посібник з С++. Наперед дуже вдячний :)