Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  c keeles väike 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
otsing:  
kotmarjak
HV Guru
kotmarjak

liitunud: 11.12.2003



Autoriseeritud ID-kaardiga

sõnum 15.01.2008 23:00:54 c keeles väike abi vasta tsitaadiga

nii.
panen terve koodi siia kirja
#include <stdio.h>

float a, h, n, c;
float massiiv[2][100];


void sisendid();
void arvuta();
float arvuta_y(float x);
void valjasta();


int main() {
 
  sisendid();
  arvuta();
  valjasta();
 
  getch();   
  return 0;
}

void sisendid() {
  printf("Sisesta argumendi algväärtus a: "); scanf("%f", &a);
  printf("Sisesta sammmude arv n: "); scanf("%f", &n);
  printf("Sisesta sammu algväärtus h: "); scanf("%f", &h);

}


void arvuta() {
  float x=a, y;
  int i;
 
  printf("\n\n   X    |   f(x)   ");
  printf("\n------------------\n");
 
  for(i=0;i<=n;i++) {
   
    y = arvuta_y(x);
   
    massiiv[0][i] = x;
    massiiv[1][i] = y;
   
    x += a+i*h;
  }
}

float arvuta_y(float x) {
  return (x + 4 / sqrt((x * x) + x) - (x * x) * sqrt(4 - (x * x * x)));
}

void valjasta() {
  int i;
  for(i=0;i<=n;i++) {
    printf(" %.4f |  %.4f  \n", massiiv[0][i], massiiv[1][i]);
  }
}


nimelt oleks vaja panna selline rida sisse, kus tuleb öelda, et kui x=1,587401052, siis vastus puudub ja selle sama annab ta ka massiivi

_________________
Ole tore !
Kommentaarid: 144 loe/lisa Kasutajad arvavad:  :: 5 :: 8 :: 117
tagasi üles
vaata kasutaja infot saada privaatsõnum
AMD
HV veteran
AMD

liitunud: 29.07.2003




sõnum 15.01.2008 23:11:11 vasta tsitaadiga

No aga pane siis vajalikku kohta
c:
  1.  
  2. if(x = 1.58....) {
  3.     /* tee midag */
  4. }
  5.  

_________________
From now on, the forum is owned by AMD.That means that you are NO LONGER allowed to talk about, or even mention *ntel.
Kommentaarid: 335 loe/lisa Kasutajad arvavad:  :: 145 :: 3 :: 12
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
kotmarjak
HV Guru
kotmarjak

liitunud: 11.12.2003



Autoriseeritud ID-kaardiga

sõnum 15.01.2008 23:53:29 vasta tsitaadiga

AMD, seda kuidagi üritasin, aga ei tulnud välja.
see peab ju ka kuidagi massiivis kajastuma. ja kui ma niimoodi kirjutan selle rea sinna, siis massiivi see ei tule

_________________
Ole tore !
Kommentaarid: 144 loe/lisa Kasutajad arvavad:  :: 5 :: 8 :: 117
tagasi üles
vaata kasutaja infot saada privaatsõnum
Ohohh
Kreisi kasutaja
Ohohh

liitunud: 13.09.2003




sõnum 16.01.2008 02:37:01 vasta tsitaadiga

Murdarve ei saa eiriti hästi võrdus märgiga võrrelda, kuna need ei teisendu alati üks-ühele kümnend süsteemi. Sa pead kontrollima, et väärtus jääb mingisse vahemikku.

Väike näide:
c++:
  1.  
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. int main() {
  7.     float i = 0;
  8.  
  9.     while (i!=1) {
  10.         i+= 0.1;
  11.         cout << i << endl;
  12.         getchar();
  13.     }
  14.  
  15.     return 0;
  16. }
  17.  

Loogiliselt võttes peaks see kood olema tsüklis 10 korda ja siis väljuma, aga reaalselt jääb lõputusse tsüklisse. Antud juhul ei ole i väärtus kunagi täpselt 1 vaid 0.99... või 1.00...01

EDIT:
Sa ei pea mitte kontrollima, kas x=1,587401052 vaid seda, et 4 - (x * x * x) ei tohi olla väiksem nullist.
Samasse massiivi panemiseks võid näiteks kontrollida, et kui x on lubamatu, siis tagastad mingi hästi suure arvu. Pärast tabeli välja trükkimisel kontrollid, kui arv on ebanormaalselt suur, siis kirjutad, et väärtus puudub
Kommentaarid: 6 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 6
tagasi üles
vaata kasutaja infot saada privaatsõnum
kotmarjak
HV Guru
kotmarjak

liitunud: 11.12.2003



Autoriseeritud ID-kaardiga

sõnum 16.01.2008 12:39:03 vasta tsitaadiga

tsitaat:

et 4 - (x * x * x) ei tohi olla väiksem nullist.

seda ma tean, kui x ongi see arv, siis ta ongi null see võrdus.

ma vaatan neid erinevad võimalusi ja proovin

_________________
Ole tore !
Kommentaarid: 144 loe/lisa Kasutajad arvavad:  :: 5 :: 8 :: 117
tagasi üles
vaata kasutaja infot saada privaatsõnum
Supiplex
HV veteran
Supiplex

liitunud: 11.12.2002




sõnum 16.01.2008 14:15:22 vasta tsitaadiga

Kas sa oled kursis, et arvuti arvutab float arvudega ligikaudselt? Osad tehted murdarvudega annavad viimased paar kohta täiesti valesti. Arvuti tehte vastus ei ole lõpuni täpne. Tasub arvesse võtta, kui koodi kirjutad.
_________________
The young lady had an unusual list,
Linked in part to a structural weakness.
She set no preconditions.
Kommentaarid: 38 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 34
tagasi üles
vaata kasutaja infot saada privaatsõnum
kotmarjak
HV Guru
kotmarjak

liitunud: 11.12.2003



Autoriseeritud ID-kaardiga

sõnum 16.01.2008 14:18:11 vasta tsitaadiga

sain muidu asja tehtud. lisasin sellised asjad
float arvuta_y(float x) {
if(x>=1.587401052)
return 0;

else
return (x + 4 / sqrt((x * x) + x) - (x * x) * sqrt(4 - (x * x * x))); [/code]
ja

void valjasta() {
int i;
for(i=0;i<=n;i++) {
if(massiiv[0][i]>=1.587401052)
printf(" %.4f | puudub \n", massiiv[0][i]);
else

printf(" %.4f | %.4f \n", massiiv[0][i], massiiv[1][i]);

_________________
Ole tore !
Kommentaarid: 144 loe/lisa Kasutajad arvavad:  :: 5 :: 8 :: 117
tagasi üles
vaata kasutaja infot saada privaatsõnum
.Eestlane.
HV kasutaja
.Eestlane.

liitunud: 14.01.2006




sõnum 16.01.2008 19:43:05 vasta tsitaadiga

Ma nii enda huvi pärast küsin, mida tähendab see rida?
float x=a, y;
Kommentaarid: 3 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 3
tagasi üles
vaata kasutaja infot saada privaatsõnum
AMD
HV veteran
AMD

liitunud: 29.07.2003




sõnum 16.01.2008 23:38:11 vasta tsitaadiga

sama, mida see:
float x = a;
float y;

_________________
From now on, the forum is owned by AMD.That means that you are NO LONGER allowed to talk about, or even mention *ntel.
Kommentaarid: 335 loe/lisa Kasutajad arvavad:  :: 145 :: 3 :: 12
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
.Eestlane.
HV kasutaja
.Eestlane.

liitunud: 14.01.2006




sõnum 16.01.2008 23:41:13 vasta tsitaadiga

Aa, muidugi, stupid me. Aitäh
Kommentaarid: 3 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 3
tagasi üles
vaata kasutaja infot saada privaatsõnum
spikhoff
HV veteran

liitunud: 26.01.2005



Autoriseeritud ID-kaardiga

sõnum 17.01.2008 13:21:14 vasta tsitaadiga

nii on ka võimalik icon_smile.gif

Spoiler Spoiler Spoiler
Kommentaarid: 59 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 54
tagasi üles
vaata kasutaja infot saada privaatsõnum
Urmet
HV vaatleja

liitunud: 29.07.2005



Autoriseeritud ID-kaardiga

sõnum 17.01.2008 13:33:25 vasta tsitaadiga

Aga arvuta see ruutjuur 3 kuskil main() alguses ära ja salvesta muutujasse. sellega peaks olema võimalik täpselt võrrelda. Kuidagi sarnaselt sai ise ka seda lahendatud.. vist. Ei leia enam üles seda koodi icon_sad.gif
Kommentaarid: 10 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 10
tagasi üles
vaata kasutaja infot saada privaatsõnum
kotmarjak
HV Guru
kotmarjak

liitunud: 11.12.2003



Autoriseeritud ID-kaardiga

sõnum 17.01.2008 16:13:22 vasta tsitaadiga

enam pole vaja ka. sain enda võimalusega kaitstud kõik ja korras ka.
tänud abipakkujatele.

_________________
Ole tore !
Kommentaarid: 144 loe/lisa Kasutajad arvavad:  :: 5 :: 8 :: 117
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  c keeles väike 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.