2011-04-02 4 views
0

ceci est un échantillon de mon code. J'obtiens la valeur pour la taille maximum. mais ma taille minimale est une valeur de poubelle. qu'est-ce que je fais malla valeur de poubelle est obtenue

#include <iostream> 
#include <fstream> 
#include <cstdlib> 
#include <string> 
#include <sstream> 
using namespace std; 

#define MAX 20 

struct DATA 
{ 
    int id; 
    string name; 
    float height; 
}numarray[MAX]; 

int main() 
{ 
    int num = 0; 
    numarray[num].height = fstr3;// contains float values from a file 

    float minimum, maximum; 
    minimum = numarray[0].height; 
    maximum = numarray[0].height; 
    for(int i = 0; i < MAX; i++) 
    { 
     { 
      if(numarray[i].height < minimum) 
      { 
       minimum = numarray[i].height; 
      } 
      else if(numarray[i].height > maximum) 
      { 
       maximum = numarray[i].height; 
      } 
     } 
     cout<< minimum<< " " << maximum<< endl; 
     return 0; 
    } 
} 
+3

assurez-vous que votre code est collé ce que vous avez fait. ça a l'air vraiment étrange. – Mat

+2

La boucle me semble correcte, mais l'exemple ne semble pas complet. D'où vient «fstr3»? Savez-vous qu'il ne fait que définir la hauteur du premier élément de la liste. Si vous republiez un exemple complet, vous obtiendrez sûrement de l'aide. – Lindydancer

+0

@Lindy, peut-être qu'il a oublié quelque chose. Voyez le supplément '{}' dans la boucle 'for'. Pourtant, ceux-ci n'affectent vraiment rien. – Muggen

Répondre

1

Poubelle à l'intérieur. Il semble que votre routine d'entrée (que vous n'avez pas publiée) peut remplir les données de manière incorrecte. Je regarderais les données d'entrée dans le débogueur (même si votre choix de débogueur est printf()).

0

Votre code suppose que le minimum est différent du maximum. Solution deuxième si devrait être seul et pas dans d'autre clause de la première.

+1

Cela pourrait gâcher le calcul max, mais pas le min, comme je lis le code. –

+0

Je viens de passer outre la ligne d'initialisation, donc j'ai supprimé la référence à init manquante dans ma première réponse. – flolo

0

en supposant que vous initialiser le tableau dans votre code réel, avec ces modifications:

#include <iostream> 
#include <fstream> 
#include <cstdlib> 
#include <string> 
#include <sstream> 
using namespace std; 

#define MAX 20 

struct DATA 
{ 
    int id; 
    string name; 
    float height; 
}numarray[MAX]; 

int main() 
{ 
    int num = 0; 
    numarray[num].height = fstr3;// contains float values from a file 

    float minimum, maximum; 
    minimum = numarray[0].height; 
    maximum = numarray[0].height; 
    for(int i = 1 /* skip 0 - already read */; i < MAX; i++) 
    { 
     if(numarray[i].height < minimum) 
     { 
      minimum = numarray[i].height; 
     } 
     // remove the else here 
     if(numarray[i].height > maximum) 
     { 
      maximum = numarray[i].height; 
     } 
    } 
    // move outside the loop 
    cout<< minimum<< " " << maximum<< endl; 
    return 0; 
} 

cela devrait être OK

Questions connexes