2017-09-04 1 views
-2

Ok, voici mon problème. J'ai un constructeur de véhicule avec plusieurs specs, et un tableau de classe qui enregistre des véhicules.C# Faire une somme des résultats d'une recherche dans un tableau

Dans mon formulaire, je souhaite que l'utilisateur recherche dans ce tableau une valeur spécifique (dans ce cas, il saisira le type de véhicule et l'année de l'achat, cherchant ainsi le tableau et trouvant des correspondants , il doit alors choisir leur prix d'acquisition et de vente) et il doit retourner la somme des bénéfices.

Ou d'une manière plus simple: Profit = prix de vente - prix d'acquisition.

Le code que j'ai jusqu'ici montre le bénéfice individuellement et ensuite la somme des bénéfices, comment puis-je obtenir juste ce dernier?

int i; 
     bool found = false; 
     double lucro = 0; 
     for (i = 0; i < viaturas.NumElementos; i++) 
      if (viaturas.get(i).CVTipoVeículo == Int32.Parse(cbtipoveiculo.Text)) 
      { 
       if (viaturas.get(i).CVDataVenda.Year == Int32.Parse(tbanopesquisa.Text)) 
       { 
        double a = viaturas.get(i).CVPreçoVenda; 
        double b = viaturas.get(i).CVPreçoAquisição; 
        lucro += a - b; 
        found = true; 
        MessageBox.Show("O total de lucro das vendas em " + viaturas.get(i).CVDataVenda.Year + " foi de: " + lucro + "€", "Lucro", MessageBoxButtons.OK); 

       } 
      } 
     if (found == false) 
     { 
      MessageBox.Show("Conjunto de viaturas não existente!", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); 
      LimpaCampos(); 
     } 
+1

Vous devez simplement déclarer une autre variable appelée _double Total = 0; _ alors dans la boucle écrire _Total + = lucro; _ à la fin vous aurez le total – Steve

+0

Vous devriez utiliser les extensions de bibliothèque System.Linq pour y parvenir. C'est plus clair et assez rapide. On dirait que vous n'êtes pas familier avec C#, ai-je raison? –

+1

@Steve Je l'ai fait comme ça, et j'ai encore plus d'un message de profits individuels. –

Répondre

0

Si vous voulez une valeur où vous avez tout le profit résumé puis modifiez votre code à l'

int i; 
    bool found = false; 
    double lucro = 0; 
    for (i = 0; i < viaturas.NumElementos; i++) 
     if (viaturas.get(i).CVTipoVeículo == Int32.Parse(cbtipoveiculo.Text)) 
     { 
      if (viaturas.get(i).CVDataVenda.Year == Int32.Parse(tbanopesquisa.Text)) 
      { 
       double a = viaturas.get(i).CVPreçoVenda; 
       double b = viaturas.get(i).CVPreçoAquisição; 
       lucro += a - b; // Add it instead of overwriting 

       found = true; 
       //falta-me pô-lo a somar todos os lucros. 

      } 
     } 
// Show a MessageBox here with a text (Sorry, I don't speak your language) that outputs your 'lucro' variable 

Si ce qui suit est pas ce que vous vouliez dire, alors je ne sais pas comment vous pouvez mettre tous les bénéfices en une seule valeur

+1

Cela fonctionne en quelque sorte. mais maintenant je reçois deux boîtes à message, la première montre un bénéfice et la seconde montre la somme des profits. (PS désolé pour la langue: /) –

+0

Vous devez supprimer le premier MesageBox dans l'instruction for et ne laisser que le dernier qui affiche la somme. – Twometer