עבור לתוכן

שינוי ספרות ב C

Featured Replies

פורסם

שלום

אני די חדש ב C

וקיבלנו תרגיל כזה:

קלוט מספר תלת ספרתי

אם הספרה זוגית הגדל באחת אם הספרה אי זוגית הקטן באחת

למשל

376 יהפוך ל267

ו649 יהפוך ל 758

ורציתי לדעת אם יש IF אחד שמכיל את כל האפשרויות

(אחד אני יכול לעשות אבל זה נראה לי עודף עבודה)

and\or\not

פורסם

בשביל לבדוק חלוקה במספר (במקרה הזה ב-2) משתמשים באופרטור % (מודולו).

אם a ו-b שני מספרים שלמים, אז הפעולה a % b מחזירה את שארית החלוקה של a ב-b. מספר הוא כמובן זוגי אם (ורק אם) שארית החלוקה שלו ב-2 היא 0.

פורסם
  • מחבר

הנה הקוד
#include <stdio.h>
#include <conio.h>

int main()
{
int num;
int hunderds, tens, units;

printf("Enter a 3-digit number:");
scanf("%d", &num);

hunderds=num/100;
tens=(num/10)%10;
units=num%10;

if (hunderds%2==0)
hunderds=(hunderds+1)%10;
else
hunderds=hunderds-1;

if (tens%2==0)
tens=(tens+1)%10;
else
tens=tens-1;

if (units%2==0)
units=(units+1)%10;
else
units=units-1;



num=hunderds*100+tens*10+units;
printf("the new number is:%d", num);


getch();
return 0;
}

הכוונה שלי היית
אם אפשר לעשות לקצר את הקוד(בשורות)

פורסם

ערוך בבקשה את ההודעה ושים את הקוד בתוך טג קוד (כפתור עם ציור #) כדי שיהיה יותר ברור.

לשאלתך: אפשר לקצר את הקוד, באמצעות פונקציות או לולאות... אבל אני מניח שעדיין לא למדת את זה.

אגב, הערה קטנה לגבי הקוד: אחרי if/else תמיד תשים את הקוד בתוך סוגריים מסולסלים, גם כשיש רק פקודה אחת. דהיינו, במקום זה:

if (hunderds%2==0)
hunderds=(hunderds+1)%10;
else
hunderds=hunderds-1;

כתוב את זה:

if (hunderds%2==0) {
hunderds=(hunderds+1)%10;
} else {
hunderds=hunderds-1;
}

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

פורסם
  • מחבר

כן אוקיי

ערכתי

אז יש מצב לקצר?

פורסם

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

נ.ב. את הטקסט שאינו קוד לא היית צריך לשים בתוך טג הקוד...

פורסם
  • מחבר

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

נ.ב. את הטקסט שאינו קוד לא היית צריך לשים בתוך טג הקוד...

אה לא שמתי לבה

תודה

פורסם

אגב, לעשות %10 אחרי שהוספת 1 זה לא נחוץ, כי זה רלוונטי רק במקרה שהספרה הייתה 9, אבל אז אתה לא תוסיף 1 אלא תוריד 1.

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

ארכיון

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

דיונים חדשים