2011-10-10 6 views
-2
int highNum = 0; 
int m; 
int list[4] = {10, 4, 7, 8}; 
    for (m = 0 ; m < size ; m++); 
    { 
     if (list[m] > highNum) 
      highNum = list[m]; 
      cout << list[m]; 
    } 
cout << highNum; 

J'essaie de trouver une simple boucle pour stocker une valeur maximale d'un tableau, et j'ai écrit cela en pensant que cela fonctionnerait, mais pour une raison quelconque au début de la boucle for stocke la variable m comme 4 et quitte la boucle. Est-ce que quelqu'un peut m'aider?Trouver la valeur maximale dans un tableau

+0

qu'est-ce que 'size'? L'avez-vous défini comme 4? En outre, votre indentation est trompeuse, vous faites 'cout << liste [m];' à chaque passage dans la boucle. – Fezvez

+0

Ya désolé, j'ai mis la taille à 4 – classISover

+1

Essayez d'utiliser des accolades pour tous si les déclarations, même triviales. Cela facilite la maintenance, de sorte que si vous ajoutez une ligne supplémentaire dans le futur, vous ne l'ajouterez pas accidentellement en dehors de la portée de l'instruction if. –

Répondre

0

Vous avez un point-virgule après votre déclaration for:

for (m = 0 ; m < size ; m++); 
{ 

Cela devrait être:

for (m = 0 ; m < size ; m++) 
{ 
3
int highNum = 0; 
int m; 
int list[4] = {10, 4, 7, 8}; 
    for (m = 0 ; m < size ; m++); // <-- semicolon? 
    { 
     if (list[m] > highNum) 
      highNum = list[m]; 
      cout << list[m]; 
    } 
cout << highNum; 

En regardant votre empreinte, vous pouvez avoir oublié une paire de { ... } pour la déclaration et if.

0

vous mettez un superflu à la fin ; dans:

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

Edit: Code de travail avec quelques autres << endl;

int size = 4; 
int highNum = 0; 
int m; 
int list[4] = {10, 4, 7, 8}; 
for (m = 0 ; m < size ; m++) 
{ 
    if (list[m] > highNum) 
     highNum = list[m]; 
    cout << list[m] << endl; 
} 
cout << highNum << endl; 
10

À moins que vous faites cela pour les devoirs et doivent écrire la boucle, il suffit d'utiliser std::max_element, comme dans:

int list[4] = {10, 4, 7, 8}; 
std::cout << *std::max_element(list, list+4); 

... ou mieux, éviter coder en dur la longueur:

int list[] = {10, 4, 7, 8}; 
std::cout << *std::max_element(std::begin(list), std::end(list)); 
1

Il y a un ; juste après la fermeture de parenthèses de votre boucle: for (m = 0 ; m < size ; m++);

Les instructions à l'intérieur du bloc (à l'intérieur des accolades) ne sont exécutées qu'après la boucle rien pour la taille nombre de fois et cela aussi une seule fois.

Vous avez également manqué une paire de { ... } pour l'instruction if.

Questions connexes