Kezdőoldal » Számítástechnika » Programozás » Programozás C-ben függvényes...

Programozás C-ben függvényes feladat?

Figyelt kérdés

f(x)= sin^5(3x-sqrtx)(1,3-arccosx) Meg van adva ez a függvény és egy adott intervallumban egymástól egyenlő távolságokra levő x változókra kellene kiszámolni. Valamint ahol nincs értelmezve ott egy hibaüzenetet kellene kidobnia. Eddig ezt sikerült összehozni:

#include<stdio.h>

#include<stdlib.h>

#include<math.h>


float fuggveny(float a, float b, float c);


int main()

{

float a,b,c,x;


a = pow(sin(b*c),5);

b = (3*x-sqrt(x));

c = (1,3-acos(x));


printf("Adja meg az 'x' valtozo erteket!\n");

scanf("%f" , &x);

printf("A fuggveny erteke : %f\n",fuggveny(a,b,c));

return 0;

}

float fuggveny(float a, float b, float c)

{

return a*b*c;

}

Elég kezdő vagyok, szóval valószínűleg több sebből is vérzik a dolog :D Valaki meg tudná mondani, hogy mik a hibák benne és a feladatnak azt a részét, hogy lehetne megoldani, hogy egymástól egyenlő távolságra lévő x változókra számolja ki az intervallumon amit bekérek?

Előre is köszönöm!



2018. nov. 22. 21:46
1 2 3
 1/21 tabaki ***** válasza:
Nem, mintha értenék a C-hez, de ez nekem első blikkre is elég furcsa. Ha jól látom, a függvény lényegi része a mainben van, és nem értem, mit keres ott. De még ezen a különös helyen is érthetetlen, hogy a változó értékét először inicializálod a beállítatlan b-ben és c-ben talált memóriaszeméttel, majd azokat a szintén ismeretlen x tartalmával és csak ezután jut eszedbe megkérdezni legalább x értékét. Tehát, anélkül, hogy a programot mélyebben átnéztem volna, először is azt javaslom, hogy az a, b, c változók kerüljenek a függvénybe (amely ezentúl x-et kapja paraméterként), ott pedig az x alapján meghatározott b és c kiszámolása után következzen a. Az egyenletesen növekvő x-et nyilván egy ciklusban tudod átadni a függvénynek, amihez szükséged lesz egy kezdőértéket, egy határértéket és egy lépésközt tároló változóra.
2018. nov. 23. 00:20
Hasznos számodra ez a válasz?
 2/21 tabaki ***** válasza:

Ez a sor is gyanús, mert a számítástechnikában tizedespont használatos:

c = (1,3-acos(x));

A fordító jelzi is a warningok között, hogy a vessző operátorral nem tud mit kezdeni, de, talán az x körüli bizonytalanság okán, mégis hagyja lefordulni. Amúgy javaslom, hogy fordításkor olvasd el a figyelmeztetéseket, amelyek itt is korrektül jelezték a beállítatlan változókat. Később, amikor már tudod, mit csinálsz, megteheted, hogy figyelmen kívül hagyod azokat, amelyek valami speciális szándékodból következnek. Most még ne elégedj meg azzal, ha a programod egyáltalán lefordul, törekedj arra, hogy semmit ne kifogásoljon a fordító.

2018. nov. 23. 01:32
Hasznos számodra ez a válasz?
 3/21 anonim ***** válasza:

Alábbi:

[link]

a képlet?


De egyébként egyetértek tabaki kollegával: legelőször kérd be az x értékét, majd az így bekért számot add tovább a függvénynek.

Nem kell semmi a,b,c.


Illetve egy dologra ügyelj: programozásnál a lebegőpontos számok ábrázolásánál tizedespontot alkalmazunk.


Szóval valahogy ekképpen:

[link]


"és a feladatnak azt a részét, hogy lehetne megoldani, hogy egymástól egyenlő távolságra lévő x változókra számolja ki az intervallumon amit bekérek?"

1. Bekéred az intervallum kezdetét.

2. Bekéred az intervallum végét (amíg kisebb mint az intervallum kezdetének értéke kérjük be újra).

3. Kérjük be a lépések számát.

4. Az intervallum végének és kezdetének különbségéből határozzuk meg az intervallum méretét.

5. Az intervallum méretének és a lépések számának hányadosa megadja a lépésközt.

6. Az x értékét iteráljuk az intervallum kezdetétől az intervallum végéig a lépésközzel haladva.

7. A ciklusmagban pedig az x értékét felhasználva számoljuk ki a függvény értékét, és írjuk ki mind az x-et, mind a függvény értékét.

2018. nov. 23. 01:40
Hasznos számodra ez a válasz?
 4/21 tabaki ***** válasza:

„Nem kell semmi a,b,c.”

Hát igen, éjszaka még babráltam a programmal, és én is hamar erre lyukadtam ki, mellesleg a függvényem is betűhíven ugyanaz lett, mint a kollégáé -- ami nem túl nagy csoda, mert csak összeraktam egyetlen zárójeles kifejezésbe a háromfelé szalámizott számításodat, az meg eléggé adja magát. Aztán rájöttem, hogy a kérdésleírásban bemutatott formája alapján nem értem a képletet, úgyhogy inkább elfáradtam és lefeküdtem...

2018. nov. 23. 07:33
Hasznos számodra ez a válasz?
 5/21 tabaki ***** válasza:
(halk tücsökciripelés)
2018. nov. 23. 17:02
Hasznos számodra ez a válasz?
 6/21 anonim ***** válasza:

Amikor ez lefut, a változóknak még nincs értékük.

a = pow(sin(b*c),5); // mi b és c értéke??

b = (3*x-sqrt(x)) // mi x értéke??

c = (1,3-acos(x)); // ugyancsak x ??

2018. nov. 23. 17:29
Hasznos számodra ez a válasz?
 7/21 A kérdező kommentje:
Köszönöm a segítséget!
2018. nov. 23. 19:35
 8/21 tabaki ***** válasza:

#6:

Igen, igen... ez szúrja ki az ember szemét legelőször, de ezen egy ideje már átléptünk. Szerintem a következő probléma az, hogy egyáltalán mi az eredeti képlet -- legalábbis én nem tudom felírni a magyarázó szöveg alapján. Szerencsésebb lenne, ha Kérdező fogná a Paintet, a szokásos matematikai formában fölkaparná egy képre, és egy képmegosztó oldalra (imgur.com, vagy csak a kepkezelo.com) feltöltve belinkelné. Ezenkívül a kérdés másik része is érdekelne, vagyis az értelmezési tartományon kívülre eső rész kezelése, amihez az én ügyefogyott okoskodásom már kevés.

2018. nov. 23. 19:36
Hasznos számodra ez a válasz?
 9/21 tabaki ***** válasza:
Na megint elkéstem... hát, akkor... ennyi.
2018. nov. 23. 19:37
Hasznos számodra ez a válasz?
 10/21 A kérdező kommentje:
A képletet magát én se nagyon értem, így lett kiadva feladatban, szóval csináltam, ahogy én gondoltam.
2018. nov. 23. 19:43
1 2 3

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!