Başka

Mac C++ dizileri ve rastgele sayılar

iBookG4kullanıcısı

Orijinal afiş
27 Haz 2006
Seattle, WA
  • 20 Eylül 2009
Üniversitemde en uygunsuz zamanlarda C++ hocalarını görevlendiriyorlar... Her neyse, eğitmen şu talimatları verdi:

'Bir diziyi 1 ile 10 arasında rastgele 25 sayı ile dolduracak bir fonksiyon yazın. Ardından diziyi yazdıracak bir fonksiyon yazın. İşlevlerinizi test etmek için ana koda bir kod yazın. Bazen bu test koduna *sürücü adı verilir.

Burada global değişkenler kullanmayın. Diziyi parametre listesi aracılığıyla işleve iletin'

Geçerli kodum, hata ayıklayıcıda herhangi bir hataya neden olmuyor, ancak dizinin çıktısını almıyor. Ve sürücüyü yazarak ne demek istediğini bilmiyorum, neyi test etmem gerekiyor? Hepiniz geçmişte fazlasıyla yardımcı olduğunuzu kanıtladınız ve eminim bu sefer beni doğru yöne yönlendirmeye yardım edeceksiniz.

Kod: |_+_|

Lee1210

10 Oca 2005


Dallas, Teksas
  • 20 Eylül 2009
Birkaç şey: Diziniz double[] değil int[] türünde olmalıdır. Üretmek ve yazdırmak için bir int dizisini kabul etmeniz gerekir. Main'de bir int[] tanımlamanız, üretime geçirmeniz, orada doldurmanız ve ardından yazdırmaya iletmeniz gerekir. NS<< operator of ofstream does not deal with arrays as you'd hope, so you'll need to loop to display in print.

Ayrıca, ve eminim ki bu dürüst bir hatadır, eminim profesörünüz şunu demek istemiştir. sözde rastgele.

Ayrıca, ana olarak, üretme ve yazdırmayı çağırmadan yeni çiftler () bildiriyorsunuz. Çifti oraya götürün ve yukarıda tartışıldığı gibi bir argüman iletin ve bunların her ikisinin de dönüş türünü geçersiz olarak değiştirin.

-Okumak

gnasher729

Askıya alındı
25 Kasım 2005
  • 20 Eylül 2009
'Üretmek' işlevi için bir işlev prototipini nasıl yazarsınız?
Ve 'üretmek' işlevine nasıl bir çağrı yazarsınız?

Ve 'ana' işlevinizin içine, ikisinden hangisini yazdınız, bir işlev prototipi mi yoksa bir işlev çağrısı mı?

iBookG4kullanıcısı

Orijinal afiş
27 Haz 2006
Seattle, WA
  • 20 Eylül 2009
lee1210 şunları söyledi: Birkaç şey: Diziniz double[] değil int[] türünde olmalıdır. Üretmek ve yazdırmak için bir int dizisini kabul etmeniz gerekir. Main'de bir int[] tanımlamanız, üretime geçirmeniz, orada doldurmanız ve ardından yazdırmaya iletmeniz gerekir. NS<< operator of ofstream does not deal with arrays as you'd hope, so you'll need to loop to display in print.

Ayrıca, ve eminim ki bu dürüst bir hatadır, eminim profesörünüz şunu demek istemiştir. sözde rastgele.

Ayrıca, ana olarak, üretme ve yazdırmayı çağırmadan yeni çiftler () bildiriyorsunuz. Çifti oraya götürün ve yukarıda tartışıldığı gibi bir argüman iletin ve bunların her ikisinin de dönüş türünü geçersiz olarak değiştirin.

-Okumak

Tamam, önerdiğin değişiklikleri yaptım ve kod daha mantıklı görünüyor. Gerçi şimdi for döngülerinde üç hata alıyorum.

Kod: |_+_|

ekler

  • Ekran görüntüsü 2009-09-20 5.42.31 PM.png Ekran görüntüsü 2009-09-20 5.42.31 PM.png'file-meta'> 178.1 KB · Görüntüleme: 1.941

Lee1210

10 Oca 2005
Dallas, Teksas
  • 20 Eylül 2009
Üretmenin bağımsız değişken türünü int[] veya int * olarak değiştirin. Şu anda sadece int olduğundan [] vb. kullanamazsınız. Aynısı baskı için de geçerlidir. Ayrıca, üretimden veya baskıdan herhangi bir şey iade etmenize gerek yoktur. Dönüş türlerini void olarak değiştirin.

Bence amaç, baskıyı ana olarak geri çağırmanız, ki bu iyi olmalı.

Ayrıca, diziyi üretmek için ilettiğinizde, *array değil dizi kullanın.

-Okumak

iBookG4kullanıcısı

Orijinal afiş
27 Haz 2006
Seattle, WA
  • 20 Eylül 2009
lee1210 şunları söyledi: Üretmenin bağımsız değişken türünü int[] veya int * olarak değiştirin. Şu anda sadece int olduğundan [] vb. kullanamazsınız. Aynısı baskı için de geçerlidir. Ayrıca, üretimden veya baskıdan herhangi bir şey iade etmenize gerek yoktur. Dönüş türlerini void olarak değiştirin.

Bence amaç, baskıyı ana olarak geri çağırmanız, ki bu iyi olmalı.

Ayrıca, diziyi üretmek için ilettiğinizde, *array değil dizi kullanın.

-Okumak

İşe yaradı
Şimdi, fonksiyonları test etmek için kod yazarak ne demek istediğini biliyor musunuz? Bununla ne demek istiyor? Ve şimdiye kadarki yardımlarınız için çok teşekkürler!

Kod: |_+_|

chown33

moderatör
Personel
9 Ağu 2009
Abismal Uçak
  • 20 Eylül 2009
iBookG4user dedi ki: Şimdi, işlevleri test etmek için kodu yazarak ne demek istediğini biliyor musunuz? Bununla ne demek istiyor?

Spesifikasyon, dizideki sayıların 1 ile 10 arasında olması gerektiğini söyledi. Bunu doğrulayan bir test yazabilirsiniz.

Ayrıca sayıların rastgele olması gerektiğini söyledi. Rastgeleliği test etmek göründüğünden daha zor olsa da, rastgele olmayan basitliği test etmek kolay olabilir. En basiti, tüm sayıların aynı değerde olmadığını doğrulamaktır. Daha karmaşık rastgelelik testleri istatistiksel analizleri kullanır.

Yazabileceğiniz başka bir test, üret() işlevinin her çağrıldığında farklı değerler döndürdüğünü doğrulamaktır. Bu, istatistiksel analizin basit bir şeklidir, yani ardışık çağrıların bağımsız sonuçlara sahip olmasını sağlar.

Ayrıca, Produce()'ı çağırmadan önce diziyi -1 veya 0 gibi bilinen geçersiz değerlerle başlatmayı da düşünmelisiniz. Aksi takdirde, başlatılmamış bir yerel dizi zaten önceden tahmin edilemeyen değerler içerebilir ve bu değerler, üret() hiçbir şey yapmasa bile bir testin rastgele olarak yorumlayabilir.

Spesifikasyon olarak, çalışma ifadesi biraz belirsizdir. Birincisi, hangi testleri geçmesi gerektiğini belirtmiyor. İnanın bana, yeterlilik testlerini seçmeyi çoğu programcıya bırakırsanız, bu büyük bir hata olur. Kod yalnızca bir durumda çalışabilir; programcının kodu geliştirmek için kullandığı durum buydu. Bu çılgınca görünüyorsa, sizi temin ederim ki oldu.

iBookG4kullanıcısı

Orijinal afiş
27 Haz 2006
Seattle, WA
  • 20 Eylül 2009
Bu yeterince basitti, teşekkürler!
Bu bir tedavi çalıştı:
Kod: |_+_| S

zımpara

ile
24 Nis 2008
  • 21 Eylül 2009
iBookG4user dedi ki: Bu yeterince basitti, teşekkürler!
Bu bir tedavi çalıştı:

Dizinize 'geçersiz' bir sayı koymaya çalışın (örneğin, 11) ve bu fonksiyonun bunu algılayıp algılamadığına bakın.

iBookG4kullanıcısı

Orijinal afiş
27 Haz 2006
Seattle, WA
  • 21 Eylül 2009
Sander dedi ki: Dizinize 'geçersiz' bir sayı koymaya çalışın (örneğin, 11) ve bu fonksiyonun bunu algılayıp algılamadığına bakın.

Diziyi geçici olarak 10'dan büyük sayılara izin verecek şekilde ayarladım ve algıladı, teşekkürler S

zımpara

ile
24 Nis 2008
  • 22 Eylül 2009
iBookG4user dedi ki: Diziyi geçici olarak 10'dan büyük sayılara izin verecek şekilde ayarladım ve bunu algıladı, teşekkürler

Dizideki ilk eleman olmasa bile..?

Sormamın nedeni, print() işlevinizin (en azından bu iş parçacığında gösterilen son sürüm) dizinin yalnızca ilk öğesini (çifte dönüştürülmüş) döndürmesidir.