Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.07.2022, 18:34   #11
Darklight
Пользователь
 
Регистрация: 08.07.2022
Сообщений: 29
По умолчанию

Можно ли посчитать этот код решением моей задачи ?

Код:
#include <iostream>
#include <cmath>
using namespace std;

int sq_eq(double a, double b, double c, double& x, double& y, double precision)
{
    if (!a)
    {
        if (b) { x = -c / b, y = x; return 1; }
        return 0;
    }

    double d = b * b - 4 * a * c;
    if (fabs(d) < precision) d = 0; // точность
    if (d < 0) return 0;

    x = (-b - sqrt(d)) / (2 * a);
    y = (-b + sqrt(d)) / (2 * a);
    return d ? 2 : 1;
}
int main(int sq_eq) {
    cout << sq_eq;
}

Последний раз редактировалось BDA; 13.07.2022 в 22:17.
Darklight вне форума Ответить с цитированием
Старый 13.07.2022, 19:12   #12
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Однозначно нет. Где же ваша программа выполняет это условие
Цитата:
Сообщение от Darklight Посмотреть сообщение
переписать в вектор y(y1,..., ym); (m<= n) по правилу
macomics вне форума Ответить с цитированием
Старый 14.07.2022, 01:13   #13
Darklight
Пользователь
 
Регистрация: 08.07.2022
Сообщений: 29
По умолчанию

macomics, Я в затупке - сорян за мою тупость (но в жизни все бывает. Узнаю чет новое, но нужно помучатся)
Что мне нужно сделать в этом коде чтоб приблизится к цели?

Код:
#include <iostream>
#include <cmath>
typedef int (proc)(int);
inline int sqr(int x) 
{ 
    return x * x;
}

void CopyElement(proc p, int q, double *x, double *y, int n)
{
    for (int i = 0, j = 0; i < n; i++)
        if (sqr(p(i)) - 4 * q > 0)
            y[j++] = x[i];
}

int main() 
{ 
    return 0; 
}

Последний раз редактировалось BDA; 14.07.2022 в 01:54.
Darklight вне форума Ответить с цитированием
Старый 14.07.2022, 01:35   #14
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Тот код что я вам до этого написал уже все решает. Там надо лишь разобраться с типами переменных и грамотно поместить его в шаблон стандартной программы на C++.
Цитата:
Сообщение от macomics Посмотреть сообщение
Код:
for (int i = 0, j = 0; i < n; i++) if (sqr(p(i)) - 4 * q > 0) y[j++] = x[i];
Кстати. Имена в моем примере сохранены такими как и в задании. Поэтому разобраться какая из переменных что обозначает достаточно просто. Да и рабочий вариант этого куска программы я вам уже присылал. Его достаточно просто использовать и чуть изменить, если типы данных выбранные мной не соответствуют вашим требованиям.

Например: из вашего задания понятно, что коэффициент b квадратного уравнения зависит от i, но про массивы ничего не сказано. Поэтому в моем примере он задан функцией от i. Или коэффициент q (как и значения функции p(i)) выбраны как целые числа. Но возможно вам надо чтобы они были вещественными, тогда поменяйте их на float или double.

P.S. Используйте тег [CODE][/CODE], иначе полотенце, которое вы приводите в качестве кода становится не читаемым (или, в случае с Python, не рабочим).
P.P.S. BDA или Alar поправьте пожалуйста последний тег strike вот тут

Последний раз редактировалось macomics; 14.07.2022 в 01:48.
macomics вне форума Ответить с цитированием
Старый 14.07.2022, 18:02   #15
Darklight
Пользователь
 
Регистрация: 08.07.2022
Сообщений: 29
По умолчанию

macomics,

int k = CopyElement(A, n); - в этой строчке ошибка. Пишет что функция не принимает 2 аргумента , либо слишком мало аргументов.

Код:
#include <iostream>
#include <clocale>
#include <cstdlib>
using namespace std;

void Input(int* arr, int n);
void Print(int* arr, int n);
void RandomFill(int* arr, int n);

int CopyElement(int* arr, int n, int q, int* Res);

int main()
{
    setlocale(LC_ALL,"Rus");

    int n;
    cout << "Размер массива: ";
    cin >> n;

    int* A = new int[n];

    Input(A,n);
    RandomFill(A, n);
    Print(A, n);

    int* B = new int[n];
    int k = CopyElement(A, n);

    Print(B, k);

    delete[] B;
    delete[] A;
    system("pause");
    return 0;
}

void Input(int* arr, int n)
{
    for (int i = 0;i < n;i++)
    {
        cout << "arr[" << i << "]=?";
        cin >> arr[i];
    }
}

void RandomFill(int* arr, int n)
{
    for (int i = 0;i < n;i++)
    {
        arr[i] = rand() % 100;
    }
}

void Print(int* arr, int n)
{
    for (int i = 0;i < n;i++)
    {
        cout << arr[i] << " ";
    }
    cout << endl;
}
// копирование массива
int CopyElement(int* arr, int n, int q, int* Res)
{
    int k = 0;
    for (int i = 0; i < n; i++)
    {
        if (arr[i] * arr[i] - 4 * q > 0)
            Res[k++] = arr[i];
    }
    return k; // возвращаем количество переписанных элементов
}
Darklight вне форума Ответить с цитированием
Старый 14.07.2022, 18:48   #16
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Правильно. Вы же сами описали 4 аргумента
Код:
int CopyElement(
  int* arr, // 1
  int n,    // 2
  int q,    // 3
  int* Res  // 4
)
а передаете только 2
Код:
int k = CopyElement(
  A, // 1
  n  // 2
);

Последний раз редактировалось macomics; 14.07.2022 в 18:55.
macomics вне форума Ответить с цитированием
Старый 14.07.2022, 18:54   #17
Darklight
Пользователь
 
Регистрация: 08.07.2022
Сообщений: 29
По умолчанию

macomics,
Код:
int k = CopyElement(A, n, q, Res);
- когда ввожу так , то пишет что Res не определен
Darklight вне форума Ответить с цитированием
Старый 14.07.2022, 18:59   #18
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Потому что в определении
Код:
int CopyElement(
  int* arr, // 1
  int n,    // 2
  int q,    // 3
  int* Res  // 4
)
перечисляются формальные параметры, именами которых вы оперируете внутри функции CopyElement. А при вызове
Код:
int k = // result
CopyElement(
  A, // 1
  n, // 2
  ?, // 3
  ?  // 4
);
вам надо указать фактические параметры, именами которых вы оперируете в вызывающей функции. Имена формальных и фактических параметров могут и не совпадать, они сопоставляются по порядку перечисления.

Последний раз редактировалось macomics; 14.07.2022 в 19:02.
macomics вне форума Ответить с цитированием
Старый 14.07.2022, 19:01   #19
Darklight
Пользователь
 
Регистрация: 08.07.2022
Сообщений: 29
По умолчанию

macomics, Решил
Код:
#include <iostream>
#include <clocale>
#include <cstdlib>
using namespace std;

void Input(int* arr, int n);
void Print(int* arr, int n);
void RandomFill(int* arr, int n);

int CopyElement(int* arr, int n, int q, int* Res);

int main()
{
    setlocale(LC_ALL, "Rus");

    int n;
    cout << "Размер массива: ";
    cin >> n;
    int q;
    cout << "q = ";
    cin >> q;

    int* A = new int[n];
    Input(A, n);
    RandomFill(A, n);
    Print(A, n);
    int* B = new int[n];
    int k = CopyElement(A, n, q, B);
    Print(B, k);

    delete[] B;
    delete[] A;
    system("pause");
    return 0;
}

void Input(int* arr, int n)
{
    for (int i = 0;i < n;i++)
    {
        cout << "arr[" << i << "]= ";
        cin >> arr[i];
    }
}

void RandomFill(int* arr, int n)
{
    for (int i = 0;i < n;i++)
    {
        arr[i] = rand() % 100;
    }
}

void Print(int* arr, int n)
{
    for (int i = 0;i < n;i++)
    {
        cout << arr[i] << " ";
    }
    cout << endl;
}
// копирование массива
int CopyElement(int* arr, int n, int q, int* Res)
{
    int k = 0;
    for (int i = 0; i < n; i++)
    {
        if (arr[i] * arr[i] - 4 * q > 0)
            Res[k++] = arr[i];
    }
    return k; // возвращаем количество переписанных элементов
}
Darklight вне форума Ответить с цитированием
Старый 14.07.2022, 19:08   #20
Darklight
Пользователь
 
Регистрация: 08.07.2022
Сообщений: 29
По умолчанию

macomics, Спасибо
Darklight вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчёт пар чисел в файле удовлетворяющее определённому условию на c++ Porweks Помощь студентам 3 13.06.2022 15:09
Выборка в диапазоне значения по заданному промежутку и перенести на другой лист excel vba ac1-caesar Microsoft Office Excel 29 29.10.2014 12:46
Передача нужных элементов из одного массива в другой по заданному условию vlad0off C# (си шарп) 0 30.03.2014 03:30
Суммировать значения в "соседних ячейках", УДОВЛЕТВОРЯЮЩИЕ заданному условию! BadBorz Microsoft Office Excel 13 27.03.2014 03:08
Заполнить массив по заданному условию TheLonelySoul Паскаль, Turbo Pascal, PascalABC.NET 1 16.10.2011 23:36