Forumi


Povratak   PC Ekspert Forum > Računala > Software > Web dizajn, programiranje i ostalo
Ime
Lozinka

Odgovori
 
Uređivanje
Staro 18.05.2009., 10:42   #1
Imamic23
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.
Imamic23 je offline   Reply With Quote
Staro 18.05.2009., 11:08   #2
Bubba
E Pluribus UNIX
Moj komp
 
Bubba's Avatar
 
Datum registracije: Oct 2002
Lokacija: M82
Postovi: 6,544
Citiraj:
Autor Imamic23 Pregled postova
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..
Parnost je definirana na Z (skup cijelih brojeva), tako da jedino tamo mozes provjeriti je li neki broj paran ili ne.

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.
Bubba je offline   Reply With Quote
Oglasni prostor
Oglas
 
Oglas
Staro 18.05.2009., 12:20   #3
Imamic23
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
Imamic23 je offline   Reply With Quote
Staro 18.05.2009., 12:57   #4
_hmp_
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.
_hmp_ je offline   Reply With Quote
Staro 18.05.2009., 20:32   #5
Imamic23
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...
Imamic23 je offline   Reply With Quote
Staro 18.05.2009., 21:49   #6
_hmp_
Premium
 
Datum registracije: Dec 2008
Lokacija: Zagreb
Postovi: 31
Citiraj:
Autor Imamic23 Pregled postova
ne, ja koristin (float) rand()/(float)(GG-DG+1)+DG
jer moramo generirat float brojeve u polje...
Aha, al jos uvijek mi nije jasno kako onaj tko ti je zadao zadatak misli ispitat parnost broja iz skupa R?

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;
}
Malo je glup, zauzima previse memorije, koristi visak varijabli, ali mi ga se ne da optimizirat

Zadnje izmijenjeno od: _hmp_. 19.05.2009. u 10:19.
_hmp_ je offline   Reply With Quote
Staro 20.05.2009., 10:40   #7
gbijelic
Premium
Moj komp
 
gbijelic's Avatar
 
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
gbijelic je offline   Reply With Quote
Staro 20.05.2009., 11:19   #8
zwer
crnjo
Moj komp
 
zwer's Avatar
 
Datum registracije: Mar 2003
Lokacija: Zagreb
Postovi: 1,893
a%2 je broj a modan sa 2 (ostatak pri djeljenju sa 2)

!= je NIJE JEDNAKO

znaci ako ostatak pri djeljenju s 2 nije nula, printaj da je broj neparan...
__________________
sound powered by B&W/Denon
zwer je offline   Reply With Quote
Staro 20.05.2009., 11:25   #9
gbijelic
Premium
Moj komp
 
gbijelic's Avatar
 
Datum registracije: Nov 2006
Lokacija: Oslo
Postovi: 806
ooo hvala na super brzom odgovoru
gbijelic je offline   Reply With Quote
Oglasni prostor
Oglas
 
Oglas
Odgovori



Pravila postanja
Vi ne možete otvarati nove teme
Vi ne možete pisati odgovore
Vi ne možete uploadati priloge
Vi ne možete uređivati svoje poruke

BB code je Uključeno
Smajlići su Uključeno
[IMG] kod je Uključeno
HTML je Isključeno

Idi na