שחזור מלא -ראיון בחברת audio codes אודיוקודס
שאלה 1:
נתון הקוד הבא וצריך להגיד מה הבעיות
char *ip_address(unsigned int ip)
{
char str;
char *p = (char*)&ip;
sprintf(str, %d%d%d%d, p, p, p, p);
return str;
}
שאלה 2:
נתון מספר כלשהו בעל 4 ספרות וניחוש גם בעל 4 ספרות
לדוגמא
מספר 1234, ניחוש 1489
צריך להגיד כמה מספרים הוא בדיוק במקום וכמה ליד
למשל בדוגמא הזאת התוצאה תהיה
1 exact, 1 near
דוגמא נוספת
מספר 1122, ניחוש 2121
התוצאה
2 exact, 2 near
צריך לכתוב קטע קוד שממש את זה
בהצלחה.
אין ספק שהשוק משתנה כל הזמן, אבל דרך הפעולה חייבת להישאר מדויקת ומוכוונת מטרה.
גם כשאתם חושבים שאתם עם האצבע על הדופק, חיפוש עבודה הוא לא המקצוע שלכם - זה המקצוע שלנו.
לבדיקת התאמה
לפני שנתיים
ע"י: 1_אורח_כללי
בשאלה הראשונה צריך גם להתיחס להאם המע' היא big endian או little endian, גם אם המידע מקודד בint בתור 4 בתים נפרדים הסדר שלהם תלוי ב endianess
לפני 10 שנים
ע"י: 1_אורח_כללי
בנוסף, ה-cast נעשה למערך של char ולא unsigned char, אז:
192 יהפוך ל- -64 (מינוס) כאשר יקודם ל-int בזמן ההעברה ל-printf
(ה-printf משתמש ב- %d אז הוא יציג אותו אכן כ- -64. גם שם הייתי משנה ל-%u, אבל זה בלי קשר, כי רק לשנות ל-%u לא יעזור.)
לפני 14 שנים
ע"י: 1_אורח_כללי
זו אכן הבעיה העיקרית, מבחינת תכנות.
בנוסף יש את העובדה שה-IP שיתקבל ב- STR, לפני שחוזרים לפונקציה הקוראת, יתקבל ללא הפרדה באמצעות נקודות ואז לא באמת קיבלנו את מה שרצינו.
לדוגמא, תוצאה כזו: 1921683412 לא כל כך תעזור לנו...
לפני 14 שנים
ע"י: 1_אורח_כללי
מה ההגדרה של "ליד"??
ולגבי השאלה הראשונה, יש בעיתיות נוספת חוץ מזה שהפונק' מחזירה פוינטר למשתנה לוקלי?
לפני 14 שנים
ע"י: קינג_יוניק
ההצעה שלי לפתרון השאלה השניה:
void assessGuess (unsigned num, unsigned guess) {
static bitset<10> digitLUT;
digitLUT.reset();
for (unsigned tmp = num; tmp; tmp/=10) {
digitLUT.set(tmp%10);
}
unsigned exact = 0;
unsigned near = 0;
for (; guess; guess /= 10, num /= 10) {
if (guess%10 == num%10)
exact++;
else if (digitLUT.test(guess%10))
near++;
}
cout << "exact = " << exact << "\nnear = " << near << endl;
}
test output:
num = 1799 guess = 4729
exact = 2
near = 0
num = 1210 guess = 1437
exact = 1
near = 0
num = 2063 guess = 3082
exact = 1
near = 2
num = 6355 guess = 1339
exact = 1
near = 1
num = 1096 guess = 1743
exact = 1
near = 0
num = 7124 guess = 5532
exact = 0
near = 1
num = 4841 guess = 4942
exact = 2
near = 0
num = 8791 guess = 9903
exact = 0
near = 2
num = 5659 guess = 7142
exact = 0
near = 0
num = 6394 guess = 8361
exact = 1
near = 1