Тема: Не можу рішити задачу по функціям, допоможіть!
В універі задали задачу по функціям, я не можу зрозуміти умову і не знаю як вирішити...
Хто може поясніть мені!
Ось умова:
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → Не можу рішити задачу по функціям, допоможіть!
Для відправлення відповіді ви повинні увійти або зареєструватися
В універі задали задачу по функціям, я не можу зрозуміти умову і не знаю як вирішити...
Хто може поясніть мені!
Ось умова:
Що саме Вам не зрозуміло?
Все! Мені тре рішення задачі з коментарями... буду дуже вдячний...
Бо до двохвимірних масивів все розумів а почались функції і я загруз!
Рішення задачі з коментарями ми можемо обговорити окремо у скайпі наприклад. Chemist-Dnepr
А тему перенести у кошик
Спробуйте розв'язати спочатку без фукнцій.
Напишіть просто код, який буде виглядати наступним чином:
// оголошення всіх змінних
// 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);
Рішення задачі з коментарями ми можемо обговорити окремо у скайпі наприклад. Chemist-Dnepr
А тему перенести у кошик
Може, до "Пропоную роботу"?
Chemist-i написав:Рішення задачі з коментарями ми можемо обговорити окремо у скайпі наприклад. Chemist-Dnepr
А тему перенести у кошикМоже, до "Пропоную роботу"?
Та вже не актуально
Дякую всім!
Ось я зробив але якесь велике значення в результаті!
Трохи некоректно зробив, підкажіть що неправильно!
#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);
}
Подивіться скрін!
У мене питання:
а хто просив викоикати функції одну з одної?
а чому жодна із функції не повертає значень?
невже компілятор мовчить?
іще кілька питань щодо мейну, розділеної ініціалізації змінної y...
.....
allspice, а як воно у вас скомпілювалося взагалі?
Наприклад, оце?
float vivid (y)
Якщо ви пишете в Visual Studio, раджу зробити Build->Rebuild, бо скидається на те, що скрін та код описують різні програми.
UPD: "чую - халявскім духом пахнєт!"
1. Вираз не відповідає тому, що є в завданні. Перевірте, чи всі дужки на місці, особливо навколо знаменника.
2. float vivid (y) означає, що тип параметра y - int. Відповідно, виводиться не y, а float, що збирається із y і довільного значення в пам'яті поруч із ним (ну... не зовсім довільного, добре, але й не визначеного в програмі).
3. Я б сказав, що ви неправильно передаєте параметри, але умова виконується, далі від викладача залежить. Подумайте про використання вказівників, по типу параметрів scanf.
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);
}
Вже виводить нормальний результат!)) ще що поміняти бо це моя перша програмка з функціями і я незовсім розумію...
У мене питання:
а хто просив викоикати функції одну з одної?
а як по іншому зробити бо я незнаю!?
incred написав:У мене питання:
а хто просив викоикати функції одну з одної?а як по іншому зробити бо я незнаю!?
Про return чули?
allspice написав:incred написав:У мене питання:
а хто просив викоикати функції одну з одної?а як по іншому зробити бо я незнаю!?
Про return чули?
воно повиртає тільки одне значення, може я не про те говорю, можете показати як реалізувати...
воно повиртає тільки одне значення, може я не про те говорю, можете показати як реалізувати...
я код не дивилась, просто намагаюсь показати суть return
int sum (int x, int y)
{
int z=x+y;
return z;
}
тобто, повертається результат дій над параметрами (в main трішки інша логіка)
до речі, варто розібратись ЯК описувати функцію, тому що коли у нас:
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....
воно повиртає тільки одне значення, може я не про те говорю, можете показати як реалізувати...
Та, в С++ одне, на жаль.
Однак достатньо й одного, якщо з функції обчислення повернути "у".
allspice: ви б все ж розкрили нам усім таємницю: це C чи C++? Втім, я вже писав, можна повертати результати за посиланнями. Чи структурою (добре, ви це не вчили ще). А якщо це C++, то
Bartash: C++11 вміє (tuple+tie).
Та, в С++ одне, на жаль.
Однак достатньо й одного, якщо з функції обчислення повернути "у".
для "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" чомусь неприсвоюються значення...
allspice: ви б все ж розкрили нам усім таємницю: це C чи C++? Втім, я вже писав, можна повертати результати за посиланнями. Чи структурою (добре, ви це не вчили ще). А якщо це C++, то
Bartash: C++11 вміє (tuple+tie).
Це C! Пишу в Code Blocks 12.11
Для відправлення відповіді ви повинні увійти або зареєструватися