1 Востаннє редагувалося marketesh (29.11.2015 19:19:23)

Тема: Помилка у головній функції

не розумію в чому поблема

#include "stdafx.h"
#include <math.h>
#include <iostream>

using namespace std;

double one(double y1)
    {
    double x;
    cout << "Enter the variable x value" << endl;
    cin >> x;
    y1 = 2 / (2 * x - 3);
    return y1;
    }

double two(double y2)
{
    double x;
    cout << "Enter the variable x value" << endl;
    cin >> x;
    y2 = pow(x,5)*pow((x+2),(-4))+pow(x,4);
    return y2;
}

double three(double y3)
{
    double x;
    cout << "Enter the variable x value" << endl;
    cin >> x;
    y3 = 3 * sin(pow(x, 2)) + ((3.18*pow(x, (-2))) / (x + 3 * cos(x)));
    y3 = 8*(1/(tan(x)))-((2.15*x)/(abs(tan(x)-2)));
    return y3;
}

int main()
{
    double z;
    z = 0.5*one + two + three; // >>>>>>>>>>>>>>>>>пише, що помилка тут<<<<<<<<<<<<<<<< 
    cout << "result is " << z << endl;
    system("pause");
    return 0;
}

2

Re: Помилка у головній функції

z = 0.5*one + two + three

А де передача параметрів до функцій?
Перенеси код

    double x;
    cout << "Enter the variable x value" << endl;
    cin >> x;

із свох функцій до головної, й тоді напишешь:

z = 0.5*one(x) + two(x) + three(x);

Тоді буде гарно.

Подякували: leofun011

3 Востаннє редагувалося marketesh (29.11.2015 19:41:01)

Re: Помилка у головній функції

так???

#include "stdafx.h"
#include <math.h>
#include <iostream>

using namespace std;

double one(double y1)
    {
    double x;
    y1 = 2 / (2 * x - 3);
    return y1;
    }

double two(double y2)
{
    double x;
    y2 = pow(x,5)*pow((x+2),(-4))+pow(x,4);
    return y2;
}

double three(double y3)
{
    double x;
    y3 = 3 * sin(pow(x, 2)) + ((3.18*pow(x, (-2))) / (x + 3 * cos(x))); 
    y3 = 8*(1/(tan(x)))-((2.15*x)/(abs(tan(x)-2)));                        
    return y3;
}

double main()
{
    double z, x;
    cout << "Enter the variable x value" << endl;
    cin >> x;
    z = 0.5*one(x) + two(x) + three(x);
    cout << "result is " << z << endl;
    system("pause");
    return 0;
}

чомусь не фуричить

4

Re: Помилка у головній функції

Я от дивуюся витримці пана Itari. Ви ж самі не даєте нам можливості допомогти вам - а він намагається розібратися, зрозуміти, допомогти...
Доки ви будете думати про програму в термінології "помилка у головній функції" чи (ще гірше) "чомусь не фуричить", у вас все буде "чомусь не фуричити". Починайте сприймати те, що відбувається навколо, це дуже допоможе і в програмуванні, і в житті. "Чомусь не фуричити" може, наприклад, від того, що у вас відеокарта перегрілася. А якщо у вас компілятор повідомляє про конкретну помилку в конкретному рядку чи функція виводить не те, що ви від неї очікували - то пишіть конкретно, чого очікували і що отримали.

Подякували: leofun011

5

Re: Помилка у головній функції

double main()

Чому не int main()?

6

Re: Помилка у головній функції

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

double main()

Чому не int main()?

це картину не міняє. Результат консоль викидає завжди 1.#INF

7

Re: Помилка у головній функції

marketesh, все дуже і дуже на поверхні, дивись ось тут ти передаєш параметром х

z = 0.5*one(x) + two(x) + three(x);

а у самих функціях опрацювуєш цей параметр як y

double one(double y1)
 {
    double x;
    y1 = 2 / (2 * x - 3);
    return y1;
 }

8

Re: Помилка у головній функції

Я виправив твій код

#include <cmath>
#include <iostream>
using namespace std;
 
double one(double x){
    double y1;
    y1 = 2 / (2 * x - 3);
    return y1;
}
 
double two(double x)
{
    double y2;
    y2 = pow(x,5)*pow((x+2),(-4))+pow(x,4);
    return y2;
}
 
double three(double x){
    double y3;
    y3 = 3 * sin(pow(x, 2)) + ((3.18*pow(x, (-2))) / (x + 3 * cos(x))); 
    y3 = 8*(1/(tan(x)))-((2.15*x)/(abs(tan(x)-2)));                        
    return y3;
}
 
int main()
{
    double z, x;
    //cout << "Enter the variable x value" << endl;
    //cin >> x;
    x = 0.27;
    z = 0.5*one(x) + two(x) + three(x);
    cout << "result is " << z << endl;
    //system("pause");
    return 0;
}

http://codepad.org/wXYxfnZK

Подякували: marketesh, leofun012

9 Востаннє редагувалося P.Y. (29.11.2015 20:10:58)

Re: Помилка у головній функції

це картину не міняє. Результат консоль викидає завжди 1.#INF

Значить, десь відбувається переповнення: в ході роботи програми виникає значення, що перевищує максимальне для double. Щоб знати, чому воно виникає і чим це погано (може, там і має бути нескінченність?), треба зрозуміти, що програма має робити і який результат має бути насправді.

10 Востаннє редагувалося koala (29.11.2015 20:15:02)

Re: Помилка у головній функції

(del)

11 Востаннє редагувалося -=ЮрА=- (29.11.2015 20:16:45)

Re: Помилка у головній функції

Стосовно синтаксису -

Чому не int main()?
це картину не міняє.

- тільки int main() мэейн має повертати тільки int
#include <math.h> - це старий стиль заголовків, для плюсів вже років з 10-ть коректно використовувати новий стиль тому math.h слід замінити на cmath

Подякували: marketesh1

12

Re: Помилка у головній функції

чомусь не фуричить

По-перше: Помилики до студії
По-друге: Який у тебе компілятор?
По-тертє: Хто тебе так вчив писати на С? Яб тому дядку з великиму вухами вухи то повідривав за таку "науку"...

13 Востаннє редагувалося -=ЮрА=- (29.11.2015 22:23:57)

Re: Помилка у головній функції

Itari, я перепрошую за запитання, але де ви побачили принаймні натяк на те що код повинен бути на Сі? Навіть перший пост теми не має нічого Сішного, віразу зрозуміло що це - код на плюсах. Говорити на плюсовий код Сішний тільки тому що пюси виросли з Сі не коректно: це хоч і споріднені, але два різних язики, з різними механізмами віділення пам'яті, обробки викючень, та взагалі багато чтого(placement_new, cast_operators, templates...), Сі - це процедурна мова, плюси - об'єктно орієнтовна.

14

Re: Помилка у головній функції

-=ЮрА=-, а де ви побачили в цьому коді "механізми віділення пам'яті, обробки викючень, placement_new, cast_operators, templates"? Чиста ж процедурщина, хіба вивід використовує перевантажені оператори (але не перевантажує, а використовує!). Тобто замість printf механічно вставлені cout. І все.

15

Re: Помилка у головній функції

Говорити на плюсовий код Сішний тільки тому що пюси виросли з Сі не коректн

Оце так дивина... Казкова дивина...
Добре. Перефразую: Хто так вчив ТС створювати ПЗ?. Дайте мені його глаза, я хочу до них подивитись.

16

Re: Помилка у головній функції

Itari написав:

Говорити на плюсовий код Сішний тільки тому що пюси виросли з Сі не коректн

Оце так дивина... Казкова дивина...
Добре. Перефразую: Хто так вчив ТС створювати ПЗ?. Дайте мені його глаза, я хочу до них подивитись.

А хтось стверджував, що це вже готовий продукт (я не про ПЗ, а про ТСа як програміста)? У вас не було періоду під час навчання, коли ви схожі помилки робили?

17

Re: Помилка у головній функції

У вас не було періоду під час навчання, коли ви схожі помилки робили?

Такого не було, бо читав книжки, й програмував на папірі. Тоді компьютерів було ще мало і не було інтернету, доводилось усе подумки прокручувати перечитуючи книжки по сотню разів. І я звісно звертав особливу увагу на те, що компілятор мені писав.

Подякували: koala1

18

Re: Помилка у головній функції

Тоді я вам заздрю, бо ви геній. Я теж колись влітку програмував на папері під старий підручник :), було таке, але схожі помилки певний час були, коли переносив на комп'ютер. Питання тут хіба в тому, скільки часу потрібно, щоб з цього періоду вийти. У вас він, схоже, тривав хвилини.

19

Re: Помилка у головній функції

Ні. Не хвилини. Я вчивсь цьому більш ниж 5 років. І як у всіх студентів, у мене була можливість спробувати свої нотатки раз у неділю чи місяц на 80286-м. Так що я мав досить часу на ознайомлення з теоріей. А ще у мене були гарні підручники совкового часу, яких зараз нажаль не роблять.

20 Востаннє редагувалося koala (30.11.2015 10:46:54)

Re: Помилка у головній функції

Оце так "відчуй себе молодим". У мене перший комп'ютер був 386, причому ще в школі.
Але я, ще раз, не бачу трагедії в тому, що людина, що не довчилася, робить помилки. От якщо це систематично від викладача, наприклад "а чого ви це тут змінні aCol та aRow поназивали? Пишіть x,y,z,q,p,r,s!" - тоді є питання. А тут - явно ж помилка учня.

А радянські підручники...

Там свої хвороби були. Наприклад, пам'ятаю повний алгоритм роботи компілятора Алголу (на 130 пунктів - НАЩО?) і доведення теореми про суперечливість у визначенні якогось поняття в тому ж Алголі, при тому, що конструкція, яка буде використовувати цю суперечливість, явно побудована виключно для доведення цієї теореми і на практиці не виникне, тому її і пропустили.

Подякували: leofun011