Andet

Mac C++ arrays og tilfældige tal

iBookG4user

Original plakat
27. juni 2006
Seattle, WA
  • 20. september 2009
De sætter underviserne til C++ på de mest ubelejlige tidspunkter på mit college... Under alle omstændigheder postede instruktøren følgende anvisninger:

'Skriv en funktion, der vil fylde et array med 25 tilfældige tal mellem 1 og 10. Skriv derefter en funktion, der vil udskrive arrayet. Skriv noget kode i main for at teste dine funktioner. Nogle gange kaldes denne testkode en *driver

Brug ikke globale variabler her. Send arrayet til funktionen gennem parameterlisten'

Min nuværende kode resulterer ikke i nogen fejl i debuggeren, men den udsender ikke arrayet. Og jeg ved ikke, hvad han mener med at skrive til chaufføren, hvad skal jeg teste? I har alle vist sig at være yderst hjælpsomme i fortiden, og jeg er sikker på, at I vil hjælpe mig i den rigtige retning denne gang

Kode: |_+_|

lee1210

10. januar 2005


Dallas, TX
  • 20. september 2009
Et par ting: Dit array skal være af typen int[], ikke double[]. Du skal acceptere en int-array for at producere og printe. Du skal erklære en int[] i main, videregive den til at producere, udfylde den der og derefter sende den til print. Det<< 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 fejl, er jeg sikker på, at din professor mente det pseudo- tilfældig.

I hovedsagen erklærer du også nye double()s, og påberåber dig ikke produktion og print. Tag det dobbelte væk der, og send et argument som diskuteret ovenfor, og skift returtypen for begge disse til void.

-Læs

gnasher729

Suspenderet
25. november 2005
  • 20. september 2009
Hvordan vil du skrive en funktionsprototype til funktionen 'producer'?
Og hvordan ville du skrive et kald til funktionen 'producer'?

Og inde i din 'hovedfunktion', hvilken af ​​de to har du skrevet, en funktionsprototype eller et funktionskald?

iBookG4user

Original plakat
27. juni 2006
Seattle, WA
  • 20. september 2009
lee1210 sagde: Et par ting: Dit array skal være af typen int[], ikke double[]. Du skal acceptere en int-array for at producere og printe. Du skal erklære en int[] i main, videregive den til at producere, udfylde den der og derefter sende den til print. Det<< 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 fejl, er jeg sikker på, at din professor mente det pseudo- tilfældig.

I hovedsagen erklærer du også nye double()s, og påberåber dig ikke produktion og print. Tag det dobbelte væk der, og send et argument som diskuteret ovenfor, og skift returtypen for begge disse til void.

-Læs

Ok, jeg lavede de ændringer, du foreslog, og koden ser mere logisk ud. Selvom jeg nu får tre fejl i for-løkkerne.

Kode: |_+_|

Vedhæftede filer

  • Skærmbillede 2009-09-20 kl. 17.42.31.png Skærmbillede 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
Skift argumenttypen for producere til int[] eller int *. Lige nu er det bare int, så du kan ikke bruge [], osv. Det samme gælder print. Du behøver heller ikke returnere noget fra produktion eller tryk. Skift deres returtype til ugyldig.

Jeg tror, ​​at hensigten er, at du ringer print tilbage i hovedet, hvilket burde være fint.

Også, når du sender array til at producere, skal du bare bruge array ikke *array.

-Læs

iBookG4user

Original plakat
27. juni 2006
Seattle, WA
  • 20. september 2009
lee1210 sagde: Skift argumenttypen for producere til int[] eller int *. Lige nu er det bare int, så du kan ikke bruge [], osv. Det samme gælder print. Du behøver heller ikke returnere noget fra produktion eller tryk. Skift deres returtype til ugyldig.

Jeg tror, ​​at hensigten er, at du ringer print tilbage i hovedet, hvilket burde være fint.

Også, når du sender array til at producere, skal du bare bruge array ikke *array.

-Læs

Det virkede
Ved du nu, hvad han mente med at skrive koden for at teste funktionerne? Hvad mener han med det? Og mange tak for din hjælp indtil videre!

Kode: |_+_|

chown33

Moderator
Medarbejder
9. august 2009
det afgrundsdybe plan
  • 20. september 2009
iBookG4user sagde: Ved du nu, hvad han mente med at skrive koden for at teste funktionerne? Hvad mener han med det?

Specifikationen sagde, at tallene i arrayet skulle være mellem 1 og 10. Du kunne skrive en test, der bekræfter det.

Den sagde også, at tallene skulle være tilfældige. Mens tilfældighed kan være sværere at teste for, end det ser ud til, kan simpel ikke-tilfældighed være let at teste for. Det enkleste er at bekræfte, at alle tallene ikke har samme værdi. Mere komplekse test af tilfældighed bruger statistiske analyser.

En anden test, du kan skrive, er at bekræfte, at funktionen produce() returnerer forskellige værdier, hver gang den kaldes. Dette er en simpel form for statistisk analyse, dvs. at sikre, at fortløbende påkald har uafhængige resultater.

Du bør også overveje at initialisere arrayet med kendte ugyldige værdier, såsom -1 eller 0, før du kalder produce(). Ellers kan et ikke-initialiseret lokalt array allerede indeholde uforudsigelige værdier, som en test kunne fortolke som tilfældige, selvom producere() slet ikke gør noget.

Som en specifikation er arbejdsopgørelsen noget vag. For det første specificerer den ikke, hvilke prøver den skal bestå. Tro mig, hvis du overlader det til de fleste programmører at vælge kvalifikationsprøverne, er det en stor fejltagelse. Koden fungerer muligvis kun i ét tilfælde, hvilket var tilfældet, som programmøren brugte til at udvikle koden. Hvis det virker skørt, kan jeg forsikre dig om, at det er sket.

iBookG4user

Original plakat
27. juni 2006
Seattle, WA
  • 20. september 2009
Det var simpelt nok, tak!
Dette virkede en godbid:
Kode: |_+_| S

Sander

til
24. april 2008
  • 21. september 2009
iBookG4user sagde: Det var simpelt nok, tak!
Dette virkede en godbid:

Prøv at sætte et 'ugyldigt' tal i dit array (f.eks. 11), og se om denne funktion registrerer det.

iBookG4user

Original plakat
27. juni 2006
Seattle, WA
  • 21. september 2009
Sander sagde: Prøv at sætte et 'ugyldigt' tal i dit array (f.eks. 11) og se om denne funktion registrerer det.

Jeg indstillede midlertidigt arrayet til at tillade tal større end 10, og det opdagede det, tak S

Sander

til
24. april 2008
  • 22. september 2009
iBookG4user sagde: Jeg indstillede midlertidigt arrayet til at tillade tal større end 10, og det registrerede det, tak

Selvom det ikke er det første element i arrayet..?

Grunden til at jeg spørger er fordi din print() funktion (i det mindste den sidste version vist i denne tråd) kun returnerer det første element i arrayet (konverteret til en dobbelt).