עליך לממש פונקציה המקבלת בית ומחזירה בית כך שסדר הסיביות בו הפוך. כלומר נניח וקיבלת 00111010 עליך להחזיר 01011100. אסור לך להשתמש במערך.
לאחר סיום המימוש נאמר לי שפעולת הפונקציה לוקחת יותר מדי זמן - כיצד ניתן לשפר את זמן ריצתה? לא ניתן לאתחל LUT מראש. ניתן להשתמש במקום קבוע.
צייר שכמת מלבנים וACIVE DIAGRAM של פרויקט שעשית.
נתון פוינטר של שירים בשם songlist כדי להקל על השאלה זה מערך
בנה STRUCT שמתאר את הsonglist
וכתוב פונקציה שמריצה את השירים בצורה רנדומלית ללא חזרה על השירים
ניתן להשתמש בפונקציה RANDOM עם טווח
תשובות
הוסף תשובה
|
לצפיה בתשובות
יוני 2021
// N - Num Of Songs
// Time Complexity: O(N)
// Space Complexity: O(N)
struct Songlist
{
char** songs;
int numOfSongs;
char* songListName;
};
uint8_t* played = (uint8_t*)calloc(songlist->numOfSongs*sizeof(uint8_t));
if (!played)
{
return;
}
int playedSongs = 0;
printf("Song List Name: %s\n", songlist->songListName);
while(playedSongs != songlist->numOfSongs)
{
int i = rand() % songlist->numOfSongs;
if (played[i])
{
continue;
}