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

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


Vega

Recommended Posts

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

להלן המשימה, איך שפירקתי אותה(זה לא נדרש במשימה) לתת משימות ומה שניסיתי לעשות בשפת 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
  • נוצר
  • תגובה אחרונה

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

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

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

קישור לתוכן
שתף באתרים אחרים

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

כמו כן, דבר נוסף - מישהו מוכן להסביר לי איך עושים 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?

קישור לתוכן
שתף באתרים אחרים

ארכיון

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


×
  • צור חדש...