Altres

Matrius C++ de Mac i números aleatoris

iBookG4user

Cartell original
27 de juny de 2006
Seattle, WA
  • set 20, 2009
Van posar els tutors de C++ en els moments més incòmodes a la meva universitat... De totes maneres, l'instructor va publicar les instruccions següents:

'Escriu una funció que omplirà una matriu amb 25 nombres aleatoris entre 1 i 10. A continuació, escriviu una funció que imprimeixi la matriu. Escriu un codi principal per provar les teves funcions. De vegades, aquest codi de prova s'anomena *controlador

No utilitzeu aquí variables globals. Passeu la matriu a la funció a través de la llista de paràmetres'

El meu codi actual no provoca cap error al depurador, però no genera la matriu. I no sé què vol dir escrivint el conductor, què se suposa que he de provar? Tots heu demostrat ser molt útils en el passat i estic segur que aquesta vegada m'ajudareu a indicar-me la direcció correcta.

Codi: |_+_|

lee1210

10 de gener de 2005


Dallas, TX
  • set 20, 2009
Algunes coses: la vostra matriu hauria de ser de tipus int[], no double[]. Heu d'acceptar una matriu int per produir i imprimir. Heu de declarar un int[] a main, passar-lo per produir, omplir-lo allà i després passar-lo per imprimir. El<< operator of ofstream does not deal with arrays as you'd hope, so you'll need to loop to display in print.

A més, i estic segur que és un error honest, estic segur que el teu professor volia dir pseudo- aleatòria.

A més, principalment, esteu declarant nous double()s, no invocant produir i imprimir. Traieu-hi el doble i introduïu un argument com s'ha comentat anteriorment i canvieu el tipus de retorn d'ambdós a nul.

-Llegeix

gnasher729

Suspès
25 de novembre de 2005
  • set 20, 2009
Com escriuries un prototip de funció per a la funció 'produir'?
I com escriuries una trucada a la funció 'produce'?

I dins de la vostra funció 'principal', quina de les dues heu escrit, un prototip de funció o una trucada de funció?

iBookG4user

Cartell original
27 de juny de 2006
Seattle, WA
  • set 20, 2009
lee1210 va dir: Algunes coses: la vostra matriu hauria de ser de tipus int[], no double[]. Heu d'acceptar una matriu int per produir i imprimir. Heu de declarar un int[] a main, passar-lo per produir, omplir-lo allà i després passar-lo per imprimir. El<< operator of ofstream does not deal with arrays as you'd hope, so you'll need to loop to display in print.

A més, i estic segur que és un error honest, estic segur que el teu professor volia dir pseudo- aleatòria.

A més, principalment, esteu declarant nous double()s, no invocant produir i imprimir. Traieu-hi el doble i introduïu un argument com s'ha comentat anteriorment i canvieu el tipus de retorn d'ambdós a nul.

-Llegeix

D'acord, he fet els canvis que heu suggerit i el codi sembla més lògic. Tot i que ara tinc tres errors als bucles for.

Codi: |_+_|

Adjunts

  • Captura de pantalla 2009-09-20 a les 17.42.31.png Captura de pantalla 2009-09-20 a les 17.42.31.png'file-meta'> 178,1 KB · Visualitzacions: 1.941

lee1210

10 de gener de 2005
Dallas, TX
  • set 20, 2009
Canvieu el tipus d'argument de produir a int[] o int *. Ara mateix és només int, de manera que no podeu utilitzar [], etc. El mateix passa amb la impressió. A més, no cal que retorneu res del producte o la impressió. Canvieu el tipus de devolució a nul.

Crec que la intenció és que torneu a trucar a print al principal, que hauria d'estar bé.

A més, quan passeu array per produir, només feu servir array no *array.

-Llegeix

iBookG4user

Cartell original
27 de juny de 2006
Seattle, WA
  • set 20, 2009
lee1210 va dir: Canvia el tipus d'argument de produir a int[] o int *. Ara mateix és només int, de manera que no podeu utilitzar [], etc. El mateix passa amb la impressió. A més, no cal que retorneu res del producte o la impressió. Canvieu el tipus de devolució a nul.

Crec que la intenció és que torneu a trucar a print al principal, que hauria d'estar bé.

A més, quan passeu array per produir, només feu servir array no *array.

-Llegeix

Ha funcionat
Ara, saps què volia dir amb escriure el codi per provar les funcions? Què vol dir amb això? I moltes gràcies per la vostra ajuda fins ara!

Codi: |_+_|

chown33

Moderador
Membre del personal
9 d'agost de 2009
el pla abismal
  • set 20, 2009
iBookG4user va dir: Ara, saps què volia dir amb escriure el codi per provar les funcions? Què vol dir amb això?

L'especificació deia que els números de la matriu haurien d'estar entre 1 i 10. Podeu escriure una prova que ho confirmi.

També va dir que els números haurien de ser aleatoris. Tot i que l'aleatorietat pot ser més difícil de provar del que sembla, la no aleatorietat simple pot ser fàcil de provar. El més senzill és confirmar que tots els números no tenen el mateix valor. Les proves més complexes d'aleatorietat utilitzen anàlisis estadístiques.

Una altra prova que podeu escriure és confirmar que la funció produce() retorna valors diferents cada vegada que es crida. Aquesta és una forma senzilla d'anàlisi estadística, és a dir, assegurant que les invocacions consecutives tinguin resultats independents.

També hauríeu de considerar inicialitzar la matriu amb valors no vàlids coneguts, com ara -1 o 0, abans de cridar a produce(). En cas contrari, una matriu local no inicialitzada ja pot contenir valors impredictibles, que una prova podria interpretar com a aleatori fins i tot si produce() no fa res.

Com a especificació, la declaració de treball és una mica vaga. D'una banda, no especifica quines proves ha de superar. Creieu-me, si deixeu que la majoria dels programadors triin les proves de qualificació, és un gran error. El codi podria funcionar només en un cas, que va ser el cas que el programador va utilitzar per desenvolupar el codi. Si això sembla una bogeria, us puc assegurar que ha passat.

iBookG4user

Cartell original
27 de juny de 2006
Seattle, WA
  • set 20, 2009
Va ser prou senzill, gràcies!
Això va funcionar un plaer:
Codi: |_+_| S

Sander

a
24 d'abril de 2008
  • set 21, 2009
iBookG4user va dir: Això va ser prou senzill, gràcies!
Això va funcionar un plaer:

Intenteu posar un número 'no vàlid' a la vostra matriu (per exemple, 11) i comproveu si aquesta funció ho detecta.

iBookG4user

Cartell original
27 de juny de 2006
Seattle, WA
  • set 21, 2009
Sander va dir: Intenteu posar un número 'no vàlid' a la vostra matriu (per exemple, 11) i comproveu si aquesta funció ho detecta.

Vaig configurar temporalment la matriu per permetre números superiors a 10 i ho va detectar, gràcies S

Sander

a
24 d'abril de 2008
  • set 22, 2009
iBookG4user va dir: Vaig configurar temporalment la matriu per permetre números superiors a 10 i ho va detectar, gràcies

Encara que no sigui el primer element de la matriu..?

El motiu pel qual us pregunto és perquè la vostra funció print() (almenys l'última versió que es mostra en aquest fil) només retorna el primer element de la matriu (convertit en un doble).