Inne

Mac C++ tablice i liczby losowe

Użytkownik iBooka G4

Oryginalny plakat
27 czerwca 2006 r.
Seattle, stan Waszyngton
  • 20 września 2009 r.
Umieszczają korepetytorów C++ w najbardziej niewygodnych momentach na mojej uczelni... W każdym razie, instruktor opublikował następujące wskazówki:

'Napisz funkcję, która wypełni tablicę 25 losowymi liczbami od 1 do 10. Następnie napisz funkcję, która wyświetli tablicę. Napisz trochę kodu w main, aby przetestować swoje funkcje. Czasami ten kod testowy nazywa się *sterownikiem

Nie używaj tutaj zmiennych globalnych. Przekaż tablicę do funkcji poprzez listę parametrów'

Mój obecny kod nie powoduje żadnych błędów w debuggerze, ale nie wyświetla tablicy. I nie wiem co ma na myśli pisząc sterownik, co mam przetestować? Wszyscy okazaliście się niezmiernie pomocni w przeszłości i jestem pewien, że tym razem pomożecie mi we właściwym kierunku

Kod: |__+_|

lee1210

10 stycznia 2005 r.


Dallas, Teksas
  • 20 września 2009 r.
Kilka rzeczy: Twoja tablica powinna być typu int[], a nie double[]. Aby wyprodukować i wydrukować, musisz zaakceptować tablicę int. Musisz zadeklarować int[] w main, przekazać go do produkcji, wypełnić tam, a następnie przekazać do wydruku. ten<< operator of ofstream does not deal with arrays as you'd hope, so you'll need to loop to display in print.

Poza tym, jestem pewien, że to uczciwa pomyłka, jestem pewien, że twój profesor miał na myśli rzekomy- losowy.

Ponadto w main deklarujesz nowe double(), a nie wywołujesz produce i print. Odrzuć tam podwójny i przekaż argument, jak omówiono powyżej, i zmień typ zwracany obu z nich na void.

-Czytać

zgrzytacz729

Zawieszony
25 listopada 2005
  • 20 września 2009 r.
Jak napisałbyś prototyp funkcji dla funkcji „produkcja”?
A jak napisałbyś wywołanie funkcji 'produce'?

A wewnątrz funkcji „głównej”, który z nich napisałeś, prototyp funkcji czy wywołanie funkcji?

Użytkownik iBooka G4

Oryginalny plakat
27 czerwca 2006 r.
Seattle, stan Waszyngton
  • 20 września 2009 r.
lee1210 powiedział: Kilka rzeczy: Twoja tablica powinna być typu int[], a nie double[]. Aby wyprodukować i wydrukować, musisz zaakceptować tablicę int. Musisz zadeklarować int[] w main, przekazać go do produkcji, wypełnić tam, a następnie przekazać do wydruku. ten<< operator of ofstream does not deal with arrays as you'd hope, so you'll need to loop to display in print.

Poza tym, jestem pewien, że to uczciwa pomyłka, jestem pewien, że twój profesor miał na myśli rzekomy- losowy.

Ponadto w main deklarujesz nowe double(), a nie wywołujesz produce i print. Odrzuć tam podwójny i przekaż argument, jak omówiono powyżej, i zmień typ zwracany obu z nich na void.

-Czytać

OK, wprowadziłem zmiany, które sugerowałeś, a kod wygląda bardziej logicznie. Chociaż teraz otrzymuję trzy błędy w pętlach for.

Kod: |__+_|

Załączniki

  • Zrzut ekranu 20.09.2009 o godzinie 5.42.31.png Zrzut ekranu 20.09.2009 o godzinie 17:42.31.png'file-meta'> 178,1 KB · Wyświetleń: 1941

lee1210

10 stycznia 2005 r.
Dallas, Teksas
  • 20 września 2009 r.
Zmień typ argumentu produce na int[] lub int *. W tej chwili jest to tylko int, więc nie możesz użyć [] itp. To samo dotyczy drukowania. Ponadto nie musisz zwracać niczego z produkcji lub druku. Zmień typ zwrotu na void.

Myślę, że masz zamiar wywołać print z powrotem w main, co powinno być w porządku.

Ponadto, gdy przekazujesz tablicę do produkcji, po prostu używaj tablicy, a nie *array.

-Czytać

Użytkownik iBooka G4

Oryginalny plakat
27 czerwca 2006 r.
Seattle, stan Waszyngton
  • 20 września 2009 r.
lee1210 powiedział: Zmień typ argumentu produkcji na int[] lub int *. W tej chwili jest to tylko int, więc nie możesz użyć [] itp. To samo dotyczy drukowania. Ponadto nie musisz zwracać niczego z produkcji lub druku. Zmień typ zwrotu na void.

Myślę, że masz zamiar wywołać print z powrotem w main, co powinno być w porządku.

Ponadto, gdy przekazujesz tablicę do produkcji, po prostu używaj tablicy, a nie *array.

-Czytać

Zadziałało
Czy wiesz, co miał na myśli, pisząc kod do testowania funkcji? Co on przez to rozumie? I bardzo dziękuję za dotychczasową pomoc!

Kod: |__+_|

chown33

Moderator
Pracownik
9 sierpnia 2009
Płaszczyzna Otchłani
  • 20 września 2009 r.
iBookG4user powiedział: Czy wiesz, co miał na myśli, pisząc kod do testowania funkcji? Co on przez to rozumie?

Specyfikacja mówi, że liczby w tablicy powinny wynosić od 1 do 10. Możesz napisać test, który to potwierdza.

Powiedział również, że liczby powinny być losowe. Chociaż losowość może być trudniejsza do przetestowania, niż się wydaje, prosta nielosowość może być łatwa do przetestowania. Najprościej jest potwierdzić, że wszystkie liczby mają różne wartości. Bardziej złożone testy losowości wykorzystują analizy statystyczne.

Innym testem, który możesz napisać, jest sprawdzenie, czy funkcja produce() zwraca różne wartości przy każdym wywołaniu. Jest to prosta forma analizy statystycznej, czyli upewnienia się, że kolejne wywołania mają niezależne wyniki.

Należy również rozważyć zainicjowanie tablicy ze znanymi nieprawidłowymi wartościami, takimi jak -1 lub 0, przed wywołaniem metody produce(). W przeciwnym razie niezainicjowana tablica lokalna może już zawierać nieprzewidywalne wartości, które test może zinterpretować jako losowe, nawet jeśli produce() nic nie robi.

Jako specyfikacja, zestawienie pracy jest nieco niejasne. Po pierwsze, nie określa, jakie testy musi przejść. Uwierz mi, jeśli pozostawisz większości programistów wybór testów kwalifikacyjnych, to duży błąd. Kod mógł działać tylko w jednym przypadku, w przypadku którego programista wykorzystał do tworzenia kodu. Jeśli to wydaje się szalone, zapewniam cię, że tak się stało.

Użytkownik iBooka G4

Oryginalny plakat
27 czerwca 2006 r.
Seattle, stan Waszyngton
  • 20 września 2009 r.
To było dość proste, dzięki!
To działało na smakołyk:
Kod: |__+_| S

Sander

do
24 kwietnia 2008
  • 21 września 2009 r.
iBookG4user powiedział: Dzięki!
To działało na smakołyk:

Spróbuj umieścić „nieprawidłową” liczbę w swojej tablicy (powiedzmy 11) i sprawdź, czy ta funkcja to wykryje.

Użytkownik iBooka G4

Oryginalny plakat
27 czerwca 2006 r.
Seattle, stan Waszyngton
  • 21 września 2009 r.
Sander powiedział: Spróbuj umieścić „nieprawidłową” liczbę w swojej tablicy (powiedzmy 11) i sprawdź, czy ta funkcja to wykryje.

Tymczasowo ustawiłem tablicę, aby zezwalała na liczby większe niż 10 i to wykryło, dzięki S

Sander

do
24 kwietnia 2008
  • 22 września 2009
iBookG4user powiedział: tymczasowo ustawiłem tablicę tak, aby pozwalała na liczby większe niż 10 i wykrył to, dzięki

Nawet jeśli nie jest to pierwszy element tablicy...?

Powodem, dla którego pytam, jest to, że twoja funkcja print() (przynajmniej ostatnia wersja pokazana w tym wątku) zwraca tylko pierwszy element tablicy (przekonwertowany na double).