Voici l'entrée et la sortie que le code devrait générer:
1 4 2 5 0 CODE> LI>
- sortie:
2 code> li>
ul> Explication: Si 2 est la partition, alors: 1+ 4 = 5 (LHS) code> et 5 + 0 = 5 (RHS) code> devrait imprimer 2 code>, mais dans mon cas, je ne reçois pas la sortie. P> J'ai essayé mon code avec la logique .. Le n-ème élément serait présent quelque part entre le déployer. Ainsi, compte tenu de la somme de l'élément d'ARR jusqu'à la n-ème élément sera lhs et de la n-ème élément, il serait jusqu'à la fin de l'ARR qui est rhs. J'ai également ajouté une boucle tandis que l'élément pointant n. p> xxx pré> p>
3 Réponses :
Je vais vous donner quelques astuces qui devraient vous guider vers la solution: P>
totassum - partialsum - a [i] = partialsum code>, puis la position i em> est votre réponse et a [i] em> est sa valeur. li>
ol>
Tout d'abord, vous souhaitez réinitialiser J, k, chaque itération avec cette méthode, si je comprends correctement.
Deuxièmement, la seconde pour la boucle augmente n au lieu de moi, pour une raison quelconque. P>
Troisième, vous déclarez également ARR2, ne pas l'initialiser et ajouter des valeurs dans ARR2 à K pour une raison quelconque. P>
Vous incluez aussi la médiane. Essayez n = 2. p>
j = arr [2] + arr [3] + arr [4] = 2 + 5 + 0 = 7
k = arr [0] + arr [1] = 1 + 4 = 0 p>
Modification proposée en boucle (pour maintenir la même méthode): P>
while (n <= 5) { j = 0; k = 0; for (i = n+1; i < 5; i++) { j+= arr[i]; } for (i = 0; i < n; i++) { k+= arr[i] } if (k == j) { cout << "\n" << arr[n]; break; //you should end the for loop here } n++; }
Lorsque vous sommez le côté droit de la matrice, vous commencez à l'élément Equilibrium:
Supposons La sommation du côté droit de la matrice commencera à Un moyen rapide et facile de déboguer des problèmes tels que celui-ci est d'imprimer quelle étape est-ce que fait (dans votre cas, quel indice cueille à la somme) afin que vous puissiez rapidement diagnostiquer si vous faites quelque chose que vous n'êtes pas censé. P> aussi, votre méthode actuelle n'est pas la plus optimale approche mais c'est un bon endroit pour commencer. Je vous exhorte à essayer une approche différente après avoir obtenu cette solution au travail. P> p> n = 2 code> et votre entrée est
[1, 4 , 2, 5, 0] code> p>
i = 2 code>, ainsi ce sera
2 + 5 + 0 code> pas
5 + 0 code>. p>
Non liaison: Avant d'avoir trop d'argent, giv Pourquoi un simple" monde Hello World "n'est-il pas compilé avec Turbo C ++? a lu afin que vous ayez une certaine prise de conscience des problèmes que vous allez probablement utiliser Turbo C ++.
Rappel obligatoire: Turbo C ++ est horriblement obsolète, vous devez passer à un compilateur moderne ...
Sur l'UPSE TURBOC ++ est livré avec le fantastique turbo débogueur, un outil qui vous permettra de contrôler l'exécution de votre programme et d'enquêter sur ses variables. Cela facilite beaucoup plus facilement ce que le programme fait vraiment (par opposition à ce que vous voulez faire). Notez que la grande majorité des cuillères à outils modernes viennent également avec un débogueur.
Je ne donnerai pas la réponse complète, mais vous pouvez y parvenir avec une seule boucle (ou tout le temps) où vous accumulez une somme du début et de la fin de votre matrice - c'est-à-dire que vous n'avez pas besoin de
pour Code> Les boucles ici, pensez simplement à la condition dont vous avez besoin pour votre
pendant code> boucle.
Ceci semble un peu funky:
pour (i = n; i <5; n ++) j + = arr [i]; code>
Ceci s'appelle un indice d'équilibre et il y a beaucoup de Exemples ici sur Overflow de pile et chez Code Rosetta .
FWIW, une approche moderne ressemblerait à: Coliru.stacked-crooked.com/a/542244CF4ECF27F7 a>