Ostalo

Mac C++ nizovi i slučajni brojevi

iBookG4user

Originalni poster
27. lipnja 2006
Seattle, WA
  • 20. rujna 2009
Oni stavljaju mentore za C++ u najnezgodnijim trenucima na mom fakultetu... U svakom slučaju, instruktor je objavio sljedeće upute:

'Napišite funkciju koja će ispuniti niz s 25 slučajnih brojeva između 1 i 10. Zatim napišite funkciju koja će ispisati niz. Napišite neki kod u main kako biste testirali svoje funkcije. Ponekad se ovaj testni kod naziva *driver

Ovdje nemojte koristiti globalne varijable. Proslijedite niz funkciji kroz popis parametara'

Moj trenutni kod ne rezultira nikakvim pogreškama u debugeru, ali ne ispisuje niz. I ne znam što misli kad piše driver, što da testiram? Svi ste se u prošlosti pokazali izuzetno korisnima i siguran sam da ćete mi ovaj put pomoći da me usmjerite u pravom smjeru

Šifra: |_+_|

lee1210

10. siječnja 2005


Dallas, TX
  • 20. rujna 2009
Nekoliko stvari: Vaš bi niz trebao biti tipa int[], a ne double[]. Morate prihvatiti int niz za proizvodnju i ispis. Morate deklarirati int[] u glavnom, proslijediti ga za proizvodnju, ispuniti ga tamo, a zatim ga proslijediti za ispis. The<< operator of ofstream does not deal with arrays as you'd hope, so you'll need to loop to display in print.

Također, i siguran sam da je to iskrena greška, siguran sam da je mislio vaš profesor pseudo- nasumično.

Također, u glavnom, deklarirate nove double()s, a ne pozivate product and print. Uklonite tu dvostruku vrijednost i unesite argument kao što je gore objašnjeno, te promijenite tip povrata oba ova u void.

-Čitati

gnasher729

Obustavljeno
25. studenog 2005
  • 20. rujna 2009
Kako biste napisali prototip funkcije za funkciju 'produce'?
A kako biste napisali poziv funkciji 'produce'?

I unutar vaše 'glavne' funkcije, koju ste od ove dvije napisali, prototip funkcije ili poziv funkcije?

iBookG4user

Originalni poster
27. lipnja 2006
Seattle, WA
  • 20. rujna 2009
lee1210 je rekao: Nekoliko stvari: Vaš niz treba biti tipa int[], a ne double[]. Morate prihvatiti int niz za proizvodnju i ispis. Morate deklarirati int[] u glavnom, proslijediti ga za proizvodnju, ispuniti ga tamo, a zatim ga proslijediti za ispis. The<< operator of ofstream does not deal with arrays as you'd hope, so you'll need to loop to display in print.

Također, i siguran sam da je to iskrena greška, siguran sam da je mislio vaš profesor pseudo- nasumično.

Također, u glavnom, deklarirate nove double()s, a ne pozivate product and print. Uklonite tu dvostruku vrijednost i unesite argument kao što je gore objašnjeno, te promijenite tip povrata oba ova u void.

-Čitati

Ok, napravio sam promjene koje ste predložili i kod izgleda logičnije. Iako sada dobivam tri pogreške u for petljama.

Šifra: |_+_|

Prilozi

  • Snimka zaslona 2009-09-20 at 5.42.31 PM.png Snimka zaslona 20.09.2009. u 5.42.31 PM.png'file-meta'> 178.1 KB · Pregledi: 1.941

lee1210

10. siječnja 2005
Dallas, TX
  • 20. rujna 2009
Promijenite vrstu argumenta proizvoda u int[] ili int *. Trenutno je to samo int, tako da ne možete koristiti [], itd. Isto vrijedi i za ispis. Također, ne morate ništa vraćati od proizvoda ili tiska. Promijenite njihovu vrstu povrata u nevažeće.

Mislim da je namjera da nazovete print natrag u glavnom, što bi trebalo biti u redu.

Također, kada proslijedite niz za proizvodnju, samo koristite array ne *array.

-Čitati

iBookG4user

Originalni poster
27. lipnja 2006
Seattle, WA
  • 20. rujna 2009
lee1210 je rekao: Promijenite vrstu argumenta proizvoda u int[] ili int *. Trenutno je to samo int, tako da ne možete koristiti [], itd. Isto vrijedi i za ispis. Također, ne morate ništa vraćati od proizvoda ili tiska. Promijenite njihovu vrstu povrata u nevažeće.

Mislim da je namjera da nazovete print natrag u glavnom, što bi trebalo biti u redu.

Također, kada proslijedite niz za proizvodnju, samo koristite array ne *array.

-Čitati

Upalilo je
Sada, znate li što je mislio s pisanjem koda za testiranje funkcija? Što on time želi reći? I puno hvala na dosadašnjoj pomoći!

Šifra: |_+_|

chown33

Moderator
Član osoblja
9. kolovoza 2009
Abysmal Plane
  • 20. rujna 2009
iBookG4user je rekao: Sada, znate li što je mislio kada je napisao kod za testiranje funkcija? Što on time želi reći?

U specifikaciji je rečeno da bi brojevi u nizu trebali biti između 1 i 10. Mogli biste napisati test koji to potvrđuje.

Također je rečeno da bi brojevi trebali biti nasumični. Dok nasumičnost može biti teže testirati nego što se čini, jednostavnu neslučajnost može se lako testirati. Najjednostavnije je potvrditi da svi brojevi nisu iste vrijednosti. Složeniji testovi slučajnosti koriste se statističkim analizama.

Drugi test koji možete napisati je da potvrdite da funkcija product() vraća različite vrijednosti svaki put kada se pozove. Ovo je jednostavan oblik statističke analize, tj. osiguravanje da uzastopna pozivanja imaju neovisne rezultate.

Također biste trebali razmotriti inicijalizaciju niza s poznatim nevažećim vrijednostima, kao što su -1 ili 0, prije pozivanja production(). Inače neinicijalizirani lokalni niz može već sadržavati nepredvidive vrijednosti, koje bi test mogao protumačiti kao nasumične čak i ako production() uopće ne radi ništa.

Kao specifikacija, izjava o radu je pomalo nejasna. Kao prvo, ne navodi koje testove mora proći. Vjerujte mi, ako većini programera prepustite odabir kvalifikacijskih testova, velika je pogreška. Kod bi mogao funkcionirati samo u jednom slučaju, što je bio slučaj koji je programer koristio za razvoj koda. Ako se to čini ludim, uvjeravam vas da se dogodilo.

iBookG4user

Originalni poster
27. lipnja 2006
Seattle, WA
  • 20. rujna 2009
To je bilo dovoljno jednostavno, hvala!
Ovo je djelovalo kao poslastica:
Šifra: |_+_| S

Sander

do
24. travnja 2008
  • 21. rujna 2009
iBookG4user je rekao: To je bilo dovoljno jednostavno, hvala!
Ovo je djelovalo kao poslastica:

Pokušajte staviti 'nevažeći' broj u svoj niz (recimo, 11) i pogledajte hoće li ova funkcija to otkriti.

iBookG4user

Originalni poster
27. lipnja 2006
Seattle, WA
  • 21. rujna 2009
Sander je rekao: Pokušajte staviti 'nevažeći' broj u svoj niz (recimo, 11) i pogledajte hoće li ova funkcija to otkriti.

Privremeno sam postavio niz da dopušta brojeve veće od 10 i otkrio ga je, hvala S

Sander

do
24. travnja 2008
  • 22. rujna 2009
iBookG4user je rekao: Privremeno sam postavio niz da dopusti brojeve veće od 10 i otkrio ga je, hvala

Čak i ako nije prvi element u nizu..?

Razlog zašto pitam je taj što vaša funkcija print() (barem posljednja verzija prikazana u ovoj temi) vraća samo prvi element niza (pretvoren u dvostruki).