עבור לתוכן

זקוק לעזרה בתוכנה שהכנתי כשיעורי בית ולא עובדת לי... (מספר ראשוניים - שפת סי)

Featured Replies

פורסם

שלום, קיבלתי היום במסגרת שיעורי מדעי המחשב ב' (חזרה על החומר של א') תרגיל.

להלן המשימה, איך שפירקתי אותה(זה לא נדרש במשימה) לתת משימות ומה שניסיתי לעשות בשפת C אבל לא ממש עובד...

תרגיל כיתה: צור לולאה שתבדוק אילו מספרים בין 20-70 הוא ראשוני.

שיעורי בית: כתוב קטע תוכנית המדפיסה את כל המספרים הראשוניים בין 20-700.

ראשוני מתחלק בעצמו ובאחד

לעשות for שרץ מ1+ עד 699.

לעשות for פנימי שמחלק את מונה הפור הראשי במונה הפור הפנימי. אם תתגלה תוצאה "שארית=0" אז הערך 1 יושם במשתנה flag. כאשר תגמר הפעולה בפור הפנימי יבדק: אם flag לא שווה אז יודפס ערכה של מונה הלולאה הראשית. כעת מתחילה מהתחלה הלולאה עד שמונה יהיה שווה ל699.

#include <stdio.h>
#include <conio.h>
void main()
{
int flag=0,i=0,c,j;rd
for(c=0;c<=I;c++)
{
for(j=1;j<c;j++)
{
if (i%j==0) flag=1;
}
if (flag!=1) printf("%d",i);

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

תודה רבה רבה!

Vega

  • תגובות 31
  • צפיות 3.5k
  • נוצר
  • תגובה אחרונה
פורסם

היה לך בלבול קטן עם המשתנים.

תנסה ככה:

void main()

{

int flag=0,c,j;

for(c=1;c<=700;c++)

{

for(j=1;j<c;j++)

if (c%j==0)

flag=1;

if (flag!=1)

printf("%d",c);

}

}

פורסם

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

דבר שלישי הדיבגר הפסיק לעבוד??

הייתי שם ברייקפויינט ורואה שהלולאה יוצאת אחריי פעם אחת ומבין שמשהו בתנאי לא נכון

פורסם

מה הקומפיילר אומר כשאתה מריף את זה

זה נראה כי שכחת לסגור צומדיים ורשמת DS בסוף השורה של הINT

פורסם
  • מחבר

תודה על העזרה, ואחלה קוד. אבל קשה קצת להבין מה בדיוק שינית, תוכל להסביר לי?

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

פורסם
  • מחבר

אחי, הקוד שהבאתי לי לא עובד, זה פשוט לא רושם כלום. (אין התראת דיבגר).

פורסם

#include<stdio.h>

#include<conio.h>

void main()

{

int i,j,flag;

clrscr();

flag=0;

for (i=2,i<700,i++)

{

  for (j=2,j<i,j++){

    if (i%j==0)

      flag++;

  }

  if (flag>0)

     printf("%d ",i);

if (i==2)

printf("2 ");

  flag=0;

}

getch();

}

אני חושב שזה יעבוד אבל לא ניסיתי כי אני לא

במחשב שלי (הוא מת כרגע)

חבל שהוא מת כרגע,כי אני כתבתי פעם תוכנית

ממש טובה שעושה את זה

לא יצא לי בדיוק לחשוב איך לעשות שגם 2 יעבוד,

אז הוספתי לו שורה,

אבל יכול להיות שהיא מיותרת,

אם 2 יודפס לך פעמיים,אז תמחוק את הIF ואת השורה

שמדפיסה "2" וזה יעבוד (אני חושב)

פורסם
  • מחבר

ניסיון נוסף שלי, בבקשה תעזור לי זה דחוף למחר - יש לי שיעור עם מרכז המגמה....!

#include<stdio.h>

#include<conio.h>

void main()

{

int i,j,flag=0,c;

clrscr();

flag=0;

for (i=20;i<=700;i++)

{

for(j=3;j<(i/2);j++)

{

if(i%j==0 && i!=1 && i!=j) printf("%d \n",i);

}

}

getch();

}

פורסם

דבר ראשון תיישר תמיד לשמאל

זה מעצבן ככה

שנית,

האם בדקת אם מה שאני כתבתי עובד?

אומנם כתבתי את זה על 2-699 (כולל)

אבל לא נורא,לא יהיה קשה לשנות

עכשיו ככה,

למה כתבת את זה:

j<(i/2)

לא הבנתי למה

וגם את זה לא:

i!=1

הרי I לא יכול להיות שווה לאחד,הכי קטן שהוא יהיה זה 20

שנית,

אתה לא משתמש בFLAG,או שתשתמש או שתמחוק אותו

שלישית,

אותו הדבר עם C

רביעית,

לא הבנתי את זה, שהרי תמיד זה יהיה נכון:

i!=j

I לא יכול להיות שווה לJ כי הלולאה של J רצה רק עד חצי I (שוב,לא הבנתי למה)

תנסה לעקוב אחרי התוכנית שאני כתבתי בתור טיוטה

אני חושב שהיא עובדת,

אם לא אני מצטער אבל מאוחר ואני הולך לישון בקרוב

לא יהיה לי זמן לכתוב שוב

פורסם
  • מחבר

איזה תוכנית כתבת? :|

פורסם

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

חוץ מזה התוכנית שלך ממש לא נכונה vega

פורסם

צודק לא חשבתי על זה

אבל חסיכת זמן ריצה זאת לא הבעיה שלי,

קודם שיעבוד בלי בעיות,אחרי זה נדבר

התוכנית שכתבתי נמצאת כמה תגובות למעלה בתגובה שלי (דאאא)

פורסם
  • מחבר

כן, אני מודע לזה ומוזר לי שלא הכנסתי את זה בקוד, כנראה שטעיתי.. אני די שיכור מעייפות. תשמע אני ממש לא רוצה להיות מהאנשים המעצבנים האלה שבאים ומבקשים ש"יעשו להם" את השיעורי בית אבל ישבתי על זה יותר משעתיים וכל החברים שלי עסוקים בפיזיקה ואני פשוט חייב להביא את זה מחר לרכז של המגמה שלי או שהוא קוצץ ראשים.. :S:S:S

אנא ממך Holy, הושיעני!

פורסם

בדקת האם התוכנית שאני כתבתי תעבוד?

אני חושב שכן,

אבל אני לא בטוח ואין לי קומפיילר כאן

אז אני לא יכול לבדוק

היא אומנם רצה מ2 עד 699,אבל

אפשר לשנות את זה ל20 עד 700 בלי שום בעיה

אני הלכתי לישון,

מקווה שהתוכנית תעזור לך,

אם לא,

אני מצטער מראש

פורסם
  • מחבר

#include<stdio.h>

#include<conio.h>

void main()

{

int i,j,flag;

clrscr();

flag=0;

for (i=2,i<700,i++)

{

  for (j=2,j<i,j++){

    if (i%j==0)

      flag++;

  }

  if (flag>0)

     printf("%d ",i);

  if (i==2)

    printf("2 ");

  flag=0;

}

getch();

}

תקלה בשורה 8 - Unexpected > check parenthesis in function main...

WTF?

ארכיון

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

דיונים חדשים