Annen

Mac C++-matriser og tilfeldige tall

iBookG4user

Original plakat
27. juni 2006
Seattle, WA
  • 20. september 2009
De setter veilederne for C++ på de mest ubeleilige tidspunktene på college... Uansett, instruktøren la ut følgende instruksjoner:

'Skriv en funksjon som vil fylle en matrise med 25 tilfeldige tall mellom 1 og 10. Skriv deretter en funksjon som vil skrive ut matrisen. Skriv litt kode i hovedfor å teste funksjonene dine. Noen ganger kalles denne testkoden en *driver

Ikke bruk globale variabler her. Send matrisen til funksjonen gjennom parameterlisten'

Min nåværende kode resulterer ikke i noen feil i debuggeren, men den sender ikke ut matrisen. Og jeg vet ikke hva han mener med å skrive sjåføren, hva skal jeg teste? Dere har alle vist seg å være svært hjelpsomme tidligere, og jeg er sikker på at dere vil hjelpe meg i riktig retning denne gangen

Kode: |_+_|

lee1210

10. januar 2005


Dallas, TX
  • 20. september 2009
Et par ting: Matrisen din bør være av typen int[], ikke double[]. Du må godta en int-array for å produsere og skrive ut. Du må deklarere en int[] i main, gi den til å produsere, fylle den inn der og sende den til utskrift. De<< operator of ofstream does not deal with arrays as you'd hope, so you'll need to loop to display in print.

Også, og jeg er sikker på at det er en ærlig feil, er jeg sikker på at professoren din mente det pseudo- tilfeldig.

I hovedsak erklærer du nye doble()-er, ikke påkaller produksjon og trykk. Ta dobbelen bort der, og send inn et argument som diskutert ovenfor, og endre returtypen for begge disse til void.

-Lese

gnasher729

Suspendert
25. november 2005
  • 20. september 2009
Hvordan vil du skrive en funksjonsprototype for funksjonen 'produsere'?
Og hvordan vil du skrive et kall til funksjonen 'produser'?

Og inne i 'hovedfunksjonen' din, hvilken av de to har du skrevet, en funksjonsprototype eller et funksjonskall?

iBookG4user

Original plakat
27. juni 2006
Seattle, WA
  • 20. september 2009
lee1210 sa: Et par ting: Matrisen din bør være av typen int[], ikke double[]. Du må godta en int-array for å produsere og skrive ut. Du må deklarere en int[] i main, gi den til å produsere, fylle den inn der og sende den til utskrift. De<< operator of ofstream does not deal with arrays as you'd hope, so you'll need to loop to display in print.

Også, og jeg er sikker på at det er en ærlig feil, er jeg sikker på at professoren din mente det pseudo- tilfeldig.

I hovedsak erklærer du nye doble()-er, ikke påkaller produksjon og trykk. Ta dobbelen bort der, og send inn et argument som diskutert ovenfor, og endre returtypen for begge disse til void.

-Lese

Ok, jeg gjorde endringene du foreslo, og koden ser mer logisk ut. Selv om jeg nå får tre feil i for-løkkene.

Kode: |_+_|

Vedlegg

  • Skjermbilde 2009-09-20 kl. 17.42.31.png Skjermbilde 2009-09-20 kl. 17.42.31.png'file-meta'> 178,1 KB · Visninger: 1 941

lee1210

10. januar 2005
Dallas, TX
  • 20. september 2009
Endre argumenttypen for produksjon til int[] eller int *. Akkurat nå er det bare int, så du kan ikke bruke [], osv. Det samme gjelder print. Du trenger heller ikke returnere noe fra produksjon eller trykk. Endre returtypen til ugyldig.

Jeg tror hensikten er at du skal ringe print tilbake i main, noe som burde være greit.

Også, når du sender array for å produsere, bare bruk array ikke *array.

-Lese

iBookG4user

Original plakat
27. juni 2006
Seattle, WA
  • 20. september 2009
lee1210 sa: Endre argumenttypen for produksjon til int[] eller int *. Akkurat nå er det bare int, så du kan ikke bruke [], osv. Det samme gjelder print. Du trenger heller ikke returnere noe fra produksjon eller trykk. Endre returtypen til ugyldig.

Jeg tror hensikten er at du skal ringe print tilbake i main, noe som burde være greit.

Også, når du sender array for å produsere, bare bruk array ikke *array.

-Lese

Det funket
Nå, vet du hva han mente med å skrive koden for å teste funksjonene? Hva mener han med det? Og tusen takk for hjelpen så langt!

Kode: |_+_|

chown33

Moderator
Betjeningen
9. august 2009
det dype planet
  • 20. september 2009
iBookG4user sa: Nå, vet du hva han mente med å skrive koden for å teste funksjonene? Hva mener han med det?

Spesifikasjonen sa at tallene i arrayet skulle være mellom 1 og 10. Du kan skrive en test som bekrefter det.

Den sa også at tallene skulle være tilfeldige. Mens tilfeldighet kan være vanskeligere å teste for enn det ser ut til, kan enkel ikke-tilfeldighet være lett å teste for. Det enkleste er å bekrefte at alle tallene ikke har samme verdi. Mer komplekse tester av tilfeldighet bruker statistiske analyser.

En annen test du kan skrive er å bekrefte at produce()-funksjonen returnerer forskjellige verdier hver gang den kalles. Dette er en enkel form for statistisk analyse, det vil si å sikre at påfølgende påkallinger har uavhengige resultater.

Du bør også vurdere å initialisere matrisen med kjente ugyldige verdier, for eksempel -1 eller 0, før du kaller produce(). Ellers kan en uinitialisert lokal matrise allerede inneholde uforutsigbare verdier, som en test kan tolke som tilfeldig selv om produce() ikke gjør noe i det hele tatt.

Som en spesifikasjon er arbeidsoppgaven noe vag. For det første spesifiserer den ikke hvilke tester den må bestå. Tro meg, hvis du overlater til de fleste programmerere å velge kvalifikasjonstestene, er det en stor feil. Koden kan fungere i bare ett tilfelle, som var tilfellet programmereren brukte til å utvikle koden. Hvis det virker sprøtt, kan jeg forsikre deg om at det har skjedd.

iBookG4user

Original plakat
27. juni 2006
Seattle, WA
  • 20. september 2009
Det var enkelt nok, takk!
Dette fungerte en godbit:
Kode: |_+_| S

Sander

til
24. april 2008
  • 21. september 2009
iBookG4user sa: Det var enkelt nok, takk!
Dette fungerte en godbit:

Prøv å sette et 'ugyldig' tall i matrisen din (f.eks. 11) og se om denne funksjonen oppdager det.

iBookG4user

Original plakat
27. juni 2006
Seattle, WA
  • 21. september 2009
Sander sa: Prøv å sette inn et 'ugyldig' nummer i matrisen din (f.eks. 11) og se om denne funksjonen oppdager det.

Jeg satte arrayet midlertidig til å tillate tall større enn 10, og det oppdaget det, takk S

Sander

til
24. april 2008
  • 22. september 2009
iBookG4user sa: Jeg satte arrayet midlertidig til å tillate tall større enn 10, og det oppdaget det, takk

Selv om det ikke er det første elementet i matrisen..?

Grunnen til at jeg spør er fordi print()-funksjonen din (minst den siste versjonen vist i denne tråden) bare returnerer det første elementet i matrisen (konvertert til en dobbel).