2017-05-13 5 views
-1

Ich habe die Aufgabe, Programm zu schreiben, die ein Array zu sortieren und nach einer bestimmten Nummer suchen, der Teil, den ich bereits getan habe, Mein Problem ist, wie Initialisieren Sie das Array in der Größe, die der Benutzer mit zufälligen Werten kleiner als 500 setzt? Ich weiß, wie man das mit bekannter Größe macht, aber nicht mit unbekannter Größe? Beispiel für Eingabe/Ausgabe: "Bitte geben Sie die Größe des Arrays: 5"Initialisiert ein Array mit einer bestimmten Größe in zufälligen Werten zwischen 1 und 500 in c

Antwort

1

Dies wird Ihnen helfen.

int main(void) 
{ 
    int n,i; 
    n=rand()%500; // Get random value 
    int arr[n]; // Initialize the dynamic array 
    for(i=0;i<n;i++) 
     scanf("%d",&arr[i]); 
    // Do your stuff 
} 
+0

thanks man! aber ich brauche zufällige Werte, also ich ersetze es einfach ro rand% n? –

+2

Ein VLA ist in diesem Fall nicht die bessere Option (Sie überprüfen nicht, ob "n" eine große Zahl ist und einen Stapelüberlauf verursachen kann, siehe http://StackOverflow.com/q/7326547/1606345), warum nicht 'malloc'? –

+0

@KeineLust Sie haben recht mit der Speicherzuordnung. Aber er hat bereits den Bereich angegeben, der bis 500 reicht. –

0

Sie können etwas tun:

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

void printArray(int* p, int size) 
{ 
    for (int j = 0; j < size; ++ j) printf("%d ", p[j]); 
    printf("\n"); 
} 

int main(void) { 
    srand(time(NULL)); // Start with a random seed based on time 

    int n = 0; 
    printf("Which array size do you need?\n"); 
    if (scanf("%d", &n) != 1 || n < 1) 
    { 
     printf("Wrong input\n"); 
     exit(0); 
    }; 

    printf("Creating random array of size %d\n", n); 
    int* p = malloc(n * sizeof(*p));     // Reserve memory 
    for (int j = 0; j < n; ++j) p[j] = rand() % 500; // Generate random numbers 

    printArray(p, n); // Print the result 

    free(p);    // free the allocated memory 

    return 0; 
} 
+0

Vielen Dank alle Jungs! –

Verwandte Themen