Pereiti prie turinio

Pagalba su C programa


Rekomenduojami pranešimai

Sveiki, gavau programavimo užduotį, bet nelabai suprantu ką turiu padaryti :). Neprašau parašyti programos, tik užvedimo ant kelio, nuo ko pradėti. :)

Užduotis atrodo taip:

Prie tam tikrų įvedamų skaičių x, N ir E apskaičiuoti nurodytą sumą. Taip pat apskaičiuoti sumą tų dėmenų, kurie pagal absoliutų didumą didesni už E. Antru atveju sumuoti iki dėmens ,kuris yra mažesnis už E. Palyginkite sumavimo rezultatus su tiesiogiai apskaičiuotais.

http://img94.imageshack.us/img94/1284/96409188.png

 

Ačiū tiems kas padės :)

Redagavo AuDrIuS1992
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Jei tiksliai, tai nesuprantu tos vietos kur prašo apskaičiuoti nurodytą sumą. Duotoje formulėje tai ne vien sudėtis, arba aš kažką ne taip suprantu...

Čia yra begalinė suma ir tau ją reik suskaičiuot.

Tai lyg Teiloro Eilutė ar kažkas panašaus.

Vnz tau reik tą formulę kažkaip persitvarkyt į paprastesnę, kad galetum tada ją naudot rašant programa.

Man irgi buvo panaši užduotis, bet ne suma, o šeip formulė, kurią reikėjo persitvarkyt, naudojant Matematinės indukcijos būdą.

Šeip reik neblogų matematinių žinių, kad išspresti šitą uždavinį. :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Ačiū už atsakymą. :)

 

Formulę persidariau į tokią:

for (i=1;i<=N;i++)
suma=pow(-1,i)*pow(x,2*N)/fakt(i);

Faktorialo skaičiavimas funkcijoje:

int fakt(int i)
{
int k,j;
k=1;
for(j=1;j<i;j++)
{
k=k*(j+1);
}
return k;
}

Dabar kaip suprantu reikia susirinkti į masyvą visas reikšmes gautas kiekvienu for'o apsisukimu, po to juos galėsiu sudėti, susumuoti tas reikšmes, kur mažiau ir daugiau už E. Dar klausimas, kur prašo palyginti sumavimo rezultatus su tiesiogiai apskaičiuotais, kaip šitą suprasti?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Įsiterpsiu dėl pow funkcijos. Seniau teko sukti vieną programėlę, kur ir pats naudojausi pow funkcija, bet dekanas minėjo, jog esant ilgam for ciklui, ne naudinga naudoti pow. Kadangi bereikalingai atliekami jau buvę kėlimai.

 

Kaip pavyzdį galiu pateikti kaip viskas atrodo:

 

Su pow:

    for(i=1;i<=n;i++){
       cosin = pow(cos(x),i);
       p = (float)(i/(i+1.0));
       ats = ats * (p - cosin);
   }

 

Be pow:

    while(i <= n) {
       cosin = (cosin * cos(x));
       p = (float)(i/(i+1.0));
       ats = ats * (p - cosin);
       i++;
   }

 

Galbūt ir atrodys, kad nieko reikšmingo, bet esant dideliam n, laiko skirtumas sakyčiau ganėtinai milžiniškas.

Redagavo Chipsas
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Ačiū, kolkas apsistosiu ties pow.

 

Programa jau skaičiuoja visų narių sumą, ir sumą tų dėmenų, kurie didesni už E, patikslinkit, jei ne taip ką supratau :) dabar neaišku ką daryti šioje dalyje: Antru atveju sumuoti iki dėmens ,kuris yra mažesnis už E.

Programa dabar atrodo taip:

 

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


int fakt(int i)
{
int k,j;
k=1;
for(j=1;j<i;j++)
{
k=k*(j+1);
}
return k;
}

int main()
{

int x, N, E, i, k=0;
float suma, *ptr, v, b=0;
printf("Iveskite x \n");
scanf("%d", &x);
printf("Iveskite N \n");
scanf("%d", &N);
printf("Iveskite E \n");
scanf("%d", &E);
ptr = (float*) malloc(N* sizeof(float));
for (i=1;i<=N;i++)
{
suma=pow(-1,i)*(pow(x,2*i)/fakt(i));
ptr[k]=suma;
k=k+1;
}
for (i=0;i<=N-1;i++)
printf("%f\n", ptr[i]);

v=ptr[0]+ptr[1];
for (i=2;i<=N-1;i++)
v=v+ptr[i];
printf("---------------\n");
printf("Visa suma: %f\n", v);

for (i=0;i<=N-1;i++)
if (ptr[i]>E)
b=b+ptr[i];
printf("Didesniu uz E suma: %f", b);
return 0;
}

 

Patikrinkit kas suprantat :)

Redagavo AuDrIuS1992
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...