2016-11-17 11 views
0

私は与えられた2つの値(N、M)に基づいて "+"記号の文字列を出力しました。今、私は第3の与えられた値(K)に基づいて文字列内の文字をランダムに置き換える方法を見つけようとしています。文字は文字列(l)に格納されます。私は、置換機能を使用する必要があると思うが、私はどのように(今のところコメントになっているのか)わからない。どんな助けもありがとうございます。文字列内の文字をランダムに置き換える方法は?

#include <stdio.h> 

unsigned int randaux() 
{ 
    static long seed=1; 
    return(((seed = seed * 214013L + 2531011L) >> 16) & 0x7fff); 
} 

#include <stdio.h> 
#include <string.h> 
#include <stdlib.h> 

int main() { 
    char s[1000]; 
    int N, M, K, l; 

    printf("N: "); 
    scanf("%d",&N); 
    printf("M: "); 
    scanf("%d",&M); 
    printf("K: "); 
    scanf("%d",&K); 
    printf("\n"); 

    gets(s); 

    l=strlen(s); 

    /* Mostre um tabuleiro de N linhas e M colunas */ 

    if(N*M<K){ 
    printf("Not enough room."); 
    }else if(N>40){ 
    printf("Min size 1, max size 40."); 
    }else if(M>40){ 
    printf("Min size 1, max size 40."); 
    }else{  
    for(int i=0; i<N; i++) 
    { 

    for(int j=0; j<M; j++) 
    { 
    printf("+", s[j]); 
    } 

    printf("\n", s[i]); 
    } 
    for(int l=0; l<K; l++) 
    { 
    /*s.replace();*/ 
    } 
} 
    return 0; 
} 
+0

質問が分かりません。 'randaux()'は呼び出されないだけでなく、毎回同じ種を使用します。 –

+0

あなたが見つけたコードを "リサイクル"しようとしていますが、あなた自身は書いていませんか?コメントアウトされた 's.replace();がCコードである可能性はありますが、そうではありません。 –

+1

@Weather Vane Randauxは、いつ呼び出すべきかわからないので呼び出されません。シードは静的な結果でテストするために現在は静的です。 – Kuro

答えて

2

訂正可能な回答を有効にするには、説明できない複雑さと未知数があります。しかし、これは文字列の文字を数字でランダムに置き換える方法を示しています。

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <time.h> 

int main(void) 
{ 
    char str[] = "----------"; 
    int len = strlen(str); 
    int index; 
    int num; 

    srand((unsigned)time(NULL)); // randomise once only in the program 
    printf("%s\n", str);   // original string 

    index = rand() % len;   // get random index to replace, in length range 
    num = '0' + rand() % 10;  // get random number, in decimal digit range 
    str[index] = num;    // overwrite string character 

    printf("%s\n", str);   // altered string 
    return 0; 
} 

プログラムセッション:

---------- 
-3-------- 

---------- 
-----0---- 

---------- 
--------6- 

おそらくsize_t型を使用する方が良いでしょうが、例の限定された範囲のために、十分です。

関連する問題