2017-07-22 2 views
-2

Ich möchte den Benutzer die Anzahl der Zufallszahlen definieren möchten sie in einem Mitglied meiner Struktur gespeichert werden möchten. Hier ist was ich bisher habe.Generieren Sie zufällige Zahlen für Mitglied der Struktur

struct BigInt { 
int A; 
int rdm; 
}; 
struct BigInt A[300]; 
struct BigInt rdm[10]={0,1,2,3,4,5,6,7,8,9}; 

printf("Number"); 
int len; 
scanf("%i",&len); 

srand(time(NULL)); 
int i=0; 

while (i!=len){ 
int r=rand()%10; 
A[i]=rdm[r]; 

printf("\nr:%i\n",r); 
printf("A[i]:%i",A[i]); 
i++; 
} 

Aber ich bekomme seltsame Werte und es funktioniert nicht so, wie ich es erwarte. Ich habe keine Ahnung warum, was mache ich falsch?

+2

Aktivieren Sie die Compilerwarnungen. ** Beachten Sie diese Warnungen **, behandeln Sie sie sogar als Fehler. Edit: Der Compiler * kann * sich beschweren für die Nichtübereinstimmung zwischen '% i' und' A [i] 'im' printf() 'Aufruf. – pmg

+2

'struct BigInt' hat zwei Mitglieder. – BLUEPIXY

+7

Sie verwenden 'A' und' rdm' sowohl als Elementnamen als auch als Array-Namen. Das zeigt an, dass Sie noch nicht begriffen haben, was eine Struktur ist und wie sie funktioniert. – user3386109

Antwort

0

Der folgende Codeschnipsel löst Ihr Problem basierend auf Ihrem Kommentar unten. Sie haben vielleicht nicht vollständig verstanden, wie Sie Strukturen verwenden können. Beachten Sie, dass Sie das Element einer Struktur verwenden müssen. Symbol

struct BigInt { 
    int *A; 
}; 

struct BigInt bigIntVar = { 
    NULL 
}; 

printf("Number"); 
int len; 
scanf("%i", &len); 

bigIntVar.A = (int*)malloc(len * sizeof(int)); 

srand(time(NULL)); 
int i = 0; 

while (i != len) { 
    int r = rand() % 10; 
    bigIntVar.A[i] = r + 1; 

    printf("\nr:%i\n", r); 
    printf("A[i]:%d", bigIntVar.A[i]); 
    i++; 
} 
+1

Ich bin ziemlich sicher, dass die überarbeitete Strukturdefinition nicht angemessen ist. Ich könnte natürlich falsch liegen - es ist nicht klar aus der Frage, was gewünscht wird, oder warum die Disparität in der Größe der Arrays, oder ... nun, eine ganze Menge über die Frage ist nicht klar. –

+0

Ich stimme Ihnen zu, dass die Frage nicht ganz klar ist. Soll ich die Antwort entfernen? Ich denke, dass der Benutzer will bis zu 300 zufällige Anzahl unter der Anzahl in der Rdm-Array, die in diesem Fall 10 Werte hat. – Rossi88

+0

'{}' ist ein ungültiger C-Initialisierer (obwohl gcc ohne '-pedantic' es akzeptiert). Möglicherweise möchten Sie durch '{0}' ersetzen. – pmg

Verwandte Themen