שחזורי ראיונות עבודה -> שאלות תכנות בראיון
  • שאלות תכנות בראיון
  • ע"י: Adido
    אשמח לתשובות, תגובות 1. ;(unsigned int bitReverse(unsigned int num הפונקציה לעיל הופכת את סדר הסיביות במספר מימין לשמאל. אנא ממש אותה מבלי להשתמש בשום פונקצית ספריה לצורך הפתרון. לדוגמא: עבןר קלט של 1234 (0x000004D2): הפונקציה תחזיר את המספר 1260388352 (0x4B200000) 2. unsigned int weakEncrypt(const char *from, const char *to, char *str) הפונקציה לעיל מצפינה מחרוזת ע"י קוד החלפה. כל תו המופיע ב form מוחלף בתו המופיע באותו מקום ב to . כל תו אחר לא מוחלף כלל. הערך המוחזר של הפונקציה הוא 1 (אחד) אם ניתן לשחזר את המחרוזת המקורית באמצעות קריאה נוספת לפונקציה weakEncrypt, ו 0- (אפס) אם לא ניתן. ניתן להניח שהמחרוזות חוקיות וש- from אינה מכילה אף תו יותר מפעם אחת ושהאורך של to ושל from שווה. אנא ממשו את הפונקציה. לדוגמא: הקריאה הבאה (S = “hello”; weakEncrypt(“ehlo”,”abcd",S תחזיר 1 ו S יכיל baccd' ' הקריאה הבאה (S = “hello”; weakEncrypt(“ehlo”,”accd",S תחזיר 0 ו S יכיל caccd'
  • לפני 11 שנים
    ע"י: 1_אורח_כללי
    כתבתי משהו יותר פשוט עבור השאלה ה-2: unsigned int weakEncrypt(const char *from,const char* to,char *str) { int i=0; char chCheck = {0}; if (!str) return 0; while (*str) { const char * tmpStartFrom = from; //check if appear in from while(*from) { if ((*str) == (*from )) *str = to; else { from++;i++; } }//of from from = tmpStartFrom; i=0; str++; }//of str //if to has char twice we can't recover while(*to) { if (chCheck == 1 ) return 0; else chCheck = 1; to++; } return 1; }
  • לאחר הצמצומים אסף בחר שלא לבזבז זמן (=כסף) ופנה לסיוע המקצועי שלנו התהליך שעבר היה כה ממוקד, שלא באמת הופתענו כשסיים אותו עם שתי הצעות מעולות על השולחן. תזכרו, לא משנה איך השוק, זה אף פעם לא זמן טוב לחפש עבודה.
    לבדיקת התאמה
  • לפני 17 שנים
    ע"י: 1_אורח_כללי
    אוקי עכשיו אני חושב שזה בסדר unsigned int weakEncrypt(const char *from, const char *to, char *str) { int i=0; int j=0; int k=0; int m=0; int str_length = strlen(str); char *not_in_from = new char[str_length]; strcpy(not_in_from,""); bool in_from = false; for (i=0;i<str_length;i++) { for (j=0;j<strlen(from);j++) { if (str[i] == from[j]) { in_from = true; str[i] = to[j]; break; } } if (!in_from) strcat(not_in_from,&str[i]); in_from = false; } char *to_and_not_in_from = new char[str_length+strlen(to)]; strcpy(to_and_not_in_from,""); strcat(to_and_not_in_from,to); strcat(to_and_not_in_from,not_in_from); for (k=0;k<strlen(to_and_not_in_from);k++) { for (m=k+1;m<strlen(to_and_not_in_from);m++) { if (to_and_not_in_from[k] == to_and_not_in_from[m]) return 0; } } return 1; } שרון גיא
  • לפני 17 שנים
    ע"י: 1_אורח_כללי
    tested and it seems to work unsigned int weakEncrypt(const char *from, const char *to, char *str) { int i=0; int j=0; int k=0; int m=0; int str_length = strlen(str); for (i=0;i<str_length;i++) { for (j=0;j<strlen(from);j++) { if (str[i] == from[j]) str[i] = to[j]; } } החלק השני שבו אני מחזיר 1 או 0 לא מספיק טוב , אם יהיה לי זמן אחרי שאסיים לשתוף את הבית אני אתקן. for (k=0;k<strlen(to);k++) { for (m=k+1;m<strlen(to);m++) { if (to[k] == to[m]) return 0; } } return 1; }
  • לפני 17 שנים
    ע"י: 1_אורח_כללי
    tested and it seems to work unsigned int weakEncrypt(const char *from, const char *to, char *str) { int i=0; int j=0; int k=0; int m=0; int str_length = strlen(str); for (i=0;i<str_length;i++) { for (j=0;j<strlen(from);j++) { if (str[i] == from[j]) str[i] = to[j]; } } for (k=0;k<strlen(to);k++) { for (m=k+1;m<strlen(to);m++) { if (to[k] == to[m]) return 0; } } return 1; }
  • לפני 17 שנים
    ע"י: 1_אורח_כללי
    #include<stdio.h> unsigned int bitRev(unsigned int num); void main() { unsigned int num = 0x000004D2; unsigned int RevNum = 0; RevNum = bitRev(num); printf(" RevNum = 0x%x\n",RevNum); } unsigned int bitRev(unsigned int num) { int n; unsigned int RevNum = 0; for(n=31; n>=0; n--) { RevNum += (1<<n)*(num&1); num >>=1; } return RevNum; }
  • לפני 17 שנים
    ע"י: 1_אורח_כללי
    1. unsigned int bitReverse(unsigned int num){ int ans = 0; int tmp; int acc = 2^31; for(int i=0;i<32 && num!=0;i++) { tmp = num & 0x00000001; if(tmp>0) ans += acc; acc /= 2; num >> 1; } return ans; } maybe there is a better way, using bitwise operations