לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #23  
ישן 30-08-2005, 12:06
צלמית המשתמש של scripter
  scripter scripter אינו מחובר  
 
חבר מתאריך: 04.08.02
הודעות: 4,468
...
בתגובה להודעה מספר 1 שנכתבה על ידי prgrmr שמתחילה ב "חלוקת קלפים בין 2 שחקנים"

קודם כל, הקוד שהבאת הוא מאוד מבולגן, לא מתועד וכנראה שלא קראת על הbucketsort/radix sort.
בכל מקרה, שכחת גם את הבעיה העיקרית, שהיא לא חלוקת הקלפים (הריי זה החלק הקל), החלק המסובך זה לייצר חבילת קלפים בצורה אקראית.

ברגע שאתה מצליח לייצר חבילת קלפים כזאת, קל מאוד לחלק את הקלפים באיזה צורה שתרצה.
עכשיו, מכיוון שאתה משתמש בCPP, אז למה לא להשתמש בSTL וזהו? יש להם מימוש לאלגוריתם של knuth על shuffle.

אז כתבתי לך סקיצה של קוד פה, והשארתי לך פונקציה אחת שתממש אותה כתרגול.


קוד:
#include <iostream> #include <algorithm> #include <time.h> #define MAX_CARDS 52 class Deck { public: Deck() { int i; for( i=0; i<MAX_CARDS; i++ ) cards[i] = i+1; } void shuffle( void ); void print( void ); //void deal( Player , Player ); -> think about it. private: int cards[52]; }; void Deck::shuffle( void ) { std::random_shuffle( cards, cards + MAX_CARDS ); } void Deck::print( void ) { int i; for( i=0; i<MAX_CARDS; i++ ) std::cout << cards[i] << " "; } int main( void ) { Deck cards; srand( time( NULL ) ); std::cout << "using shuffle on deck" << std::endl; cards.shuffle(); cards.print(); std::cout << std::endl; return 0; }
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 14:23

הדף נוצר ב 0.08 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר