Друго

Mac C++ масиви и произволни числа

iBookG4user

Оригинален плакат
27 юни 2006 г
Сиатъл, Вашингтон
  • 20 септември 2009 г
Те поставят преподавателите по C++ в най-неудобните моменти в моя колеж... Както и да е, инструкторът публикува следните указания:

„Напишете функция, която ще запълни масив с 25 произволни числа между 1 и 10. След това напишете функция, която ще разпечата масива. Напишете някакъв код в main, за да тествате функциите си. Понякога този тестов код се нарича *драйвер

Не използвайте глобални променливи тук. Предайте масива на функцията през списъка с параметри'

Моят текущ код не води до никакви грешки в дебъгера, но не извежда масива. И аз не знам какво има предвид като пише драйвера, какво трябва да тествам? Всички вие се оказахте изключително полезни в миналото и съм сигурен, че ще помогнете да ме насочите в правилната посока този път

Код: |_+_|

lee1210

10 януари 2005 г


Далас, Тексас
  • 20 септември 2009 г
Няколко неща: Вашият масив трябва да е от тип int[], а не double[]. Трябва да приемете int масив, за да създадете и отпечатате. Трябва да декларирате int[] в main, да го предадете за производство, да го попълните там, след това да го предадете за печат. В<< operator of ofstream does not deal with arrays as you'd hope, so you'll need to loop to display in print.

Освен това, и съм сигурен, че това е честна грешка, сигурен съм, че вашият професор е имал предвид псевдо- произволен.

Освен това, по принцип, вие декларирате нови double()s, а не извиквате production и print. Отстранете двойника там и предайте аргумент, както беше обсъдено по-горе, и променете типа на връщане и на двете на void.

-Прочети

gnasher729

Суспендиран
25 ноември 2005 г
  • 20 септември 2009 г
Как бихте написали прототип на функция за функцията 'produce'?
И как бихте написали извикване на функцията 'produce'?

И вътре във вашата 'главна' функция, коя от двете сте написали, прототип на функция или извикване на функция?

iBookG4user

Оригинален плакат
27 юни 2006 г
Сиатъл, Вашингтон
  • 20 септември 2009 г
lee1210 каза: Няколко неща: Вашият масив трябва да е от тип int[], а не double[]. Трябва да приемете int масив, за да създадете и отпечатате. Трябва да декларирате int[] в main, да го предадете за производство, да го попълните там, след това да го предадете за печат. В<< operator of ofstream does not deal with arrays as you'd hope, so you'll need to loop to display in print.

Освен това, и съм сигурен, че това е честна грешка, сигурен съм, че вашият професор е имал предвид псевдо- произволен.

Освен това, по принцип, вие декларирате нови double()s, а не извиквате production и print. Отстранете двойника там и предайте аргумент, както беше обсъдено по-горе, и променете типа на връщане и на двете на void.

-Прочети

Добре, направих промените, които предложихте и кодът изглежда по-логичен. Въпреки че сега получавам три грешки в циклите for.

Код: |_+_|

Прикачени файлове

  • Екранна снимка 2009-09-20 в 5.42.31 PM.png Екранна снимка 2009-09-20 в 5.42.31 PM.png'file-meta'> 178.1 KB · Преглеждания: 1,941

lee1210

10 януари 2005 г
Далас, Тексас
  • 20 септември 2009 г
Променете типа на аргумента product на int[] или int *. В момента това е просто int, така че не можете да използвате [] и т.н. Същото важи и за печат. Освен това не е необходимо да връщате нищо от продукция или печат. Променете техния тип връщане на void.

Мисля, че намерението е да извикате print обратно в main, което би трябвало да е добре.

Също така, когато предавате масив за производство, просто използвайте масив, а не * масив.

-Прочети

iBookG4user

Оригинален плакат
27 юни 2006 г
Сиатъл, Вашингтон
  • 20 септември 2009 г
lee1210 каза: Променете типа аргумент на product на int[] или int *. В момента това е просто int, така че не можете да използвате [] и т.н. Същото важи и за печат. Освен това не е необходимо да връщате нищо от продукция или печат. Променете техния тип връщане на void.

Мисля, че намерението е да извикате print обратно в main, което би трябвало да е добре.

Също така, когато предавате масив за производство, просто използвайте масив, а не * масив.

-Прочети

Проработи
Сега, знаете ли какво имаше предвид, като написа кода за тестване на функциите? Какво има предвид с това? И благодаря много за помощта до момента!

Код: |_+_|

chown33

Модератор
Член на персонала
9 август 2009 г
Бездната равнина
  • 20 септември 2009 г
iBookG4user каза: Сега, знаете ли какво е имал предвид с писането на кода за тестване на функциите? Какво има предвид с това?

Спецификацията казва, че числата в масива трябва да са между 1 и 10. Можете да напишете тест, който потвърждава това.

Освен това се казва, че числата трябва да са произволни. Докато случайността може да бъде по-трудна за тестване, отколкото изглежда, простата неслучайност може да бъде лесна за тестване. Най-простото е да се потвърди, че всички числа не са с една и съща стойност. По-сложните тестове за случайност използват статистически анализи.

Друг тест, който можете да напишете, е да потвърдите, че функцията product() връща различни стойности всеки път, когато бъде извикана. Това е проста форма на статистически анализ, т.е. гарантиране, че последователните извиквания имат независими резултати.

Трябва също да помислите за инициализиране на масива с известни невалидни стойности, като -1 или 0, преди да извикате production(). В противен случай един неинициализиран локален масив може вече да съдържа непредвидими стойности, които тестът може да интерпретира като произволни, дори ако production() не прави нищо.

Като спецификация, описанието на работата е малко неясно. От една страна, не уточнява какви тестове трябва да премине. Повярвайте ми, ако оставите на повечето програмисти да избират квалификационните тестове, това е голяма грешка. Кодът може да работи само в един случай, какъвто беше случаят, използван от програмиста, за да разработи кода. Ако това изглежда лудо, мога да ви уверя, че се е случило.

iBookG4user

Оригинален плакат
27 юни 2006 г
Сиатъл, Вашингтон
  • 20 септември 2009 г
Това беше достатъчно просто, благодаря!
Това свърши работа:
Код: |_+_| С

Сандър

да се
24 април 2008 г
  • 21 септември 2009 г
iBookG4user каза: Това беше достатъчно просто, благодаря!
Това свърши работа:

Опитайте се да поставите 'невалидно' число във вашия масив (да речем, 11) и вижте дали тази функция го открива.

iBookG4user

Оригинален плакат
27 юни 2006 г
Сиатъл, Вашингтон
  • 21 септември 2009 г
Сандър каза: Опитайте се да поставите „невалидно“ число във вашия масив (да речем, 11) и вижте дали тази функция го открива.

Временно настроих масива да позволява числа по-големи от 10 и той го откри, благодаря С

Сандър

да се
24 април 2008 г
  • 22 септември 2009 г
iBookG4user каза: Временно настроих масива да позволява числа по-големи от 10 и го откри, благодаря

Дори и да не е първият елемент в масива..?

Причината да питам е, че вашата функция print() (поне последната версия, показана в тази тема) връща само първия елемент от масива (преобразуван в двоен).