2017-08-09 3 views
-8

Le programme que je compilait ne me montre pas la sortie correctene me montre pas la sortie correcte

le code est

using System; 

namespace minsum 
{ 
    class MainClass 
    { 
     public static void Main (string[] args) 
     { 
      string[] arr_temp = Console.ReadLine().Split(' '); 
      int[] arr = Array.ConvertAll(arr_temp,Int32.Parse); 
      int i=0; 
      long[] cal = new long[5]; 
      long max = 0; 
      long min = 0; 
      while(i < arr.Length) 
      { 
       for(int j=0; j<arr.Length; j++) 
       { 
        cal[i] += arr [j]; 
       } 
       cal [i] = cal [i] - arr [i]; 
       i++; 
      } 
      for (int l = 0; l < arr.Length; l++) 
      { 
       Console.WriteLine (cal [l]); 
      } 
      for (int k = 0; k < arr.Length; k++) 
      { 
       max = cal [0]; 
       min = cal [0]; 
       if (cal[k] > max) 
       { 
        max = cal [k]; 
       } 
       else if (cal [k] < min) 
       { 
        min = cal [k]; 
       } 

      } 
      Console.WriteLine ("finalmax: "+ max); 
      Console.WriteLine ("finalmin: "+ min); 
     } 
    } 
} 

l'entrée i donné au programme est 573261094 759641832 819230764 396285104 364801279 et la sortie correcte sera max: 2548418794 et min: 2093989309 mais il me montre une mauvaise min: 2516934969 enter image description here

+2

Pourquoi ne pas utiliser Math.Max ​​et Math.Min? Aussi comment pouvons-nous aider quand nous ne savons pas à quoi sert le calcul? – john

+0

@john j'ai trouvé comment la réponse et merci pour votre aide – pkarthicbz

Répondre

0

Dans votre troisième boucle, vous remettre à zéro les valeurs de min et max sur tous les itération. Déplacez ces deux lignes directement au-dessus de votre troisième boucle et votre problème sera résolu.

// Initialize max and min here instead of in your loop 
max = cal [0]; 
min = cal [0]; 

for (int k = 0; k < arr.Length; k++) 
{ 
    if (cal[k] > max) 
    { 
     max = cal [k]; 
    } 
    else if (cal [k] < min) 
    { 
     min = cal [k]; 
    } 

}