עבור לתוכן

תוכנית שמקבלת מספר וספרה ומחזירה את המספר בלי הספרה.

Featured Replies

פורסם



#include<stdio.h>

#include<math.h>

long sifra(long num , int digit)

{

int i=0;

long sum=0,temp;

while ( num != 0 )

{

temp= num%10;

num=num/10;

if ( temp != digit)

{

sum=sum + temp*powl(10,i);

i++;

}

}

return sum;

}

void main()

{

long num;

int digit;

printf("Please enter a number and a digit\n");

scanf("%d%d",&num,&digit);

printf("The number without the digit is: %g",sifra(num,digit);

}

פורסם

לא הבנתי כלום.

אתה מכניס טקסט, ואתה רוצה להפריד את המספרים מהאותיות?

פורסם

תערוך את ההודעה ושים את כל הקוד בתוך טג קוד, הוא יהיה יותר קריא ככה.

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

אתה מכניס טקסט, ואתה רוצה להפריד את המספרים מהאותיות?

איך הבנת את זה ממה שהוא כתב? הוא אמר שהוא מקבל מספר וספרה, והוא רוצה למחוק את כל המופעים של הספרה מהמספר. דהיינו אם הוא מקבל 356246 ו-6 אז הוא יחזיר 3524.

פורסם
  • מחבר

אגב התוכנית לא רצה לי משום מה נראה לי יש לי בעיה בסוגי טיפוסים שאני מכניס לpower

שניצל אשמח אם תראה לי את הפתרון שלך ללא החזקה , אני לא רואה את זה.

ואני שם %g כי התוכנית לא רצה לי וחשבתי שזה בגלל ה%g או %d וכוליי זה מה ששמתי בסוף.( לא עזר ).

פורסם

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

פורסם

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

AmiLo: התכנית לא רצה לך כי אתה מנסה לשים את התוצאה של pow (שהיא double) בתוך משתנה שהוא long. אבל בעיקרון עדיף להימנע משימוש ב-pow כשאפשר. תזכור שאתה לא באמת מחשב כאן חזקות "מורכבות" - זה הכל חזקות של 10, שהולכות וגדלות לפי i (באיטרציה הראשונה זה 10 בחזקת 0, אחר כך 10 בחזקת 1, וכן הלאה).

פורסם

לשואל המקורי,

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


void test_remove_digit()
{
assert( remove_digit (123, 2) == 13 );
assert( remove_digit (123, 1) == 23 );
assert( remove_digit (123, 3) == 12 );
assert( remove_digit (12123, 2) == 113 );
assert( remove_digit (12123, 1) == 223 );
// .....
}

תשלב מקרים בהם התוצאה היא 0, שלא יורדת אף סיפרה, שתי ספרות רצוף, הורד בקצוות ובאמצע, אף הורדה וכו' וכו'.

ארכיון

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

דיונים חדשים