全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1274
推到 Plurk!
推到 Facebook!

請問有人能幫我修一下C程式嗎?

尚未結案
harryGod
一般會員


發表:16
回覆:19
積分:7
註冊:2004-12-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-02-24 17:46:32 IP:218.168.xxx.xxx 未訂閱
題目是 輸入一字串譬如12312           在輸入一字串譬如12 最後OUTPUT出第一個字串中有幾個第二個字串 ANS: 2    EX:      1245121221      12      3    
寫的在下方
#include
#include
#include
#include    using namespace std;    void main()
{
int i,j,k,frequency=0;
char string1[1000],string2[1000];
cout << "請輸入一字串: ";
fgets(string1,1000,stdin);
cout << "請輸入一字串: ";
fgets(string2,1000,stdin);
k=strlen(string2);
if(strcmp(string1,string2)==0)
{
  frequency  ;
}
else if(k==0||k==1)
{
  cout << "輸入錯誤" << endl;
}
else if(k==2)
{
  for(i=0;i<1000;i  )
  {
   if(string1==string2[0])
   {
    frequency  ;
   }
  }
}
else
{
  i=0;
  while(string1!='\0')
  {
   for(j=0;j
一直有錯 找不出來幫幫忙        發表人 - taishyang 於 2005/02/24  18:29:14
        
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-02-24 19:17:42 IP:61.66.xxx.xxx 未訂閱
if(string1==string2[0]) if(string1==string2[j]) 字串跟字元不該相比    試試看這樣        
 
#pragma hdrstop    #include
#include
#include
#include    #pragma argsused
int main(int argc, char* argv[])
{
    int i,j,k,l,frequency=0;
    char string1[1000] = {0},string2[1000] = {0},*ptr;
    string a,b;        cout << "請輸入一字串: ";
    fgets(string1,1000,stdin);
    cout << "請輸入一字串: ";
    fgets(string2,1000,stdin);
    string1[strlen(string1)-1] = 0;
    string2[strlen(string2)-1] = 0;
    a = string1;
    b = string2;
    k=strlen(string1);
    l=strlen(string2);        if ( k < l )
        cout<<"Input Error"<     
        
harryGod
一般會員


發表:16
回覆:19
積分:7
註冊:2004-12-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-02-24 19:41:45 IP:218.168.xxx.xxx 未訂閱
引言: if(string1==string2[0]) if(string1==string2[j]) 字串跟字元不該相比 試試看這樣
 
#pragma hdrstop    #include
#include
#include
#include    #pragma argsused
int main(int argc, char* argv[])
{
    int i,j,k,l,frequency=0;
    char string1[1000] = {0},string2[1000] = {0},*ptr;
    string a,b;        cout << "請輸入一字串: ";
    fgets(string1,1000,stdin);
    cout << "請輸入一字串: ";
    fgets(string2,1000,stdin);
    string1[strlen(string1)-1] = 0;
    string2[strlen(string2)-1] = 0;
    a = string1;
    b = string2;
    k=strlen(string1);
    l=strlen(string2);        if ( k < l )
        cout<<"Input Error"<     
請問一下這個程式的主要方法為何?我看不懂>_<
harryGod
一般會員


發表:16
回覆:19
積分:7
註冊:2004-12-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-02-24 22:41:33 IP:218.168.xxx.xxx 未訂閱
那這樣呢?麻煩幫看 感激        #include #include #include #include using namespace std; void main() { int i,j,k,frequency=0; char string1[100],string2[100],temp[100]; char* token; cout<<"請輸入一字串: "; fgets(string1,1000,stdin); cout<<"請輸入一字串: "; fgets(string2,1000,stdin); k=strlen(string2); if(strcmp(string1,string2)==0) frequency ; /*else if(k==0||k==1) cout<<"輸入錯誤"<
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-02-25 08:45:49 IP:61.66.xxx.xxx 未訂閱
harryGod你好    其實我覺得你的邏輯不是很通,例如
 
if(string1[i]==string2[j])
{
    i  ;
    if(string1[i]==string2[k-2])
    {//為什麼比較這邊,難道你確定string2的長度j 1會等於k-2
        frequency  ;//i對應j,i 1對應k-2 => j 1 = k-2
    }
}
我想,用我提供的範例,應該還算簡單吧 我提供的範例作法是,你有A,B兩個字串 如果A中有B字串,就用迴圈把A中的B字串取代掉(用一個鍵盤無法輸入的值) 這樣就可以算出到底有幾次了 至於為什麼用鍵盤無法輸入的值,是因為我怕我預設要取代的值 跟你從鍵盤輸入的值不小心剛好一樣
harryGod
一般會員


發表:16
回覆:19
積分:7
註冊:2004-12-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-02-25 09:39:04 IP:218.168.xxx.xxx 未訂閱
大大我物件導向還不是很懂>_<" 請問 string a,b; 不用類別也能這樣寫嗎? 這兩行a = string1; b = string2; 是物件嗎? 以及 i = a.find(b)) != -1中 find()這函式是內建的嗎? 麻煩解答一下 謝謝!!
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-02-25 10:10:25 IP:61.66.xxx.xxx 未訂閱
引言: 大大我物件導向還不是很懂>_<" 請問 string a,b; 不用類別也能這樣寫嗎? 這兩行a = string1; b = string2; 是物件嗎? 以及 i = a.find(b)) != -1中 find()這函式是內建的嗎? 麻煩解答一下 謝謝!!
strnig是在定義的,是一種字串形式 a = string1只把string的傳給a,之所以可以用"=",是因為string型態的特性 find()也是string型態中的一個特性 在BCB中,有一個特殊的型態AnsiString不知道你了不了解 string和AnsiString很像就對了
harryGod
一般會員


發表:16
回覆:19
積分:7
註冊:2004-12-09

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-02-25 12:28:57 IP:218.168.xxx.xxx 未訂閱
不好意思在請教您 如果不用那些BCB寫法 能否用C或C++修改呢? 我有點龜毛>"<    譬如 #include #include #include #include using namespace std; int find1(char *a,int b,char *c,int d) { } int main( ) { int i,j,k,l,frequency=0; char string1[1000] = {0},string2[1000] = {0}; cout << "請輸入一字串: "; fgets(string1,1000,stdin); cout << "請輸入一字串: "; fgets(string2,1000,stdin); string1[strlen(string1)-1] = 0; string2[strlen(string2)-1] = 0; k=strlen(string1); l=strlen(string2); if ( k < l ) cout<<"Input Error"<
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-02-25 13:15:44 IP:221.169.xxx.xxx 未訂閱
1.可以善用指標。 2.利用 strstr 這個函數。 所以得到以下的方法。
int count=0;
char *cp = bigstr;
while ((cp = strstr(cp, smallstr))!=0)
{
count  ;
cp  ;
}
printf("%d\n",count);
3.如果看不懂。請善用DEBUG工具。^_^
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-02-25 13:28:56 IP:61.66.xxx.xxx 未訂閱
我用的方法,是標準的C 函式,並不是BCB特有的 不過我看暗黑破壞神的方法更漂亮 之前沒注意到有這種方式 又多學了一招
harryGod
一般會員


發表:16
回覆:19
積分:7
註冊:2004-12-09

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-02-25 14:14:14 IP:218.168.xxx.xxx 未訂閱
感謝兩位大大的幫忙 真的非常感謝 學了好幾招@@ 尤其是blk5743大大 一直幫我看程式 辛苦了^^
系統時間:2024-05-19 18:52:51
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!