עזרה עוד תרגיל

liatbi30

New member
עזרה עוד תרגיל

אני צריכה לכתוב תכנית שקולטת שני מספרים התכנית צריכה להדפיס את המספרים בין המספר הראשון למספר השני אבל רק את הזוגיים אני יודעת שלא צריך לולאה לקליטת המספרים השאלה היא אם לא ידוע לי מה ההפרש בין המספר הראשון למספר השני אז מה אני מגדירה בלולאה ?
 

nocgod

New member
מה?

אם את קולטת 2 מספרים A ו B נניח
ברור לך שההפרש הוא A-B או B-A תלוי מי המספר הגדול מבניהם נכון?
לולאת for שמתחילה מהקטן מבניהם ונגמרת בגדול בניניהם לדעתי תפתור את הבעיה לא?
 

liatbi30

New member
לא יוצא מדוייק

התכנית רצה אבל אם הקשתי לדוגמה 1 ו- 10 אז היא הדפיסה רק
2 4 6

למה?
 

liatbi30

New member
שכחתי להוסיף את התכנית סליחה

הנה התכנית:


#include<stdio.h>
int main()
{
int num1,num2,i;
printf("\nEnter two numbers:\n");
scanf("%d%d",&num1,&num2);
if(num2>num1)
{
for(i=0;i<=num2-num1;i++)
{
num1==num1++;
if(num1%2==0)
{
printf("\n%d\n",num1);
}
}
}
else if(num1>num2)
{
for(i=0;i<=num1-num2;i++)
{
num2==num2++;
if(num2%2==0)
{
printf("\n%d\n",num2);
}
}
}
return 0;
}
 

nocgod

New member
well there you problem

1) מה משמעות השורה num1==num1++...?
2) אם את צריכה להציג את מספרים הזוגיים בין max(num1,num2) לבין min(num1,num2) למה הfor שלך מתחיל מ 0 ולא מהמספר הקטן ביותר?
3) למה את בודקת מספר num1 או num2 מתחלק ב 2 ללא שארית? למה לא i?
#include<stdio.h>
int main()
{
int num1,num2,i;
printf("\nEnter two numbers:\n");
scanf("%d%d",&num1,&num2);
if(num2>num1)
{
for(i = num1; i <= num2; i++)
{
if(i % 2 == 0)
{
printf("\n%d\n", i);
}
}
}
else
{
for(i = num1; i <= num2; i++)
{
if(i % 2 == 0)
{
printf("\n%d\n", i);
}
}
}
return 0;
}

זה תיקון של הקוד שלך. שימי לב לשינויים
זה הגרסא המועדפת עלי

#include <stdio.h>

#define min(a, b) (((a) < (b)) ? (a) : (b))
#define max(a, b) (((a) > (b)) ? (a) : (b))

int main()
{
int num1,num2,i;

printf("\nEnter two numbers:\n");
scanf("%d%d",&num1,&num2);

for(i = min(num1, num2); i <= max(num1, num2); i++)
{
if(i % 2 == 0)
{
printf("%d ", i);
}
}
printf("\n");

return 0;
}

או זאת

#include <stdio.h>

int min(int a, int b)
{
return a < b ? a : b;
}
int max(int a, int b)
{
return a > b ? a : b;
}

int main()
{
int num1,num2,i;

printf("\nEnter two numbers:\n");
scanf("%d%d",&num1,&num2);

for(i = min(num1, num2); i <= max(num1, num2); i++)
{
if(i % 2 == 0)
{
printf("%d ", i);
}
}
printf("\n");

return 0;
}
 
למעלה