2009-11-06 7 views
0

J'essaie de trouver le nombre maximum dans un tableau. J'ai créé une fonction et je suis en utilisant le code suivant:Recherche du nombre maximum dans une programmation C de tableau

int maxValue(int myArray [], int size) 
{ 
    int i, maxValue; 
    maxValue=myArray[0]; 

    //find the largest no 
    for (i=0;i) 
     { 
     if (myArray[i]>maxValue) 
     maxValue=myArray[i]; 
     } 
     return maxValue; 
} 

Cependant je reçois une erreur de syntaxe avant ) jeton. Qu'est-ce que je fais de mal et suis-je même en train de faire ça correctement? Toute aide serait grandement appréciée.

+1

votre 'for'loop dans cassé - consultez tout tutoriel livre ou en ligne sur C pour la syntaxe correcte – Christoph

+0

@hollerTrain: Avez-vous obtenu mon code de http://stackoverflow.com/questions/32920644/c-compare-numbers/32920851#32920851 et l'avez-vous tordu? –

Répondre

7

Vous devez passer un tableau valide avec au moins un membre à cette fonction:

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

int 
maxValue(int myArray[], size_t size) { 
    /* enforce the contract */ 
    assert(myArray && size); 
    size_t i; 
    int maxValue = myArray[0]; 

    for (i = 1; i < size; ++i) { 
     if (myArray[i] > maxValue) { 
      maxValue = myArray[i]; 
     } 
    } 
    return maxValue; 
} 

int 
main(void) { 
    int i; 
    int x[] = {1, 2, 3, 4, 5}; 
    int *y = malloc(10 * sizeof(*y)); 

    srand(time(NULL)); 

    for (i = 0; i < 10; ++i) { 
     y[i] = rand(); 
    } 

    printf("Max of x is %d\n", maxValue(x, sizeof(x)/sizeof(x[0]))); 
    printf("Max of y is %d\n", maxValue(y, 10)); 

    return 0; 
} 

Par définition, la taille d'un tableau ne peut pas être négatif. La variable appropriée pour les tailles de tableau dans C est size_t, utilisez-la.

Votre boucle for peut démarrer avec le deuxième élément du tableau, car vous avez déjà initialisé maxValue avec le premier élément.

+0

c'est parfait! Je suppose que je fais juste le contraire si je veux trouver le nombre le plus bas dans un tableau? – HollerTrain

+0

@HollerTrain: 'if (myArray [i]

+2

Notez que cela suppose que votre tableau a au moins un élément: http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Zero- Length.html –

5

Une boucle comporte trois parties:

for (initializer; should-continue; next-step) 

Une boucle est équivalente à:

initializer; 
while (should-continue) 
{ 
    /* body of the for */ 
    next-step; 
} 

Ainsi, le code correct est:

for (i = 0; i < size; ++i) 
+0

ce que vous avez dit à propos des trois parties est très d'informations. merci pour cette astuce! – HollerTrain

+0

@R Samuel: Je changerais "should-continue" en "condition de terminaison", car c'est ce que c'est; c'est la condition qui termine la boucle. –

1

le paren après le pour semble manquer un peu de contenu.

normalement il devrait être quelque chose comme

for (i=0; i<size; i++) 
0

comprennent:

void main() 
{ 
    int a[50],size,v,bigv; 
    printf("\nEnter %d elements in to the array: "); 

    for (v=0;v<10;v) 
    scanf("%d",&a[v]); 

    bigv=a[0]; 

    for (v=1;v<10;v ) 
    { 
    if(bigv<a[v]) 
     bigv=a[v]; 
    } 

    printf("\nBiggest: %d",bigv); 
    getch(); 
} 
Questions connexes