Форум программистов, компьютерный форум CyberForum.ru

Функция ☺ - C++

Восстановить пароль Регистрация
 
Kolbusdkiy
 Аватар для Kolbusdkiy
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 112
25.11.2013, 23:36     Функция ☺ #1
Помогите пожалуйста.
Протабулировать функцию f(x,y)=sinx+cos2y, если х є (1; 2.5) у є (0; 1.8) с шагом обоих 0.25.
Вычеслить произведение всех положительных та количество отрицательных значений функции.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2013, 23:36     Функция ☺
Посмотрите здесь:

C++ Функция
Функция C++
Функция a,b,c C++
C++ Функция y=f(x)
C++ функция
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
25.11.2013, 23:58     Функция ☺ #2
Kolbusdkiy,
C++
1
2
3
for (double x = 1; x <= 2.5; x += 0.25)
for (double y = 0; y <= 1.8; y += 0.25)
cout << f(x,y) << endl;
Функцию ведь сможете составить f(x,y); ?
Kolbusdkiy
 Аватар для Kolbusdkiy
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 112
26.11.2013, 00:09  [ТС]     Функция ☺ #3
Цитата Сообщение от Folko Посмотреть сообщение
Kolbusdkiy,
C++
1
2
3
for (double x = 1; x <= 2.5; x += 0.25)
for (double y = 0; y <= 1.8; y += 0.25)
cout << f(x,y) << endl;
Функцию ведь сможете составить f(x,y); ?
Да, могу.
Вот
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <cmath>
#include <iomanip>
 
using namespace std;
 
int main() {
    double x = 1, y;
    cout << " x/y    ";
    while (x <= 2.5) {
        cout << fixed << setprecision(2) << setw(4) << x << "  ";
        x += 0.25;
    }
    cout << endl;
    cout << endl;
    y = 0;
    while (y <= 1.8) {
        cout << fixed << setprecision(2) << setw(4) << y << "   ";
        x = 1;
        while (x <= 2.5) {
            double a;
            a = sin(x) +cos(2)*y;
            cout << fixed << setprecision(3) << setw(4) << a << ' ';
            x += 0.25;
        }
        y += 0.25;
        cout << endl;
    }
 
    return 0;
}
Не могу сделать так, чтобы вычисляло произведение всех положительных та количество отрицательных значений функции. Выдает не правильные значения.
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
26.11.2013, 00:22     Функция ☺ #4
Kolbusdkiy, честно, я запутался в вашем коде) где у вас находится произведение в коде? И не проще было 2 for'ами сделать?
Kolbusdkiy
 Аватар для Kolbusdkiy
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 112
26.11.2013, 00:24  [ТС]     Функция ☺ #5
Folko, проще бы было, но мне ещё нужно вывести значения в виде таблицы, чтобы было красивенько)) потому и while. А в коде и нет произведение, это чисто функция... я не знаю куда вписать это
C++ (Qt)
1
2
3
4
if (f<0)
            kil++;
        else dob=dob*f;
        cout<<"dobutok="<<dob<<endl<<"kilkist="<<kil;
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
26.11.2013, 01:04     Функция ☺ #6
Kolbusdkiy,
C++
1
2
3
4
5
6
7
8
9
for (double x = 1; x <= 2.5; x += 0.25)
for (double y = 0; y <= 1.8; y += 0.25)
{
   double res = f(x,y);
   cout << fixed << setprecision(2) << setw(4) << x << "  ";
   cout << fixed << setprecision(2) << setw(4) << y << "   ";
   cout << fixed << setprecision(3) << setw(4) << res << endl;
   /*а сюда сунем проверку */
}
А вот так не подойдет?
Kolbusdkiy
 Аватар для Kolbusdkiy
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 112
27.11.2013, 00:56  [ТС]     Функция ☺ #7
Folko, вот испытал... Не то...
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <cmath>
#include <iomanip>
 
using namespace std;
 
int main() {
    for (double x = 1; x <= 2.5; x += 0.25)
        for (double y = 0; y <= 1.8; y += 0.25)
        {
            double res = sin(x)+cos(2)*y;
            cout << fixed << setprecision(2) << setw(4) << x << "  ";
            cout << fixed << setprecision(2) << setw(4) << y << "   ";
            cout << fixed << setprecision(3) << setw(4) << res << endl;
            int kil=0;
            double dob=1;
            if (res<0) 
                kil++;
        else {
            dob=dob*res;
        cout<<"dobutok="<<dob<<endl<<"kilkist="<<kil;
        }
}
return 0;
}
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
27.11.2013, 00:57     Функция ☺ #8
Kolbusdkiy, а что не так?
Kolbusdkiy
 Аватар для Kolbusdkiy
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 112
27.11.2013, 01:01  [ТС]     Функция ☺ #9
Folko, мне после после каждого значения фукции выводит текучее количество отрицательных ну и произведение, потому, что проверка в цикле... А нужно, чтобы в конце было выведено.
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
27.11.2013, 01:03     Функция ☺ #10
Kolbusdkiy, так вы cout<<"dobutok="<<dob<<endl<<"kilkist="<<kil; вставьте уже после циклов, в конце
Kolbusdkiy
 Аватар для Kolbusdkiy
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 112
27.11.2013, 01:10  [ТС]     Функция ☺ #11
Folko, вот это я и не знал
Теперь выводит правильно. Но, почему то произведение положительных считает не правильно.
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
27.11.2013, 01:23     Функция ☺ #12
Kolbusdkiy, а вот int kil=0; double dob=1; это лучше сделать еще до циклов, в самом начале функции
Kolbusdkiy
 Аватар для Kolbusdkiy
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 112
27.11.2013, 01:27  [ТС]     Функция ☺ #13
Folko, так и сделал, но в произведении мне выдает 0,000
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
27.11.2013, 01:32     Функция ☺ #14
Kolbusdkiy, а у вас там случайно res нулевым не бывает?
Kolbusdkiy
 Аватар для Kolbusdkiy
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 112
27.11.2013, 01:36  [ТС]     Функция ☺ #15
Folko, нет, он как можно близко к нулю приближается, но не ноль.
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
27.11.2013, 01:39     Функция ☺ #16
Kolbusdkiy, не знаю как у вас, а у меня вот такой код:
C++
1
2
3
4
5
6
7
8
9
int kil = 0; double dob = 1.0;
    for (double x = 1; x <= 2.5; x += 0.25)
        for (double y = 0; y <= 1.8; y += 0.25)
        {
            double res = sin(x)+cos(2)*y;
            if (res<0) kil++;
                else dob*=res;
        }
    cout<<"dobutok="<<dob<<endl<<"kilkist="<<kil<<endl;
выдает dobutok=9.10703e-20
kil = 2
Kolbusdkiy
 Аватар для Kolbusdkiy
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 112
27.11.2013, 01:47  [ТС]     Функция ☺ #17
Folko, у меня программа работает так же, только если убрать cout.
C++
1
2
3
    cout << fixed << setprecision(2) << setw(4) << x << "  ";
            cout << fixed << setprecision(2) << setw(4) << y << "   ";
            cout << fixed << setprecision(3) << setw(4) << res << endl;
А с ним не хочет считать.
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
27.11.2013, 01:53     Функция ☺ #18
Kolbusdkiy, попробовал вот так:
C++
1
2
3
cout << setw(4) << x << "  ";
cout  << setw(4) << y << "   ";
cout  << setw(4) << res << endl;
Устроит?)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2013, 01:53     Функция ☺
Еще ссылки по теме:

C++ Функция f(x)
Функция C++
Функция C=(x^a + y^(TM))/((x+y)^a) C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Kolbusdkiy
 Аватар для Kolbusdkiy
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 112
27.11.2013, 01:53  [ТС]     Функция ☺ #19
Folko, ладно, спасибо за помощь, сделаю просто без вывода, это не обязательное условие.
Yandex
Объявления
27.11.2013, 01:53     Функция ☺
Ответ Создать тему
Опции темы

Текущее время: 11:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru