Alte

Mac C++ matrice și numere aleatoare

iBookG4user

Poster original
27 iunie 2006
Seattle, WA
  • 20 septembrie 2009
Ei pun tutorii pentru C++ în momentele cele mai incomode la facultatea mea... Oricum, instructorul a postat următoarele instrucțiuni:

„Scrieți o funcție care va umple o matrice cu 25 de numere aleatorii între 1 și 10. Apoi scrieți o funcție care va tipări matricea. Scrieți un cod în principal pentru a vă testa funcțiile. Uneori, acest cod de testare se numește *driver

Nu utilizați aici variabile globale. Treceți matricea la funcție prin lista de parametri'

Codul meu actual nu are ca rezultat erori în depanator, dar nu emite matricea. Și nu știu ce vrea să spună scriind șoferului, ce ar trebui să testez? Toți v-ați dovedit a fi extrem de de ajutor în trecut și sunt sigur că mă veți ajuta să mă îndrept în direcția corectă de data aceasta

Cod: |_+_|

lee1210

10 ianuarie 2005


Dallas, TX
  • 20 septembrie 2009
Câteva lucruri: matricea dvs. ar trebui să fie de tip int[], nu double[]. Trebuie să acceptați o matrice int pentru a produce și a imprima. Trebuie să declarați un int[] în main, să îl transmiteți pentru a produce, să îl completați acolo, apoi să îl transmiteți pentru a imprima. The<< operator of ofstream does not deal with arrays as you'd hope, so you'll need to loop to display in print.

De asemenea, și sunt sigur că este o greșeală sinceră, sunt sigur că a vrut să spună profesorul tău pseudo- Aleatoriu.

De asemenea, în principal, declarați noi double()-uri, nu invocând produce și print. Luați dublu acolo și transmiteți un argument așa cum sa discutat mai sus și schimbați tipul de returnare al ambelor în void.

-Citit

gnasher729

Suspendat
25 noiembrie 2005
  • 20 septembrie 2009
Cum ați scrie un prototip de funcție pentru funcția „produce”?
Și cum ați scrie un apel la funcția „produce”?

Și în interiorul funcției dvs. „principale”, pe care dintre cele două ați scris, un prototip de funcție sau un apel de funcție?

iBookG4user

Poster original
27 iunie 2006
Seattle, WA
  • 20 septembrie 2009
lee1210 a spus: Câteva lucruri: matricea dvs. ar trebui să fie de tip int[], nu double[]. Trebuie să acceptați o matrice int pentru a produce și a imprima. Trebuie să declarați un int[] în main, să îl transmiteți pentru a produce, să îl completați acolo, apoi să îl transmiteți pentru a imprima. The<< operator of ofstream does not deal with arrays as you'd hope, so you'll need to loop to display in print.

De asemenea, și sunt sigur că este o greșeală sinceră, sunt sigur că a vrut să spună profesorul tău pseudo- Aleatoriu.

De asemenea, în principal, declarați noi double()-uri, nu invocând produce și print. Luați dublu acolo și transmiteți un argument așa cum sa discutat mai sus și schimbați tipul de returnare al ambelor în void.

-Citit

Ok, am făcut modificările pe care le-ați sugerat și codul pare mai logic. Deși acum primesc trei erori în buclele for.

Cod: |_+_|

Atasamente

  • Captură de ecran 2009-09-20 la 5.42.31 PM.png Captură de ecran 2009-09-20 la 5.42.31 PM.png'file-meta'> 178,1 KB · Vizualizări: 1.941

lee1210

10 ianuarie 2005
Dallas, TX
  • 20 septembrie 2009
Schimbați tipul de argument al produce la int[] sau int *. Momentan este doar int, deci nu poți folosi [], etc. Același lucru este valabil și pentru print. De asemenea, nu trebuie să returnați nimic din produse sau din imprimare. Schimbați-le tipul de returnare în void.

Cred că intenția este ca tu să apelezi tipărirea înapoi în principal, ceea ce ar trebui să fie bine.

De asemenea, când treceți array pentru a produce, utilizați pur și simplu array nu *array.

-Citit

iBookG4user

Poster original
27 iunie 2006
Seattle, WA
  • 20 septembrie 2009
lee1210 a spus: Schimbați tipul de argument produs la int[] sau int *. Momentan este doar int, deci nu poți folosi [], etc. Același lucru este valabil și pentru print. De asemenea, nu trebuie să returnați nimic din produse sau din imprimare. Schimbați-le tipul de returnare în void.

Cred că intenția este ca tu să apelezi tipărirea înapoi în principal, ceea ce ar trebui să fie bine.

De asemenea, când treceți array pentru a produce, utilizați pur și simplu array nu *array.

-Citit

A mers
Acum, știi ce a vrut să spună scriind codul pentru a testa funcțiile? Ce vrea să spună prin asta? Și mulțumesc mult pentru ajutorul tău până acum!

Cod: |_+_|

chown33

Moderator
Membru al personalului
9 august 2009
planul abisal
  • 20 septembrie 2009
iBookG4user a spus: Acum, știi ce a vrut să spună scriind codul pentru a testa funcțiile? Ce vrea să spună prin asta?

Specificația spunea că numerele din matrice ar trebui să fie între 1 și 10. Ați putea scrie un test care să confirme asta.

De asemenea, a spus că numerele ar trebui să fie aleatorii. În timp ce aleatorietatea poate fi mai greu de testat decât pare, simpla non-aleatorie poate fi ușor de testat. Cel mai simplu este să confirmi că toate numerele nu au aceeași valoare. Testele mai complexe ale aleatoriei folosesc analize statistice.

Un alt test pe care îl puteți scrie este să confirmați că funcția produce() returnează valori diferite de fiecare dată când este apelată. Aceasta este o formă simplă de analiză statistică, adică se asigură că invocările consecutive au rezultate independente.

De asemenea, ar trebui să luați în considerare inițializarea matricei cu valori cunoscute nevalide, cum ar fi -1 sau 0, înainte de a apela produce(). În caz contrar, o matrice locală neinițializată poate conține deja valori imprevizibile, pe care un test le-ar putea interpreta ca aleatoare chiar dacă produce() nu face nimic.

Ca o specificație, declarația de lucru este oarecum vagă. În primul rând, nu specifică ce teste trebuie să treacă. Crede-mă, dacă lași pe seama majorității programatorilor să aleagă testele de calificare, este o mare greșeală. Codul ar putea funcționa într-un singur caz, care a fost cazul pe care programatorul l-a folosit pentru a dezvolta codul. Dacă pare o nebunie, vă pot asigura că s-a întâmplat.

iBookG4user

Poster original
27 iunie 2006
Seattle, WA
  • 20 septembrie 2009
A fost destul de simplu, mulțumesc!
Aceasta a funcționat un răsfăț:
Cod: |_+_| S

Sander

la
24 aprilie 2008
  • 21 septembrie 2009
iBookG4user a spus: A fost destul de simplu, mulțumesc!
Aceasta a funcționat un răsfăț:

Încercați să puneți un număr „nevalid” în matrice (de exemplu, 11) și vedeți dacă această funcție detectează asta.

iBookG4user

Poster original
27 iunie 2006
Seattle, WA
  • 21 septembrie 2009
Sander a spus: Încercați să puneți un număr „nevalid” în matrice (să zicem, 11) și vedeți dacă această funcție detectează asta.

Am setat temporar matricea să permită numere mai mari de 10 și a detectat-o, mulțumesc S

Sander

la
24 aprilie 2008
  • 22 septembrie 2009
iBookG4user a spus: Am setat temporar matricea pentru a permite numere mai mari de 10 și a detectat-o, mulțumesc

Chiar dacă nu este primul element din matrice..?

Motivul pentru care întreb este că funcția ta print() (cel puțin ultima versiune afișată în acest fir) returnează doar primul element al matricei (convertit într-un dublu).