|
18.05.2009., 10:42 | #1 |
Registered User
Datum registracije: Jun 2006
Lokacija: Zg
Postovi: 18
|
C, parnost float brojeva...
pozdrav.. kako ispitati parnost realnih brojeva... imam zadatak di treba u polje generirati 10 realnih brojeva... i onda ispitati kolko je parnih npr, kako ispitati dali je 23.45367 ili 0.784578 paran ili ne?!? jel to moguce uopce??? il nisam dobro shvatio zadatak.. Napisati program koji učita broj elemenata m (2<n<31) jednodimenzionalnog realnog polja za koje funkcijom malloc alocira potrebnu memoriju, te ga popuni slučajnim brojevima iz intervala [-10.0, 30.0]. Napisati funkciju koja izračuna i vrati koliko je brojeva u polju parnih, a koliko je neparnih. Deklarirati pokazivače na polja u kojima će se razvrstavati parne i neparne vrijednosti i funkcijom malloc alocirati potrebnu memoriju. Napisati funkciju koja prima pokazivač na kreirano polje i pokazivače na polja parnih i neparnih vrijednosti, te njegove elemente razvrstava u odgovarajuća zasebna polja. Na kraju ispisati sadržaje kreiranog i zasebnih polja, te osloboditi korištenu memoriju. |
18.05.2009., 11:08 | #2 | |
E Pluribus UNIX
Datum registracije: Oct 2002
Lokacija: M82
Postovi: 6,544
|
Citiraj:
Ipak, parnost bilo kojeg broja (pa makar i realnog) mozes provjeriti najjednostavnije da vidis koliki je njegov ostatak, za sto u C-u mozes koristiti operator modulo ('%'). Drugim rijecima, Code:
if ( ! (broj % 2) ) { /* sto vec trebas raditi s parnim brojevima... */ }
__________________
Programer
Rok od dva mjeseca u stvari znači četiri, ali nikako ispod šest. |
|
|
|
Oglas
|
|
18.05.2009., 12:20 | #3 |
Registered User
Datum registracije: Jun 2006
Lokacija: Zg
Postovi: 18
|
da..al onda moram baj broj pretvorit u (int) da bi se mogao izvesti modul %2... al ok, thx, tako cu i napravit, pa sta god profa kaže, drugacije nisam znao |
18.05.2009., 12:57 | #4 |
Premium
Datum registracije: Dec 2008
Lokacija: Zagreb
Postovi: 31
|
Za ove brojeve iz intervala pretpostavljam koristiš onu shemu rand()%(GG-DG+1)+DG, gdje su GG i DG, donja i gornja granica. Ta "formula" ti tako i tako nece dati nista sta nije u skupu cijelih brojeva, pa se nemoras brinut o tome. Al dobro je Bubba reko, parnost brojeva se moze provjeravati samo u skupu cijelih brojeva. |
18.05.2009., 20:32 | #5 |
Registered User
Datum registracije: Jun 2006
Lokacija: Zg
Postovi: 18
|
ne, ja koristin (float) rand()/(float)(GG-DG+1)+DG jer moramo generirat float brojeve u polje... |
18.05.2009., 21:49 | #6 | |
Premium
Datum registracije: Dec 2008
Lokacija: Zagreb
Postovi: 31
|
Citiraj:
EDIT: Evo frend me nazico da mu rijesim taj zadatak, ocito je to DZ na TVZ-u, kolegij programiranje. Napravio sam tako da provjerim da li je cijeli dio broja paran, neznam kako bi drugacije. Code:
#include <stdio.h> #include <math.h> #include <time.h> #include <stdlib.h> #define ranrange(a, b) ((a) + rand()/(RAND_MAX + 1.0) * ((b) - (a) + 1)) #define GG 30. #define DG 10. #define LOW 3 #define HIGH 30 void prov(float *p1, float *p2, float *p3, int *np, int *nn, int n) { int i=0,k; *np=0; *nn=0; for (i=0;i<n;i++) { k= (int) *(p1+i); if (!(k%2)) { *(p2+(*np)) = *(p1+i); (*np)++; } else { *(p3+(*nn))=*(p1+i); (*nn)++; } } } int main(void) { int i, n, pk, pn; float *ar,*par,*nep; srand(time(NULL)); do { printf("Unesite velicinu polja\n"); scanf("%d", &n); } while (n<LOW || n>HIGH); ar=(float *) malloc(n*sizeof(float)); par=(float *) malloc(n*sizeof(float)); nep=(float *) malloc(n*sizeof(float)); for (i=0;i<n;i++) { *(ar+i) = ranrange(GG,DG); printf("%f\t", *(ar+i)); } prov(ar,par,nep,&pk,&pn,n); printf("\nParni:\n"); for (i=0; i<pk; i++) printf("%f\t", *(par+i)); printf("\nNeparni:\n"); for (i=0; i<pn; i++) printf("%f\t", *(nep+i)); free(ar); free(par); free(nep); return 0; } Zadnje izmijenjeno od: _hmp_. 19.05.2009. u 10:19. |
|
20.05.2009., 10:40 | #7 |
Premium
Datum registracije: Nov 2006
Lokacija: Oslo
Postovi: 806
|
evo da i ja pitam jedno mutavo pitanje koje nemogu skotnat, naime nekuzim kod ovog koda : "if (a%2!=0) printf ("\n Broj %d je neparan",a);" ovaj dio a%2!=0, cemu sluzi ovaj % i !....2 je tu kolko sam skonto u vezi parnosti i neparnosti i jos me zanima zasto je =0, ako neko moze to poblize objasnit.hvala |
20.05.2009., 11:25 | #9 |
Premium
Datum registracije: Nov 2006
Lokacija: Oslo
Postovi: 806
|
ooo hvala na super brzom odgovoru |
|
|
Oglas
|
|
|
|