伊莉討論區

標題: 可以幫我寫這題嗎?我想了很久,寫不太出來 [打印本頁]

作者: ggyy85520    時間: 2010-4-26 05:21 AM     標題: 可以幫我寫這題嗎?我想了很久,寫不太出來

輸入N個英文字,列印出英文個別出現的次數。

例如:
cin >> aabccddde

cout
a出現次數2
b出現次數1
c出現次數2
d出現次數3
e出現次數1




幫忙一下
謝謝
作者: hst326    時間: 2010-4-26 10:43 AM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: runeray2000    時間: 2010-4-26 11:02 AM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: citee520    時間: 2010-4-26 11:09 AM

#include <iostream>
#include <stdio.h>

using namespace std;

int main(void)
{
        char eng[26]={'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'};
        char vx[128]={0};
        int _count[26]={0};
        cout<<"請輸入一筆英文字:";
        cin>>vx;
        for(int i=0;vx[i]!=0;i++)
        {
                switch(vx[i])
                {
                case 'a':
                        (_count[0])++;
                        break;
                case 'b':
                        (_count[1])++;
                        break;
                case 'c':
                        (_count[2])++;
                        break;
                case 'd':
                        (_count[3])++;
                        break;
                case 'e':
                        (_count[4])++;
                        break;
                case 'f':
                        (_count[5])++;
                        break;
                case 'g':
                        (_count[6])++;
                        break;
                case 'h':
                        (_count[7])++;
                        break;
                case 'i':
                        (_count[8])++;
                        break;
                case 'j':
                        (_count[9])++;
                        break;
                case 'k':
                        (_count[10])++;
                        break;
                case 'l':
                        (_count[11])++;
                        break;
                case 'm':
                        (_count[12])++;
                        break;
                case 'n':
                        (_count[13])++;
                        break;
                case 'o':
                        (_count[14])++;
                        break;
                case 'p':
                        (_count[15])++;
                        break;
                case 'q':
                        (_count[16])++;
                        break;
                case 'r':
                        (_count[17])++;
                        break;
                case 's':
                        (_count[18])++;
                        break;
                case 't':
                        (_count[19])++;
                        break;
                case 'u':
                        (_count[20])++;
                        break;
                case 'v':
                        (_count[21])++;
                        break;
                case 'w':
                        (_count[22])++;
                        break;
                case 'x':
                        (_count[23])++;
                        break;
                case 'y':
                        (_count[24])++;
                        break;
                case 'z':
                        (_count[25])++;
                        break;
                }
        }

        for(int i=0;i<26;i++)
        {
                if(_count[i]!=0)
                        cout<<eng[i]<<"出現的次數為:"<<_count[i]<<endl;
        }
}
作者: ggyy85520    時間: 2010-4-27 02:23 PM

感謝啊!!
高手果然不一樣
作者: ggyy85520    時間: 2010-4-27 02:27 PM

2樓大大
請問一下
int main(int argc, char *argv[])
括弧裡的int argc, char *argv[]
是什麼意思
我現在學的是int main()這樣
所以不太清楚什麼意思
作者: Force[TW]    時間: 2010-4-27 05:35 PM

本帖最後由 Force[TW] 於 2010-4-27 05:54 PM 編輯
2樓大大
請問一下
int main(int argc, char *argv[])
括弧裡的int argc, char *argv[]
是什麼意思
我現 ...
ggyy85520 發表於 2010-4-27 02:27 PM


命令列的參數
  1. C:\>myprogram.exe para1 para2
複製代碼
假如有一個程式名叫 myprogram.exe,假如它被定義成可以接受兩個參數,
那麼 argc = 3,argv[0] = "myprogram.exe",argv[1] = "para1",argv[2] = "para2"。
由於檔案的名稱可能包含檔案的所在路徑,所以 argv[0] 也可能為 "C:\...\myprogram.exe"。
  1. #include <iostream>
  2. // 巨集:定義常數
  3. #define LENGTHLETTER 26
  4. #define CHARALPHABET 'a'
  5. #define BUFFERSIZE 4096
  6. // Integrated Development Environment
  7. // Visual C++
  8. using namespace std;
  9. //
  10. // 結構:把字母與次數包在一起
  11. typedef struct SAlphabet
  12. {
  13.         char letter;
  14.         size_t times;
  15. }Alphabet;
  16. void main(int argc, char** argv)
  17. {
  18.         // 宣告結構陣列,共 26 個元素
  19.         // 讓電腦自行建立陣列與初始化
  20.         Alphabet alphabet[LENGTHLETTER];
  21.         // 初始化整個陣列
  22.         memset((void*) alphabet, NULL, sizeof(Alphabet) * 26);
  23.         // 設值
  24.         for (size_t i = 0; i < LENGTHLETTER; i ++)
  25.         {
  26.                 alphabet[i].letter = CHARALPHABET + i;
  27.                 // 也可以利用設值初始化次數
  28.                 //alphabet[i].times = 0;
  29.         }
  30.         // 準備輸入字串
  31.         cout<<"Input your lowercase letters: ";
  32.         char Buffer[BUFFERSIZE];
  33.         cin>>Buffer;
  34.         // 開始記錄
  35.         for (size_t i = 0; i < strlen(Buffer); i ++)
  36.         {
  37.                 for (size_t j = 0; j < LENGTHLETTER; j ++)
  38.                 {
  39.                         if ( Buffer[i] == alphabet[j].letter )
  40.                         {
  41.                                 alphabet[j].times ++;
  42.                         }
  43.                 }
  44.         }
  45.         // 顯示次數大於零的字母
  46.         for (size_t i = 0; i < LENGTHLETTER; i ++)
  47.         {
  48.                 if ( alphabet[i].times > 0 )
  49.                 {
  50.                         cout<<alphabet[i].letter<<" = "<<alphabet[i].times<<endl;
  51.                 }
  52.         }
  53.         system("PAUSE");
  54. }
複製代碼


結構,在 C++ 裡與公開的類別(public class)相同,內含某一個物件的屬性,
例如正方形的盒子有長寬高,可以利用結構或是類別把長、寬、高三個屬性包在一起。
作者: runeray2000    時間: 2010-4-28 01:02 PM

提示: 作者被禁止或刪除 內容自動屏蔽




歡迎光臨 伊莉討論區 (http://a401.file-static.com/) Powered by Discuz!