Ander

Mac C++-arrays en willekeurige getallen

iBookG4user

originele poster
27 juni 2006
Seattle, WA
  • 20 sep 2009
Ze zetten de docenten voor C++ op de meest ongelegen momenten op mijn school... Hoe dan ook, de instructeur plaatste de volgende aanwijzingen:

'Schrijf een functie die een array vult met 25 willekeurige getallen tussen 1 en 10. Schrijf vervolgens een functie die de array uitprint. Schrijf wat code in main om je functies te testen. Soms wordt deze testcode een *driver . genoemd

Gebruik hier geen globale variabelen. Geef de array door aan de functie via de parameterlijst'

Mijn huidige code resulteert niet in fouten in de debugger, maar geeft de array niet weer. En ik weet niet wat hij bedoelt met de chauffeur te schrijven, wat moet ik testen? Jullie hebben allemaal bewezen buitengewoon behulpzaam te zijn in het verleden en ik weet zeker dat jullie me deze keer in de goede richting zullen helpen

Code: |_+_|

lee1210

10 januari 2005


Dallas, Texas
  • 20 sep 2009
Een paar dingen: Uw array moet van het type int[] zijn, niet double[]. U moet een int-array accepteren om te produceren en af ​​te drukken. U moet een int[] in main declareren, doorgeven om te produceren, het daar invullen en vervolgens doorgeven om af te drukken. De<< operator of ofstream does not deal with arrays as you'd hope, so you'll need to loop to display in print.

Ook, en ik weet zeker dat het een eerlijke fout is, ik weet zeker dat je professor bedoelde pseudo- willekeurig.

In het algemeen declareert u ook nieuwe double()s, en roept u geen produceren en afdrukken op. Neem de dubbele daar weg, en geef een argument door zoals hierboven besproken, en verander het retourtype van beide in ongeldig.

-Lezen

gnasher729

Opgeschort
25 november 2005
  • 20 sep 2009
Hoe zou je een functie-prototype schrijven voor de functie 'produceren'?
En hoe zou je een aanroep schrijven naar de functie 'produceren'?

En binnen je 'hoofd'-functie, welke van de twee heb je geschreven, een functie-prototype of een functie-aanroep?

iBookG4user

originele poster
27 juni 2006
Seattle, WA
  • 20 sep 2009
lee1210 zei: Een paar dingen: je array moet van het type int[] zijn, niet double[]. U moet een int-array accepteren om te produceren en af ​​te drukken. U moet een int[] in main declareren, doorgeven om te produceren, het daar invullen en vervolgens doorgeven om af te drukken. De<< operator of ofstream does not deal with arrays as you'd hope, so you'll need to loop to display in print.

Ook, en ik weet zeker dat het een eerlijke fout is, ik weet zeker dat je professor bedoelde pseudo- willekeurig.

In het algemeen declareert u ook nieuwe double()s, en roept u geen produceren en afdrukken op. Neem de dubbele daar weg, en geef een argument door zoals hierboven besproken, en verander het retourtype van beide in ongeldig.

-Lezen

Ok, ik heb de wijzigingen aangebracht die je hebt voorgesteld en de code ziet er logischer uit. Hoewel ik nu drie fouten in de for-lussen krijg.

Code: |_+_|

Bijlagen

  • Schermopname 20-09-2009 om 17.42.31 PM.png Screenshot 20-09-2009 om 17.42.31 PM.png'file-meta'> 178,1 KB · Bekeken: 1.941

lee1210

10 januari 2005
Dallas, Texas
  • 20 sep 2009
Wijzig het argumenttype van produceren in int[] of int *. Op dit moment is het gewoon int, dus je kunt [] niet gebruiken, enz. Hetzelfde geldt voor printen. Ook hoeft u niets van de productie of bedrukking terug te sturen. Wijzig hun retourtype in ongeldig.

Ik denk dat het de bedoeling is dat je print terug belt, wat goed zou moeten zijn.

Als u array doorgeeft om te produceren, gebruikt u ook array en niet *array.

-Lezen

iBookG4user

originele poster
27 juni 2006
Seattle, WA
  • 20 sep 2009
lee1210 zei: Verander het argumenttype van produceren in int[] of int *. Op dit moment is het gewoon int, dus je kunt [] niet gebruiken, enz. Hetzelfde geldt voor printen. Ook hoeft u niets van de productie of bedrukking terug te sturen. Wijzig hun retourtype in ongeldig.

Ik denk dat het de bedoeling is dat je print terug belt, wat goed zou moeten zijn.

Als u array doorgeeft om te produceren, gebruikt u ook array en niet *array.

-Lezen

Het werkte
Weet je wat hij bedoelde met het schrijven van de code om de functies te testen? Wat bedoelt hij daarmee? En heel erg bedankt voor je hulp tot nu toe!

Code: |_+_|

chown33

Moderator
Medewerker
9 augustus 2009
het bodemloze vlak
  • 20 sep 2009
iBookG4user zei: Weet je wat hij bedoelde met het schrijven van de code om de functies te testen? Wat bedoelt hij daarmee?

Volgens de specificatie moeten de getallen in de array tussen 1 en 10 liggen. Je zou een test kunnen schrijven die dat bevestigt.

Het zei ook dat de cijfers willekeurig moeten zijn. Hoewel willekeur moeilijker te testen kan zijn dan het lijkt, kan eenvoudige niet-willekeurigheid gemakkelijk te testen zijn. De eenvoudigste is om te bevestigen dat niet alle getallen dezelfde waarde hebben. Meer complexe tests van willekeur maken gebruik van statistische analyses.

Een andere test die u kunt schrijven, is om te bevestigen dat de functie produce() elke keer dat deze wordt aangeroepen, verschillende waarden retourneert. Dit is een eenvoudige vorm van statistische analyse, d.w.z. ervoor zorgen dat opeenvolgende aanroepen onafhankelijke resultaten hebben.

U moet ook overwegen de array te initialiseren met bekende ongeldige waarden, zoals -1 of 0, voordat u produce() aanroept. Anders kan een niet-geïnitialiseerde lokale array al onvoorspelbare waarden bevatten, die een test als willekeurig zou kunnen interpreteren, zelfs als produce() helemaal niets doet.

Als specificatie is de werkbeschrijving enigszins vaag. Om te beginnen specificeert het niet welke tests het moet doorstaan. Geloof me, als je het aan de meeste programmeurs overlaat om de kwalificatietests te kiezen, is dat een grote vergissing. De code zou in slechts één geval kunnen werken, wat het geval was dat de programmeur gebruikte om de code te ontwikkelen. Als dat gek lijkt, kan ik je verzekeren dat het is gebeurd.

iBookG4user

originele poster
27 juni 2006
Seattle, WA
  • 20 sep 2009
Dat was eenvoudig genoeg, bedankt!
Dit werkte een traktatie:
Code: |_+_| S

Schuurmachine

tot
24 april 2008
  • 21 sep 2009
iBookG4user zei: Dat was eenvoudig genoeg, bedankt!
Dit werkte een traktatie:

Probeer een 'ongeldig' getal in je array te zetten (zeg 11) en kijk of deze functie dat detecteert.

iBookG4user

originele poster
27 juni 2006
Seattle, WA
  • 21 sep 2009
Sander zei: Probeer een 'ongeldig' getal in je array te zetten (zeg 11) en kijk of deze functie dat detecteert.

Ik heb de array tijdelijk ingesteld om getallen groter dan 10 toe te staan ​​en het heeft het gedetecteerd, bedankt S

Schuurmachine

tot
24 april 2008
  • 22 sep 2009
iBookG4user zei: ik heb de array tijdelijk ingesteld om getallen groter dan 10 toe te staan ​​en hij heeft het gedetecteerd, bedankt

Zelfs als het niet het eerste element in de array is..?

De reden dat ik het vraag is omdat je print()-functie (tenminste de laatste versie die in deze thread wordt getoond) alleen het eerste element van de array retourneert (geconverteerd naar een dubbele).