על struct ו- rand() ...

arik23m

New member
על struct ו- rand() ...

שלום לכולם, נתון לי מבנה שנקרא סטודנט ולו כמה שדות - גיל, מין, שם. כיצד אני ממלא את השדות באופן רנדומלי.. מצ"ב המבנה של סטודנט.. נא עזרתכם המהירה..
typedef struct STUDENT{ char name[5]; int age; char sex; };​
אציין שבשם יכול להיות אף תו בודד כשם ומין יכול לקבל 'ז' או 'נ' וכמובן גיל צריך להיות הגיוני. השאלה היא ביסודה השימוש בפונקציה rand() תודה למסייעים!
 

Metheny

Member
אולי....

מה דעתך על משהו כזה:
#DEFINE MIN_STUDENT_AGE 18 #DEFINE MAX_STUDENT_AGE 30 sex= (char)('ז' + rand()%2 * ('ז' - 'נ')); age= ( rand()% (MAX_STUDENT_AGE-MIN_STUDENT_AGE+1)) +MIN_STUDENT_AGE;​
 

זהיר

New member
תקבל זנזנזנזנזנ וזה לא אקראי

למה כל הזמן חוזרים על אותו הדבר: מתעלמים ממקורות ידע מוכחים. לך ל C PROGRAMMING FAQS http://www.eskimo.com/~scs/C-faq/top.html ותחפש (מובטח שתמצא) (כבר לפחות פעמיים הפניתי לכאן ואחת הפעמים היתה בקשר למספרים אקראיים). תכנתו בזהירות
 

Metheny

Member
???

לא יודע מה כתוב שם, אבל אמרתי שעדיף לנסות לבד... אולי ב-C יש עם זה בעיות, אבל פתחתי את ויז'ואל C++, והקלדתי את התוכנית הבאה:
#include <iostream.h> #include <stdlib.h> #include <time.h> void main() { srand(time(0)); for (int i=0; i< 25; i++) cout<<(char)('f' + (rand()%2) * ('m' - 'f'))<<endl; }​
מה שיצא לי זה לא fmfmfmfmfmfm, אלא רצף כן רנדומלי...
 

arik23m

New member
לגבי הגיל מקובל עליי,

לגבי המין-
sex= (char)('ז' + rand()%2 * ('ז' - 'נ'));​
למה יש כפל * ? אממ... חוצמזה, אתה בטוח שהקומפיילר יאכל את זה? ולגבי השם אני אנסה את זה ונראה איך הולך. אממ.. מחשבה שניה נראה לי שלגבי המין אני יעשה משהו פשוט יותר עם שמוש ב-ENUM. בכל אופן ממש תודה על התגובה.!
 

Metheny

Member
....

יש 2 אפשרויות: אם ב-rand יוצא 0, אז זה מחזיר את הערך האסקיי של 'ז'. אם יוצא ב-rand 1, אז זה מחזיר את הערך אסקיי של 'נ'... תבדוק (זה מוסיף לערך אסקיי של 'ז' את המספר שדרוש כדי להגיע לערך אסקיי של 'נ')
 

arik23m

New member
זה לא עובד... בבקשה תן תיקון...

הנה קטע הקוד לדוגמא תריץ בעצמך... פעם נותן 'm' שזה בסדר ופעם נותן 't' ....... בבקשה הגב בזריזות(או כל אחד אחר) כי הענין הוא קצת דחוף....
 

Metheny

Member
תיקון....

פשוט החלפת שם בין האותיות, תתקן את זה ל-
#include<stdio.h> #include<stdlib.h> void main() { int j; char sex; for(j=0; j<20;j++ ) { //entering random species femele or male sex = (char)('f' + rand()%2 * ('m' - 'f')); printf("%c",sex); } getchar(); }​
 
למעלה