ABA


"שאלה בעבודה ב c"
גירסת הדפסה        
קבוצות דיון לימודים, מדע ותרבות נושא #11298 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 11298
alex1122 
חבר מתאריך 30.8.07
1159 הודעות
   18:45   22.12.11   
אל הפורום  
  שאלה בעבודה ב c  
 
   1. כתוב תכנית הקולטת טקסט מהקלט הסטנדרטי, וסופרת כמה פעמים מופיעה כל אות בקלט. התכנית צריכה להדפיס את המידע בצורת דיאגרמת עמודות (היסטוגרמה). התכנית לא תבחין בין אותיות גדולות לקטנות, כלומר הופעה של a נחשבת כמו הופעה של A. הדיאגרמה תודפס כך:


*
*
* *
* *
* *
* *
* * *
a b c d ...
(a הופיע 7 פעמים, b לא הופיע, c הופיע 5 וכן הלאה…)

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


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

  האשכול     מחבר     תאריך כתיבה     מספר  
  כיוון כללי TheKid 22.12.11 20:52 1
     פתרתי לך במקרה ותסתבך... TheKid 22.12.11 23:13 2
  חח תודה alex1122  25.12.11 10:56 3

       
TheKid לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 5.10.07
17978 הודעות, 1 פידבק
   20:52   22.12.11   
אל הפורום  
  1. כיוון כללי  
בתגובה להודעה מספר 0
 
   לכל char יש int שמתאים לו.
לכן אתה יכול לעשות מערך בגודל 26 שזה מספר האותיות באנגלית
ולהכניס כל אות שנכנסת למקות המתאים לה..
למשל אם האות הבאה היא b אז הקוד האסקי שלה הוא 98 אז אתה
תבצע

array('b'-'a')++

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
TheKid לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 5.10.07
17978 הודעות, 1 פידבק
   23:13   22.12.11   
אל הפורום  
  2. פתרתי לך במקרה ותסתבך...  
בתגובה להודעה מספר 1
 
   ערכתי לאחרונה בתאריך 22.12.11 בשעה 23:18 בברכה, TheKid
 
אבל תעשה לעצמך טובה.. תנסה לפתור לבד..

int _tmain(int argc, _TCHAR* argv)
{
char ch='\0';
int i=0,max=0;
int let[26];
for (i=0;i<26;i++)
let[i]=0;

fflush;
ch=getchar();
while (ch!='\n')
{

if ((ch<='Z') && (ch>='A'))
{
let[ch-'A']++;
if (max<let[ch-'A']) {
max=let[ch-'A'];
}
}
else if ((ch<='z') && (ch>='a'))
{
let[ch-'a']++;
if (max<let[ch-'a']) {
max=let[ch-'a'];
}
}
ch=getchar();
}
while (max>0)
{
for (i=0;i<26;i++)
{
if (let[i]==max)
{
printf("* ");
let[i]--;

}
else
{
printf(" ");
}
}
max--;
printf("\n");
}
for (i=0;i<26;i++)
{
printf("%c ",i+'a');
}
return 0;
}

דוגמאת קלט:



hello world this is my program to help alex
*
* *
* * * * *
* * * * * * * * * * *
* * * * * * * * * * * * * * * *
a b c d e f g h i j k l m n o p q r s t u v w x y z



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
alex1122 
חבר מתאריך 30.8.07
1159 הודעות
   10:56   25.12.11   
אל הפורום  
  3. חח תודה  
בתגובה להודעה מספר 0
 
  


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

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

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



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