2016-11-17 4 views
0

Я напечатал строку символов «+» на основе двух заданных значений (N, M). Теперь я пытаюсь выяснить, как заменить символы в случайном порядке в указанной строке на основе третьего заданного значения (K). Символы сохраняются в строке (l). Я думаю, что мне нужно использовать функцию replace, но я не знаю, как (поэтому почему это сейчас в комментарии). Любая помощь приветствуется.Как заменить символ случайным образом в строке?

#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 типы, но для ограниченного диапазона, например, будет достаточно.

Смежные вопросы