Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  Algaja palub abi märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
vottak
HV vaatleja

liitunud: 25.10.2013




sõnum 25.10.2013 13:21:00 Algaja palub abi vasta tsitaadiga

Nimelt on mul vaja funktsioon tabuleerida, kuid olen selles alles algaja. Koodis näitab ta selles kohas viga: rida koodist: if(sqrt(4 - x^3) == 0 && 4 - x^3 == 0) ning selle veateade: error: invalid operands to binary - (have 'int' and 'float *').
Sama error on ka siin: y[i] = (x+4/(x^2-x)^1/2) - x^2*sqrt(4-x^3);
x[i+1] = x[i]+C*H+i*(C^(i))*N*H);
Mida peaksin siin parandama? Ise ei ole hetkel seda veel suutnud välja mõelda..
tagasi üles
vaata kasutaja infot saada privaatsõnum
Batdog
HV vaatleja

liitunud: 21.06.2012




sõnum 25.10.2013 14:13:33 vasta tsitaadiga

Eeldan, et ^ operaatoriga tahad astendamist teha, aga ^ on hoopis bitwise xor tehte operaator.
x^3 asemel peaks olema pow(x,3)
tagasi üles
vaata kasutaja infot saada privaatsõnum
vottak
HV vaatleja

liitunud: 25.10.2013




sõnum 25.10.2013 14:47:41 vasta tsitaadiga

Batdog kirjutas:
Eeldan, et ^ operaatoriga tahad astendamist teha, aga ^ on hoopis bitwise xor tehte operaator.
x^3 asemel peaks olema pow(x,3)


peale selle muutmist ütleb ta ikka siin x[i+1] = x+C*H+i*pow(C,i)*N*H); veaks: [i]expected ';' before ')' token ning error: expected statement before ')' token
tagasi üles
vaata kasutaja infot saada privaatsõnum
yeah1000
HV kasutaja
yeah1000

liitunud: 09.02.2005




sõnum 25.10.2013 14:51:13 vasta tsitaadiga

vottak kirjutas:
Batdog kirjutas:
Eeldan, et ^ operaatoriga tahad astendamist teha, aga ^ on hoopis bitwise xor tehte operaator.
x^3 asemel peaks olema pow(x,3)


peale selle muutmist ütleb ta ikka siin x[i+1] = x+C*H+i*pow(C,i)*N*H); veaks: [i]expected ';' before ')' token ning error: expected statement before ')' token


Sulud ei ole tasakaalus ju, kus ; ees olev sulg algama peaks?
Kommentaarid: 3 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 3
tagasi üles
vaata kasutaja infot saada privaatsõnum
Sold OUT
no credit
Sold OUT

liitunud: 30.07.2002



Autoriseeritud ID-kaardiga

sõnum 25.10.2013 15:01:02 vasta tsitaadiga

vottak kirjutas:
Batdog kirjutas:
Eeldan, et ^ operaatoriga tahad astendamist teha, aga ^ on hoopis bitwise xor tehte operaator.
x^3 asemel peaks olema pow(x,3)


peale selle muutmist ütleb ta ikka siin x[i+1] = x+C*H+i*pow(C,i)*N*H); veaks: [i]expected ';' before ')' token ning error: expected statement before ')' token

x[i+1] = x[i]+C*H+i*pow(C,i)*N*H; icon_question.gif

_________________
People have been calling for a month and we've been sold out for a week or so.
Kommentaarid: 92 loe/lisa Kasutajad arvavad:  :: 5 :: 1 :: 79
tagasi üles
vaata kasutaja infot saada privaatsõnum
vottak
HV vaatleja

liitunud: 25.10.2013




sõnum 25.10.2013 15:35:24 vasta tsitaadiga

See sulg jäi jah kahe silma vahele, aitäh.
Aga selle rea kohta arvutamine (A, N, C, H, x, y); annab ta ikka veel mitu errorit, ehkki enne on koodis selline rida olemas: void arvutamine (float A, int N, float H, float C, float x[], float y[]). Äkki oleks keegi nõus minu koodi üle vaatama, kui saadan selle sõnumina? Ning isegi mõnda minu viga seletama, et seda enam ei korduks? icon_smile.gif


viimati muutis vottak 25.10.2013 16:42:32, muudetud 1 kord
tagasi üles
vaata kasutaja infot saada privaatsõnum
Fukiku
Kreisi kasutaja
Fukiku

liitunud: 06.11.2003




sõnum 25.10.2013 16:28:02 vasta tsitaadiga

Võid ju oma koodi ka tervenisti siia panna. Rohkem silmapaare on ehk ikka abiks. Samuti soovitan koodi postitamisel kasutada [syntax] tage koodi ümber - see muudab programmikoodi märksa paremini loetavaks.
_________________
Foxic is just a simple fox
Enne kui sa küsid oma küsimuse - küsi seda vannipardilt! Rangelt soovitatav enne programmeerimise alafoorumisse uue teema tegemist.
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
vottak
HV vaatleja

liitunud: 25.10.2013




sõnum 25.10.2013 16:44:20 vasta tsitaadiga

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

void sisestus(float *A, float *C, float *H, int *N ) // algandmete sisestus
{
   printf("Sisestage argumendi algvaartus A:\n");
   scanf("%f", A);
   printf("Sisestage sammude arv N:\n");
   scanf("%d", N);
   printf("Sisestage sammu algvaartus H:\n");
   scanf("%f", H);
   printf("Sisestage sammu koefitsient C:\n");
   scanf("%f", C);
}
void arvutamine (float A, int N, float H, float C, float x[], float y[])
{
   int i = 0;
   x[i] = A;
   if(4 - pow(A,3) == 0)
      printf("Vastus puudub\n");
   else
   for(i = 0; i<=N; i++)
         {
            y[i] = (x[i]+4/pow(x[i],2)-pow(x[i],1/2)) - pow(x[i],2)*sqrt(4-pow(x[i],3));
            x[i+1] = x[i]+C*H+i*pow(C,i)*N*H;
         }
}
void v2ljastus (float *x, float *y, int N)
      {
         int i = 0;
         printf("x  \t  y\n");
         for(i = 0; i<=N; i++)
            {
               printf("%f  \t  %f\n", x[i], y[i]);
            }
      }
int main(void)
   {
      int N;
      float A, C, H;
      sisestus ( &A, &H, &C, &N);
      arvutamine (A, N, C, H, x, y);
      v2ljastus (x, y, N);
      printf("Vajutage enter v2ljumiseks\n");
      getchar();
      return 0;
   
   }



Olen kindel, et selles on veel palju vigu. Olen õppimisega alles alguses ning varasemalt enne ülikooli polnud progemisega kokkupuudet ka. Lisaksin veel ka, et selle koodi panin kokku näidete põhjal, mida ise ka vastavalt enda ülesandele kohandasin. icon_smile.gif
tagasi üles
vaata kasutaja infot saada privaatsõnum
guest1902
Kreisi kasutaja
guest1902

liitunud: 05.11.2005




sõnum 26.10.2013 16:13:41 vasta tsitaadiga

Sul x ja y initsialiseerimata. Lükka mingi
c:
  1. float* x=(float*)malloc(N*sizeof(float));
  2. float* y=(float*)malloc(N*sizeof(float));
main()'i. malloc tahab vist #include <stdlib.h>

edit: vaata üle oma for-loopid. Nt, kui sa tahad N-pikkusega array'd, siis indeksid on 0...N-1. Vaata üle, et indeksid tsüklis ei läheks üle nende piiride.

_________________
assumption is the mother of all fuck ups
,,think before you print and save a ROOT::TTree''


viimati muutis guest1902 26.10.2013 17:42:11, muudetud 1 kord
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
Dealer14
HV vaatleja

liitunud: 09.02.2004




sõnum 26.10.2013 16:17:14 vasta tsitaadiga

arvutamine (A, N, C, H, x, y);


x ja y on määramata.

Ehk aitab.
int main(void)
{
   int N;
   float A, C, H;
   float x [] = { 0 };
   float y [] = { 0 };
   x[0] = 0;
   sisestus(&A, &H, &C, &N);
   arvutamine(A, N, C, H, x, y);
   v2ljastus(x, y, N);
   printf("Vajutage enter v2ljumiseks\n");
   getchar();
   return 0;

}
Kommentaarid: 22 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 22
tagasi üles
vaata kasutaja infot saada privaatsõnum
vottak
HV vaatleja

liitunud: 25.10.2013




sõnum 27.10.2013 18:36:47 vasta tsitaadiga

Nüüd peale vigade parandamist sain programmi kompileeritud ning kui käima panen, ei arvuta ta õigeid vastuseid..

tagasi üles
vaata kasutaja infot saada privaatsõnum
guest1902
Kreisi kasutaja
guest1902

liitunud: 05.11.2005




sõnum 27.10.2013 19:26:56 vasta tsitaadiga

Ei noh, ega me ju ei tea, mida su kood tegema peaks. Ja idee poolest ei peagi teadma.
Vaata hoolikalt üle oma algoritm, et sul nulliga jagamisi, algväärtustamata muutujatega opereerimist jms jama pole. Kui väga häda, võta või paber ja pastakas ning proovi ise järgi.
Kui kasutad mingit ide't nagu dev-c++, siis katsu debug'imisega tutvust teha: http://bit.ly/HaGhbp

_________________
assumption is the mother of all fuck ups
,,think before you print and save a ROOT::TTree''
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
Batdog
HV vaatleja

liitunud: 21.06.2012




sõnum 27.10.2013 21:44:32 vasta tsitaadiga

vottak kirjutas:
Nüüd peale vigade parandamist sain programmi kompileeritud ning kui käima panen, ei arvuta ta õigeid vastuseid..

Sedasi juhtub, kui proovid võtta negatiivsest arvust ruutjuurt. Sul ei ole funktsioon nende x väärtuste korral lihtsalt määratud.
tagasi üles
vaata kasutaja infot saada privaatsõnum
vottak
HV vaatleja

liitunud: 25.10.2013




sõnum 28.10.2013 13:05:05 vasta tsitaadiga

Nonii, leidsin veel ühe apsaka. Kuidas ma peaksin selle valemi koodi kirjutama?


See tuleks selle asemele kirjutada:
y[i] = (x[i]+4/pow(x[i],2)-pow(x[i],1/2)) - pow(x[i],2)*sqrt(4-pow(x[i],3));


Kas topelt-pow'ga saab kuidagi?
tagasi üles
vaata kasutaja infot saada privaatsõnum
napoleon
Unknown virus
napoleon

liitunud: 08.12.2008



Autoriseeritud ID-kaardiga

sõnum 28.10.2013 13:51:15 vasta tsitaadiga

Üks näpuks on jätuvalt peaks olema:

(x[i]+4) / pow(pow(x[i],2)-x[i],0.5) - pow(x[i],2)*sqrt(4-pow(x[i],3));
Kommentaarid: 77 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 60
tagasi üles
vaata kasutaja infot saada privaatsõnum
Batdog
HV vaatleja

liitunud: 21.06.2012




sõnum 28.10.2013 15:25:22 vasta tsitaadiga

Ma teeks nii:
y[i] = ((x+4) / sqrt(x*(x-1)) - (x*x)*sqrt(4-pow(x,3))
tagasi üles
vaata kasutaja infot saada privaatsõnum
vottak
HV vaatleja

liitunud: 25.10.2013




sõnum 29.10.2013 18:49:35 vasta tsitaadiga

Aitäh, parandasin ka selle vea, kuid programm ei arvuta endiselt vastuseid välja. Mida ma peaksin koodis veel parandama?
Ülesanne on muidu selline: On antud argumendi algväärtus A, sammude arv N, sammu algväärtus H ning sammu koefitsient C. Funktsiooni väärtust arvutatakse N punktis A, A + H, A + H + C*H, A + H + C*H + C2*H, …, A + H + C*H + … + CN*H (st samm võetakse iga kord teguriga C). Ning peab selle valemi, mille eespool postitasin, x ja y väärtused välja arvutama
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  Algaja palub abi
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.