ABA


"בעייה שיש לי בשאלה פשוטה ב ++C"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #15345 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 15345
MiZe 
חבר מתאריך 16.9.08
8898 הודעות
   22:30   01.06.09   
אל הפורום  
  בעייה שיש לי בשאלה פשוטה ב ++C  
 
ערכתי לאחרונה בתאריך 01.06.09 בשעה 22:35 בברכה, MiZe
 
השאלה היא כזאת:
כתוב פונקציה המקבלת אובייקט מסוג string. על הפונקציה להחזיר את התו (char) בעל התדירות גבוהה ביותר.

אם הקלט הוא:
Dog Loves Dog

אז הפלט יהיה:
o

אני פשוט יושב על זה כל היום כמעט ולא מגיע לכלום, זה לא ייאמן.
זה מה שעשיתי בינתיים:


#include <cstdlib>
#include <iostream>


using namespace std;

int main(int argc, char *argv)
{
int max=100;
char string,string2;
int i,j,size=0,count;
int big=0;

cout << "Enter your name\n";
cin>>string;


{ for(i=0; string!='\0'; i)
size=size 1; }


{ for(i=0; i<size; i)
count = 0; }




strcpy(string2,string);


{ for(i=0; i<size; i)
{ for (j=0; j<size; j)
{ if (string == string)
((count=count 1)); }
}
}




{ for ( i=0; i<size; i)
{ if (count >= big)
big = count; }
}


cout<<string<< endl;
cout<<count<< endl;
cout<<big<< endl;



system("PAUSE");
return EXIT_SUCCESS;
}


זה לא ייאמן, פשוט הלכתי לאיבוד שם.

בעיות מרכזיות:
- תמיד count במקום ה-4 יוצא לי מספר הזוי לחלוטין למרות שכל השאר יוצאים בסדר גמור.

- אני לא מצליח לקבל את ה size של כל המחרוזת אלא רק של המילה הראשונה ( עד הרווח )

- אני לא מצליח להעתיק את כל ה string ל srting2, שוב רק המילה הראשונה מועתקת.

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

תודה, תודה, תודה


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

  האשכול     מחבר     תאריך כתיבה     מספר  
  האופרטור (שהשתמשת בו לקריאה מהקלט) קולט רק עד By-king 02.06.09 02:45 1
  יש לך הגבלת סיבוכיות כלשהי? אם כן, ldan192  02.06.09 11:50 2
  סיבוכיות O(n תעשה מערך שהאינדקס שלו זה הערך char של menda  02.06.09 14:04 3
  bucket sort VeNom  02.06.09 17:05 4
  תעשה מערך עזר בגודל 255 Net_Boy  02.06.09 17:53 5
  אני הייתי הולך על Dictionary עידן_הכלי 02.06.09 20:46 6
  אם כבר אז כבר אלגוריתמים אקזוטיים אז Radix Sort. ldan192  03.06.09 11:59 7
  חח קצת מצחיק שכולכם רשמתם סיבוכיות זמן ... Deuce  03.06.09 12:49 8

       
By-king לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.8.02
31427 הודעות, 1 פידבק, 2 נקודות
   02:45   02.06.09   
אל הפורום  
  1. האופרטור (שהשתמשת בו לקריאה מהקלט) קולט רק עד  
בתגובה להודעה מספר 0
 
   רק עד רווח או אנטר... הראשון במניהם... נסה את getline...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   11:50   02.06.09   
אל הפורום  
  2. יש לך הגבלת סיבוכיות כלשהי? אם כן,  
בתגובה להודעה מספר 0
 
תמיין את האותיות לפי סדר מופען ב-(O(nlogn ואז תוציא בקלוט את האות שמופיעה הכי הרבה ב-(O(n. סה"כ סיבוכיות (O(nlogn.

אם אין לך הגבלה ואתה מעדיף חיים קלים, תשתמש בשני אינדקסים רצים, i ו-j.
תסתכל באות ה-i, תבדוק כמה מופעים בעזרת האינדקס j יש לך בטקסט ותעדכן את max להיות מספר המופעים ו-c להיות האות שהופיעה.
i++ ו-j שוב מ-0 סופר ואם הערך גדול מ-max תחליף וכד'.

סה"כ סיבוכיות (O(n^2 בערך שזה גרוע יחסית... אבל לא קריטי למחרוזות קצרות וקל למימוש.

מעבר לזה לא התעמקתי בקוד שלך חוץ מזה ששמתי לב שאין פה בכלל סטרינגים :\ זה char* string? מה בדיוק הולך שם? תשתמש ב-String אם כבר אתה ב-++C.
למרות שב-C אפילו יותר קל ומהיר לממש.


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
menda 
חבר מתאריך 22.5.06
3563 הודעות, דרג אמינות חבר זה
   14:04   02.06.09   
אל הפורום  
  3. סיבוכיות O(n תעשה מערך שהאינדקס שלו זה הערך char של  
בתגובה להודעה מספר 0
 
   של האות, ותמיד תעלה אותו באחד עבוד כל אות: Array(char)+=1...
בסוף תסרוק את המערך למציאת המספר המקסימלי..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
VeNom  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 7.6.02
7922 הודעות, 1 פידבק, 2 נקודות
   17:05   02.06.09   
אל הפורום  
  4. bucket sort  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק, 2 נקודות
   17:53   02.06.09   
אל הפורום  
  5. תעשה מערך עזר בגודל 255  
בתגובה להודעה מספר 0
 
   כל תא במערך ייצג תו אסקי

ואז אתה לוקח תו במחרוזת שלך כאינדקס במערך עזר ומקדם אותו

בסוף אתה סורק את מערך העזר ומוצא מקסימום והאינדקס שלך זה בעצם התו הבולט ביותר

סיבוכיות : O(n)


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
עידן_הכלי

דרג אמינות חבר זה
   20:46   02.06.09   
אל הפורום  
  6. אני הייתי הולך על Dictionary  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   11:59   03.06.09   
אל הפורום  
  7. אם כבר אז כבר אלגוריתמים אקזוטיים אז Radix Sort.  
בתגובה להודעה מספר 0
 


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Deuce 
חבר מתאריך 1.9.08
6225 הודעות, דרג אמינות חבר זה
   12:49   03.06.09   
אל הפורום  
  8. חח קצת מצחיק שכולכם רשמתם סיבוכיות זמן ...  
בתגובה להודעה מספר 0
 
כאילו אפשר לחשוב איזה בעייה קשה פה.
סתם לצורך העניין:
עידן, אני מקווה שאתה מבין ש-radix sort לא באמת קשור לפה
עידן_הכלי, קצת מוגזם לזרוק מינוח כזה מפוצץ לבעייה כה פשוטה, לא?
עומר ו-menda הציעו לך את הפתרון הכי יעיל שאפשר והוא פשוט ליישום.

כמו כן, כמו שאמרו יש לך את הפתרון הטריוויאלי והוא לרוץ ב-2 לולאות מקוננות.

ובאופן כללי - השתדלו להמנע ממיונים כאשר לא צריך למיין.






                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net