ABA


"java - איך אפשר למצוא כמה פעמים מופיע אותו התו ללא string?"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #21033 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 21033
Sadikovz
חבר מתאריך 4.12.14
17 הודעות
   16:26   19.12.14   
אל הפורום  
  java - איך אפשר למצוא כמה פעמים מופיע אותו התו ללא string?  
 
   אהלן,
אני צריך לבנות תוכנית שמקבלת מהמשתמש 20 תווים.
ועלי להוציא פלט של איזה תו הופיע הכי הרבה פעמים.
אשמח אם תוכלו להסביר לי במילים שיתנו לי את הלוגיקה של הפונקציה ולא לרשום תוכנית על מנת שאוכל להתמודד עם זה לבד.

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


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

  האשכול     מחבר     תאריך כתיבה     מספר  
  רמז: מערך מונים בגודל הא''ב כובען  19.12.14 16:48 1
     תודה, אבל Sadikovz 19.12.14 16:57 2
         מה שאתה מעדיף... כובען  19.12.14 17:32 3
             זו התכנית שלי: Sadikovz 19.12.14 18:10 4
                 אתה כתבת את התוכנית? באיזה מסגרת שאלו אותך את זה? כובען  19.12.14 18:40 5
                 אני חייב ללכת אבל אני אכתוב לך פסאודו קוד של הפתרון בחצי C כובען  19.12.14 19:16 6
                     קודם כל תודה, ושנית Sadikovz 20.12.14 00:41 7
                         אני לא אתעמק בתוכנית שלך.. ShocKi  20.12.14 00:58 9
                         תמיד עוזר מכל הלב, ממש לא התכוונתי להתנשא ואם זה מה שהבנת אני מצטער. כובען  20.12.14 01:58 12
  מכתב Dimona 20.12.14 00:56 8
     תודה חברים Sadikovz 20.12.14 01:08 10
         אם באמת חשוב לך להבין את הלוגיקה של התרגיל ShocKi  20.12.14 01:16 11
             אני ממש בתחילת התואר ולא ניראה לי שלמדנו מיון ויש דרישה לבנות את התכניות רק עם Sadikovz 20.12.14 02:40 13
                 אחת הטעויות הנפוצות של סטודנטים. ShocKi  20.12.14 20:21 19
     אובד עצות...מה אני עושה לא טוב? Sadikovz 20.12.14 04:59 14
         מכתב Dimona 20.12.14 13:12 15
             הנה Sadikovz 20.12.14 15:08 16
                 אתה יכול להוסיף תיעוד לקוד? כובען  20.12.14 16:14 17
  לדעתי אפשר גם בלי מערך מוכן, אפשר ליצור אותו דינאמית בקריאת תו אחר תו מה-string meni181818 20.12.14 20:14 18
     דוגמא ב-js + jq meni181818 20.12.14 20:51 20
     מה חסכת כאן? ShocKi  21.12.14 22:45 21

       
כובען  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 2.3.10
24350 הודעות, 21 פידבק
   16:48   19.12.14   
אל הפורום  
  1. רמז: מערך מונים בגודל הא''ב  
בתגובה להודעה מספר 0
 
ערכתי לאחרונה בתאריך 19.12.14 בשעה 16:52 בברכה, כובען
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Sadikovz
חבר מתאריך 4.12.14
17 הודעות
   16:57   19.12.14   
אל הפורום  
  2. תודה, אבל  
בתגובה להודעה מספר 1
 
   האמת הרמז לא כל כך כיוון אותי , כי נניח ואני יוצר בתוך הפונקציה מערך בגודל של תווי הא' ב', אז איזה לולואה אני אמור ליצור שהתפקיד שלה יהיה לספור איזה תו הופיע הכי הרבה?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
כובען  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 2.3.10
24350 הודעות, 21 פידבק
   17:32   19.12.14   
אל הפורום  
  3. מה שאתה מעדיף...  
בתגובה להודעה מספר 2
 
ערכתי לאחרונה בתאריך 19.12.14 בשעה 17:58 בברכה, כובען
 
לולאה שקולטת 20 תווים מהמשתמש ומבצעת את המנייה תוך כדי הקליטה,
או לחלופין קליטה של 20 תווים מהמשתמש ואז לולאה שרצה על הקלט שנשמר.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Sadikovz
חבר מתאריך 4.12.14
17 הודעות
   18:10   19.12.14   
אל הפורום  
  4. זו התכנית שלי:  
בתגובה להודעה מספר 3
 
   זו השאלה:
א. מהו התו הנפוץ יותר במערך – אם ישנם כמה תווים עם מספר הופעות מקסימאלי יש להחזיר את זה המופיע
ראשון במערך מבין תווים אילו.

זו התכנית:
import java.util.Scanner;
public class ex2 {
public static void main(String args){
Scanner sc = new Scanner(System.in);
char mylist= new char;
System.out.print("Please enter "+mylist.length+" chars: ");
for(int i=0;i<mylist.length;i++){
mylist=sc.next().charAt(0);
}
commonChar(mylist);
leastTimes(mylist);
alphabetical(mylist);
ReverseChars(mylist);
}
public static void commonChar(char mylist) {
for(int i=0;i<mylist.length;i++){

}

}
public static void leastTimes(char mylist) {
}
public static void alphabetical(char mylist) {

}
public static void ReverseChars(char mylist) {
System.out.print("\nThe input backwards: ");
for (int i = mylist.length-1; i >= 0 ; i--){
System.out.print(mylist);
}
}
}

------------------------------------------------------------------

זו הקריאה לפונקציה:
public static void commonChar(char mylist) {

עשיתי כמו שאמרת עם הלולאה , אבל אני לא מבין איך היא אמורה לזהות מה התו שהודפס הכי הרבה , למשל אם המשתמש הכניס:
a a a a a b c d e f g h i j k l m n o p
אז הפלט אמור להיות:
The most common char is – a


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
כובען  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 2.3.10
24350 הודעות, 21 פידבק
   18:40   19.12.14   
אל הפורום  
  5. אתה כתבת את התוכנית? באיזה מסגרת שאלו אותך את זה?  
בתגובה להודעה מספר 4
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
כובען  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 2.3.10
24350 הודעות, 21 פידבק
   19:16   19.12.14   
אל הפורום  
  6. אני חייב ללכת אבל אני אכתוב לך פסאודו קוד של הפתרון בחצי C  
בתגובה להודעה מספר 4
 
אם זה לא עוזר לך אתה כנראה צריך לחזור כמה (המון) שיעורים אחורה
ולהתחיל לעשות שיעורי בית בעצמך במקום להעתיק או שאתה לומד את
התחום הלא נכון.

http://pastebin.com/U0uQArWR

בהצלחה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Sadikovz
חבר מתאריך 4.12.14
17 הודעות
   00:41   20.12.14   
אל הפורום  
  7. קודם כל תודה, ושנית  
בתגובה להודעה מספר 6
 
   במסגרת תואר , מאיפה בדיוק הסקת שאני מעתיק?

ומבחינת אם התחום הנכון או לא , לא ניראה לי שאתה בעמדה להגיד לי מה טוב בשבילי.

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

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ShocKi  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.3.02
20171 הודעות, 10 פידבק
   00:58   20.12.14   
אל הפורום  
  9. אני לא אתעמק בתוכנית שלך..  
בתגובה להודעה מספר 7
 
   בעיקר בגלל שאיאפשר לקרוא אותה, לפחות תשים אותה בצורה קריאה ע"י שימוש בתבנית של קוד...

השיטה לפתרון כבר הוצגה לך, נראה לי פשוט לא הבנת אותה...

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

ואז למשל:
כל פעם שאתה נתקל ב a אתה הולך למערך במקום 1 ומוסיף לו 1.
כל פעם שאתה נתקל ב b אתה הולך למערך במקום 2 ומוסיף לו 1.
ככה אתה מגדיר תא לכל אות בא"ב... עד z.
ואז התא הבא אתה למשל קובע שהוא יהיה רווח, ואז כל פעם שאתה פוגש רווח אתה מוסיף בתא הזה 1.
אותו הדבר עם פסיק, עם נקודה וכו'...

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


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


יש גם סוגים נוספים של פתרונות, אם למשל אין לך זכרון נוסף אז אתה יכול פשוט למיין את המערך שלך בעזרת מיון כלשהו, ואז פשוט לעבור עליו ולספור מהי קבוצת התווים הזהה הגדולה ביותר.


קאש-באק ישראלי: https://www.cashback.co.il/?uref=33330
קאשבק לAsos ואמזון דרך Ebates: https://goo.gl/MX87Y7 - מקבלים 10$ לאחר שימוש ראשון.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
כובען  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 2.3.10
24350 הודעות, 21 פידבק
   01:58   20.12.14   
אל הפורום  
  12. תמיד עוזר מכל הלב, ממש לא התכוונתי להתנשא ואם זה מה שהבנת אני מצטער.  
בתגובה להודעה מספר 7
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Dimona לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 28.11.10
1910 הודעות, 1 פידבק
   00:56   20.12.14   
אל הפורום  
  8. מכתב  
בתגובה להודעה מספר 0
 
   השיטה הפשוטה ביותר לעשות את זה היא ליצור מערך בגודל מספר האותיות בשפה אנגלית ולאפס את כל המערך, ברגע שאתה מקבל ערך אז אתה יודע שהאות a היא במקום מספר 1 B במקום מספר 2 וכו(איך אתה בודק איזה מקום האותיות במערך אני משאיר לך כי אני לא רוצה לגלות לך עד הסוף).
עכשיו בוא נגיד האות a הופיעה אז אתה מגדיל את הערך במערך ב 1.
בסוף אתה בודק מספר מקסימלי במערך ואז אתה יודע איזה אות הייתה הכי הרבה פעמים.

בהצלחה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Sadikovz
חבר מתאריך 4.12.14
17 הודעות
   01:08   20.12.14   
אל הפורום  
  10. תודה חברים  
בתגובה להודעה מספר 8
 
   בדיוק בשביל זה פתחתי את הפוסט , בכדי להבין את הלוגיקה של התרגיל.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ShocKi  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.3.02
20171 הודעות, 10 פידבק
   01:16   20.12.14   
אל הפורום  
  11. אם באמת חשוב לך להבין את הלוגיקה של התרגיל  
בתגובה להודעה מספר 10
 
   תפתור אותו גם עם מיון...


קאש-באק ישראלי: https://www.cashback.co.il/?uref=33330
קאשבק לAsos ואמזון דרך Ebates: https://goo.gl/MX87Y7 - מקבלים 10$ לאחר שימוש ראשון.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Sadikovz
חבר מתאריך 4.12.14
17 הודעות
   02:40   20.12.14   
אל הפורום  
  13. אני ממש בתחילת התואר ולא ניראה לי שלמדנו מיון ויש דרישה לבנות את התכניות רק עם  
בתגובה להודעה מספר 11
 
   מה שלמדנו,
תודה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ShocKi  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.3.02
20171 הודעות, 10 פידבק
   20:21   20.12.14   
אל הפורום  
  19. אחת הטעויות הנפוצות של סטודנטים.  
בתגובה להודעה מספר 13
 
   לדעת רק מה שמלמדים אותם, בזמן שמלמדים אותם ובדרך שמלמדים אותם.

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


קאש-באק ישראלי: https://www.cashback.co.il/?uref=33330
קאשבק לAsos ואמזון דרך Ebates: https://goo.gl/MX87Y7 - מקבלים 10$ לאחר שימוש ראשון.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Sadikovz
חבר מתאריך 4.12.14
17 הודעות
   04:59   20.12.14   
אל הפורום  
  14. אובד עצות...מה אני עושה לא טוב?  
בתגובה להודעה מספר 8
 
   זאת הפונקציה שבניתי לפי ההסבר של dimona או יותר נכון מה שהבנתי מההסבר , הפלט פה נותן לי 26(גודל המערך שהזנתי).

public static void commonChar(char mylist) {
System.out.print("common: ");
int common = new int;
int sum=0,max=common;
for(int i=0;i<common.length;i++){
common=i;
if(common==common){
common++;
}
sum+=common;
if(max<common){
max=common;
}
}
System.out.print(max);


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Dimona לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 28.11.10
1910 הודעות, 1 פידבק
   13:12   20.12.14   
אל הפורום  
  15. מכתב  
בתגובה להודעה מספר 14
 
   תרשום את הקוד בתוך תבנית

בצורה הבאה :

http://s13.postimg.org/3m7rn502v/CODE.png


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Sadikovz
חבר מתאריך 4.12.14
17 הודעות
   15:08   20.12.14   
אל הפורום  
  16. הנה  
בתגובה להודעה מספר 15
 
  

public static void commonChar(char mylist) {
System.out.print("common: ");
int common = new int;
int sum=0,max=common;
for(int i=0;i<common.length;i ){
common=i;
if(common==common){
common ;
}
sum =common;
if(max<common){
max=common;
}
}
System.out.print(max);



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
כובען  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 2.3.10
24350 הודעות, 21 פידבק
   16:14   20.12.14   
אל הפורום  
  17. אתה יכול להוסיף תיעוד לקוד?  
בתגובה להודעה מספר 16
 
לדוגמה לאחר הצהרה על משתנה להוסיף הערה שאומרת מה יהיה תפקידו
של המשתנה בקטע הקוד הבא, לפני לולאה אפשר לכתוב מה הלולאה הולכת
לעשות, לפני תנאי if אפשר לכתוב בשפה פשוטה מה התנאי יבדוק.

גם אם תעשה את זה בעברית זה סבבה פשוט אני רוצה להבין מה קו המחשבה
שלך ולהמשיך משם ולא לאנוס אותך לקו המחשבה שלי או של מישהו אחר.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
meni181818 לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 12.12.13
1032 הודעות, 1 פידבק
   20:14   20.12.14   
אל הפורום  
  18. לדעתי אפשר גם בלי מערך מוכן, אפשר ליצור אותו דינאמית בקריאת תו אחר תו מה-string  
בתגובה להודעה מספר 0
 
   אם קיים במערך, אז העלה את ערכו +1.
אם לא קיים הוסף תחום למערך בשביל אותו תו.

http://s28.postimg.org/izm7890yz/image.gif


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
meni181818 לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 12.12.13
1032 הודעות, 1 פידבק
   20:51   20.12.14   
אל הפורום  
  20. דוגמא ב-js + jq  
בתגובה להודעה מספר 18
 
   http://jsfiddle.net/4p2dm0hf/5/

http://s28.postimg.org/izm7890yz/image.gif


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ShocKi  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.3.02
20171 הודעות, 10 פידבק
   22:45   21.12.14   
אל הפורום  
  21. מה חסכת כאן?  
בתגובה להודעה מספר 18
 
   במישור הגלוי - תהייה לנו בדיוק כמות התאים שאנחנו צריכים.

במישור הסמוי - הגדלת מערך דינאמי = העתקת כל המערך הקודם למקום חדש בזכרון והוספת חתיכה חדשה של זכרון לסוף המערך. כלומר, אתה מבצע פה כמות גדולה מאוד של העתקות בכל פעם שאתה משנה את גודל המערך.


חוץ מזה שלא ממש הבנתי איך אתה מבצע את המעקב...
קיבלת את המחרוזת ab - אז זה קל.
אבל אם קיבלת את המחרוזת azb אז תא מספר 2 שייך ל z. ואיך בדיוק תדע את זה? אתה בעצם צריך להחזיק כאן עוד מבנה נתונים שאומר לך איזה תו שייך לאיזה תא.


אפשר לשדרג את הפתרון הזה ע"י סריקה ראשונית של המחרוזת, מציאת המקסימום בה ואז הקצאה דינאמית לפי המקסימום הזה. כך מובטח לך שהמערך הוא בדיוק בגודל הנכון מלכתחילה. ועדיין, אם למשל המחרוזת שלך היא aaaabbbbbaaas עדיין יהיו לך הרבה מאוד תאים רקים.


קאש-באק ישראלי: https://www.cashback.co.il/?uref=33330
קאשבק לAsos ואמזון דרך Ebates: https://goo.gl/MX87Y7 - מקבלים 10$ לאחר שימוש ראשון.


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

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

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



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