1 Востаннє редагувалося allspice (05.10.2015 12:49:08)

Тема: Не можу рішити задачу по функціям, допоможіть!

В універі задали задачу по функціям, я не можу зрозуміти умову і не знаю як вирішити...

Хто може поясніть мені!

Ось умова:

Post's attachments

Записати.PNG 17.26 kb, 329 downloads since 2013-10-26 

2

Re: Не можу рішити задачу по функціям, допоможіть!

Що саме Вам не зрозуміло?

3

Re: Не можу рішити задачу по функціям, допоможіть!

Chemist-i написав:

Що саме Вам не зрозуміло?

Все! Мені тре рішення задачі з коментарями... буду дуже вдячний...
Бо до двохвимірних масивів все розумів а почались функції і я загруз!

4 Востаннє редагувалося Chemist-i (26.10.2013 12:06:32)

Re: Не можу рішити задачу по функціям, допоможіть!

Рішення задачі з коментарями ми можемо обговорити окремо у скайпі наприклад. Chemist-Dnepr
А тему перенести у кошик

5

Re: Не можу рішити задачу по функціям, допоможіть!

Спробуйте розв'язати спочатку без фукнцій.
Напишіть просто код, який буде виглядати наступним чином:

// оголошення всіх змінних

// 1-а частина: введення параметрів i, k, a, b, x, z

// 2-а частина: визначення значення виразу за формулою

// 3-а частина: скоріше за все треба зробити гарне виведення. Наприклад, при наступних параметрах i = ...,k = ..., ... значення виразу y = ...

Коли напишете код, спробуйте оформити 1 та 3 частину процедурами, а 2-у частину функцією.
Тобто код буде виглядати якось так:

// введення
input(i, k, a, b, x, z);

// обчислення значення виразу
y = f(i, k, a, b, x, z);

// виведення
output(y, i, k, a, b, x, z);

6

Re: Не можу рішити задачу по функціям, допоможіть!

Chemist-i написав:

Рішення задачі з коментарями ми можемо обговорити окремо у скайпі наприклад. Chemist-Dnepr
А тему перенести у кошик

Може, до "Пропоную роботу"? ;)

7

Re: Не можу рішити задачу по функціям, допоможіть!

Bartash написав:
Chemist-i написав:

Рішення задачі з коментарями ми можемо обговорити окремо у скайпі наприклад. Chemist-Dnepr
А тему перенести у кошик

Може, до "Пропоную роботу"? ;)

Та вже не актуально

8 Востаннє редагувалося allspice (26.10.2013 20:46:35)

Re: Не можу рішити задачу по функціям, допоможіть!

Дякую всім!
Ось я зробив але якесь велике значення в результаті!
Трохи некоректно зробив, підкажіть що неправильно!

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void vedenya (void);
float obchislenya (float i, float k, float a, float b, float x, float z);
float vivid (y);

int main()
{
    vedenya ();
    return 0;
}

void vedenya (void) //Функція введення.
{
    float i,k,a,b,x,z;
    printf("\nVedit znchenya i:"); scanf("%f",&i);
    printf("\nVedit znchenya k:"); scanf("%f",&k);
    printf("\nVedit znchenya a:"); scanf("%f",&a);
    printf("\nVedit znchenya b:"); scanf("%f",&b);
    printf("\nVedit znchenya x:"); scanf("%f",&x);
    printf("\nVedit znchenya z:"); scanf("%f",&z);
    obchislenya(i,k,a,b,x,z);
}

float obchislenya (float i, float k, float a, float b, float x, float z)
{
    float y;
    y =((pow(i,3)-1)/k-4)*sqrt(2*a*b+sin(x)+cos(z));
    vivid (y);
}

float vivid (y)
{
    printf("\n%f",y);
}

Подивіться скрін!

Post's attachments

1.PNG 14.9 kb, 320 downloads since 2013-10-26 

9 Востаннє редагувалося incred (26.10.2013 20:57:00)

Re: Не можу рішити задачу по функціям, допоможіть!

У мене питання:
а хто просив викоикати функції одну з одної?
а чому жодна із функції не повертає значень?
невже компілятор мовчить?
іще кілька питань щодо мейну, розділеної ініціалізації змінної y...
.....

10 Востаннє редагувалося User 298 (26.10.2013 20:57:36)

Re: Не можу рішити задачу по функціям, допоможіть!

allspice, а як воно у вас скомпілювалося взагалі?

Наприклад, оце?

float vivid (y)

Якщо ви пишете в Visual Studio, раджу зробити Build->Rebuild, бо скидається на те, що скрін та код описують різні програми.

UPD: "чую - халявскім духом пахнєт!"

11

Re: Не можу рішити задачу по функціям, допоможіть!

1. Вираз не відповідає тому, що є в завданні. Перевірте, чи всі дужки на місці, особливо навколо знаменника.
2. float vivid (y) означає, що тип параметра y - int. Відповідно, виводиться не y, а float, що збирається із y і довільного значення в пам'яті поруч із ним (ну... не зовсім довільного, добре, але й не визначеного в програмі).
3. Я б сказав, що ви неправильно передаєте параметри, але умова виконується, далі від викладача залежить. Подумайте про використання вказівників, по типу параметрів scanf.

12

Re: Не можу рішити задачу по функціям, допоможіть!

koala написав:

2. float vivid (y) означає, що тип параметра y - int. Відповідно, виводиться не y, а float, що збирається із y і довільного значення в пам'яті поруч із ним (ну... не зовсім довільного, добре, але й не визначеного в програмі).

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void vedenya (void);
float obchislenya (float i, float k, float a, float b, float x, float z);
float vivid (float y);

int main()
{
    vedenya ();
    return 0;
}

void vedenya (void) //Функція введення.
{
    float i,k,a,b,x,z;
    printf("\nVedit znchenya i:"); scanf("%f",&i);
    printf("\nVedit znchenya k:"); scanf("%f",&k);
    printf("\nVedit znchenya a:"); scanf("%f",&a);
    printf("\nVedit znchenya b:"); scanf("%f",&b);
    printf("\nVedit znchenya x:"); scanf("%f",&x);
    printf("\nVedit znchenya z:"); scanf("%f",&z);
    obchislenya(i,k,a,b,x,z);
}

float obchislenya (float i, float k, float a, float b, float x, float z)
{
    float y;
    y =((pow(i,3)-1)/k-4)*sqrt(2*a*b+sin(x)+cos(z));
    vivid (y);
}

float vivid (float y)
{
    printf("\n%f",y);
}

Вже виводить нормальний результат!)) ще що поміняти бо це моя перша програмка з функціями і я незовсім розумію...

13

Re: Не можу рішити задачу по функціям, допоможіть!

incred написав:

У мене питання:
а хто просив викоикати функції одну з одної?

а як по іншому зробити бо я незнаю!?

14

Re: Не можу рішити задачу по функціям, допоможіть!

allspice написав:
incred написав:

У мене питання:
а хто просив викоикати функції одну з одної?

а як по іншому зробити бо я незнаю!?

Про return чули?

15

Re: Не можу рішити задачу по функціям, допоможіть!

Bartash написав:
allspice написав:
incred написав:

У мене питання:
а хто просив викоикати функції одну з одної?

а як по іншому зробити бо я незнаю!?

Про return чули?

воно повиртає тільки одне значення, може я не про те говорю, можете показати як реалізувати...

16

Re: Не можу рішити задачу по функціям, допоможіть!

allspice написав:

воно повиртає тільки одне значення, може я не про те говорю, можете показати як реалізувати...

я код не дивилась, просто намагаюсь показати суть return

int sum (int x, int y)
  {
       int z=x+y;
       return z;
  }

тобто, повертається результат дій над параметрами (в main трішки інша логіка)

скорочена версія
int sum (int x, int y)
  {
       return x+y;
  }

до речі, варто розібратись ЯК описувати функцію, тому що коли у нас:

float division (int x, int y)
  {
       return x/y;
  }

то перед division стоїть float (можна і double - дивлячись який проміжок брати), бо це тип поверненого значення, а в дужках стоять int-ти, бо це тип вхідних значень

і далі в main викликаємо

int main
 {
    float z;
    int x=1, y=3;
    /*.....*/

      z=division(x,y)

    /*.....*/
    return 0;
  
 }

і в результаті буде z=0,333333333333....

17

Re: Не можу рішити задачу по функціям, допоможіть!

allspice написав:

воно повиртає тільки одне значення, може я не про те говорю, можете показати як реалізувати...

Та, в С++ одне, на жаль.
Однак достатньо й одного, якщо з функції обчислення повернути "у".

18

Re: Не можу рішити задачу по функціям, допоможіть!

allspice: ви б все ж розкрили нам усім таємницю: це C чи C++? Втім, я вже писав, можна повертати результати за посиланнями. Чи структурою (добре, ви це не вчили ще). А якщо це C++, то
Bartash: C++11 вміє (tuple+tie).

19

Re: Не можу рішити задачу по функціям, допоможіть!

Bartash написав:

Та, в С++ одне, на жаль.
Однак достатньо й одного, якщо з функції обчислення повернути "у".

для "y" (obchislenya) так а для функції "vedenya" де тре аж 6 значинь повернути?

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void vedenya (float i,float k,float a,float b,float x,float z);
float obchislenya (float i, float k, float a, float b, float x, float z);
void vivid (float y);

int main()
{
    float i,k,a,b,x,z,y;
    vedenya (i,k,a,b,x,z);
    printf("\nVedit znchenya i:%f");
    y=obchislenya(i,k,a,b,x,z);
    vivid(y);
    return 0;
}

void vedenya (float i,float k,float a,float b,float x,float z) //Функція введення.
{
    printf("\nVedit znchenya i:"); scanf("%f",&i);
    printf("\nVedit znchenya k:"); scanf("%f",&k);
    printf("\nVedit znchenya a:"); scanf("%f",&a);
    printf("\nVedit znchenya b:"); scanf("%f",&b);
    printf("\nVedit znchenya x:"); scanf("%f",&x);
    printf("\nVedit znchenya z:"); scanf("%f",&z);

}

float obchislenya (float i, float k, float a, float b, float x, float z)
{
    float y;
    y =((pow(i,3)-1)/k-4)*sqrt(2*a*b+sin(x)+cos(z));
    return y;
}

void vivid (float y)
{
    printf("\n%f",y);
}

і цей код теж неправельно працює, бо у функції "vedenya" чомусь неприсвоюються значення...

20

Re: Не можу рішити задачу по функціям, допоможіть!

koala написав:

allspice: ви б все ж розкрили нам усім таємницю: це C чи C++? Втім, я вже писав, можна повертати результати за посиланнями. Чи структурою (добре, ви це не вчили ще). А якщо це C++, то
Bartash: C++11 вміє (tuple+tie).

Це C! Пишу в Code Blocks 12.11