Tudna segítani valaki egy C programfeladatba?
Legyen adott az alábbi függvény: f(x)=4lnx+5x/harmadik gyök alatt(3,2-3x)a négyzeten.Írjon C programot, mely kiszámítja a függvény értékeit egy adott intervallumban egymástól egyenlő távolságokra levő x változókra! A program kérje be az intervallum kezdő és végpontját, valamint az osztásközök számát, és írja ki az osztópontokban (beleértve a kezdő és végpontot is) kiszámított függvényértékeket táblázatos formában. Azokban a pontokban, ahol f(x) nincs értelmezve, a program küldjön hibaüzenetet!
A feladathoz készítsen jegyzőkönyvet, mely tartalmazza a tantárgy nevét, a hallgató nevét és tankörét, a feladat számát, a feladatkiírás szövegét, a programban alkalmazott változók jegyzékét, a program forrásszövegét és teszteredményt a [0,1] intervallumra vonatkozóan, egytizedenként véve az osztópontokat!
összes pont meghatározása (ennél többfajta megoldás is lehet):
- írsz listát (c-ben nem t'om van-e olyan, mint az STL c++-ban), amihez egy ciklussal hozzáadod a pontokat.
Nem tudom, hogy kell-e az intervallum kezdő és végpontja, ha igen, akkor:
int x = InterValBegin; //ez az intervallum alsó határa
while(x<=InterValEnd) //amíg nem futott túl az intervallum végpontján
{
x = x + SegmentSize; //x aktuális értékéhez hozzáadod az osztásköz nagyságát
if(x<=InterValEnd)
{
//hozzáadod a listához
FunctionPointList.Add(x); //ez itt asszem nem jó, de én már túlzottan objektumorientáltan gondolkodom, de erre írhatsz valami más fv-t.
}
}
- meghatározod, mennyi pont lehet, és egy annyi elemű tömböt hozol létre.
megnézed (ha adott a pontok száma, for ciklussal), hogy hol van értelmezve a fv. Mármint az f(x).
Ez ha jól sejtem, két dologtól függ:
- a 3.2 - 3*x mikor nulla (ugye ennek van a négyzete, és a négyzet a valós számoknál mindenképpen nemnegatív), mert akkor nem lehet értelmezni a törtet.
köbgyökvonás valahogy hasonlóan : [link] (tudom, ez csak négyzetgyök)
- a 4*ln(x)+5*x hol van értelmezve , vagyis, hogy az ln hol van értelmezve (kis segítség: [link]
én még a szépség kedvéért felvennék egy bool tömböt (az összes pontok elemszámával) és a megfelelő rossz pontoknál false-ra állítanám. Ezzel jobban látható, hogy hol nem tudod kiszámolni az értékeket.
Utána pedig ciklussal végigmész az összes ponton, és meghatározod a fv értékeit. Gondolom, a kiírással nem lesz probléma :)
Ha gond van, dobj egy privit.
Más: mi a határidő ? :P
itt egy megoldás (teszteltem és működik devc++ -szal)
#include <stdio.h>
#include <math.h>
#include <windows.h>
main()
{
double fv, eleje, vege, leptek, i, a, b, c;
do{
printf("Add meg az intervallum elejet: "); scanf("%lf",&eleje);
}while(eleje<0);
do{
printf("Add meg az intervallum veget: "); scanf("%lf",&vege);
}while(vege<eleje);
do{
printf("Add meg a lepteket: "); scanf("%lf",&leptek);
}while(leptek>(vege-eleje)
);
for(i=eleje;i<=vege;i=i+leptek)
{
a=3.2-3*i;
c=a;
if (a<0) c=a*(-1);
c=pow(c,1.0/3);
if (i==0 || c<0.0001) printf("%2.2lf | fv. nincs ertelmezve vagy hibahataron beluli a fv erteke\n", i);
else
{
if (a<0) c=c*(-1);
b=4*log(i)+(5*i)/c;
printf("%2.2lf | %2.4lf\n", i, b);
}
}
system("pause");
return 0;
}
További kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!