עבור לתוכן

שאלה בנוגע לתוכנית פשוטה ב C

Featured Replies

פורסם

טוב אז ככה יש לי מטלה לבנות תוכנה שתדפיס על המסך 9 ממוצעים - 3 ממוצעים של 10 מס רנדומליים, 3 ממוצעים של 100 מס רנדומליים ו3 ממוצעים של 1000

בקיצור בניתי הכל טוב ויפה רק שהתוצאה הסופית יוצאת אותו הדבר כל פעם שאני מריץ...

אז אני לא יודע אם זה הבנייה או משהו שקשור לפונקציית

rand();

אז אולי יש פה מישהו שיכול להאיר לי את הכיוון לבעיה שלי ?...תודה

הנה התוכנית


#include <stdio.h>
#include <stdlib.h>


#define R 3
#define I1 10

int main()
{
int sum[3][3];
int i,ione,itwo,c;
for(i=0;i<R;i++)
for(c=0;c<R;c++)
sum[i][c]=0;
itwo=I1;
for(c=0,i=0;c<R||i<R;c++)
{
for(ione=0;ione<itwo;ione++)
sum[i][c]+=rand();
sum[i][c]/=itwo;
if(c==R)
{
itwo*=I1;
i++;
c=0;
}}

itwo=I1;

printf("size | average1 | average2 | average3 |\n--------|-------------|-----------|------------|---\n");
for(i=0,c=0;i<R;i++)
{
printf(" %d | %d | %d | %d |\n",itwo,sum[i][c],sum[i][c+1],sum[i][c+2]);
itwo*=I1;
}
getchar();
return 0;
}

פורסם

הפונקציה הצאת בעייתי מאט.

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

ולכן הוא לא מספיק להשנות את המספר הרנדומאלי.

תנסה להוסיף את הספריה TIME ואז להוסיף פקודה שחסרה לך.

#include <time.h>
void main()
{
srand ( time(NULL) );
}

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

מקווה שעזר

פורסם
  • מחבר

תודה רבה!!

פורסם

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

טוב,זה לא בדיוק מה שאמרת. srand(time(NULL) פשוט מאתחלת את מחולל המספרים הפסאודו-אקראיים עם השעה הנוכחית (בשניות). כך סביר שתקבל כל פעם תוצאות שונות (אלא אם כן עוברת פחות משנייה בין הרצה להרצה).

בלי האתחול, המחולל פשוט מתחיל מאיזו נקודת ברירת מחדל.

פורסם

פותח הת'רד: ערוך את ההודעה שלך ועטוף את הקוד בטג קוד (כפתור # ליד הכפתור של הציטוט) כדי שיהיה קריא.

פורסם
  • מחבר

תודה רבה על ההסבר...ועוד שאלה קטנה איך אני מחולל השהייה של המסך? אני הכרתי את הפקודה

delay() בספריית dos.h אבל זה לא בידיוק הולך לי מסיבה כלשהי יש פנק אחרת אולי? או שאני טועה בספריית מקור?

פורסם

אין בשפה פונקציה מובנית שעושה sleep, כלומר זה תלוי במערכת ההפעלה והקומפיילר שאיתם אתה עובד.

אם אתה בסביבת windows אז בראש הקובץ צריך:

#include <windows.h>

ואז אתה יכול לעשות

Sleep(5000);

(שים לב שצריך S גדולה)

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים