-2
votes

Pour ajouter les éléments dans chaque (3) matrices et si la somme n'est pas égale, supprimez le dernier élément de la matrice qui a la plus haute somme.

J'ai trois tableaux, je vais ajouter tous les éléments dedans. Si la somme des éléments dans tous les trois tableaux est égale, i.e S1 = S2 = S3, la condition est satisfaite. Sinon, nous devons supprimer la dernière valeur de la matrice qui a la somme la plus élevée, puis une fois à nouveau toutes les trois tableaux pour vérifier si toutes les sommes des tableaux sont égales. Ce processus devrait être répété jusqu'à ce que la condition soit satisfaite. Aimablement m'aider avec ça. mon code Java est: xxx


3 commentaires

Je pensais que c'était assez clair, il veut changer et comparer les tableaux jusqu'à ce que la condition soit remplie


Oui, je veux vérifier la somme à plusieurs reprises jusqu'à ce que la condition soit remplie


Votre code ne fonctionne-t-il pas? Ajouter un cas d'erreur. Essayez de déboguer et de revenir avec une question spécifique si vous ne pouvez pas résoudre le problème vous-même.


3 Réponses :


0
votes

Si j'ai bien compris, ce que vous recherchez, cette méthode reviendra TRUE, si vous y passez vos trois matrices, si la condition que celle spécifiée est remplie (la somme d'éléments dans les matrices est égale, sinon supprimer dernier élément de plus grand et de revérifier pour la condition). xxx


0 commentaires

0
votes
     public static void main(String[] args) {

        //sample arrays
        int[] arr1 = {10,20,30};
        int[] arr2 = {20,10,50};
        int[] arr3 = {15,15,10};

        //arrays last index
        int arr1LastIndex = arr1.length - 1;
        int arr2LastIndex = arr2.length - 1;;
        int arr3LastIndex = arr3.length - 1;;

        boolean whileCondition = false;
        boolean result = false;

        while(!whileCondition){

            int sum1 = 0;
            int sum2 = 0;
            int sum3 = 0;

            for(int num : arr1){
                sum1 += num;
            }

            for(int num : arr2){
                sum2 += num;
            }

            for(int num : arr3){
                sum3 += num;
            }

            //check which array sum is largest and make it's last element equal to 0
            if(sum1 > sum2 && sum1 > sum3){
                arr1[arr1LastIndex] = 0;
                arr1LastIndex -= 1;
            }else if(sum2 > sum1 && sum2 > sum3){
                arr2[arr2LastIndex] = 0;
                arr2LastIndex -= 1;
            }else{
                arr3[arr3LastIndex] = 0;
                arr3LastIndex -= 1;
            }

            //checks if all sums are equal
            if(sum1 == sum2 && sum2 == sum3){
                whileCondition = true;
                result = true;
            }

            //checks if the sums we're never equal after going through the whole array
            if(arr1LastIndex < 0 || arr1LastIndex < 0 || arr3LastIndex < 0){
                whileCondition = true;
                result = false;
            }
        }

        if (result){
            System.out.println("Condition was met!");
        }else{
            System.out.println("Condition was NEVER met!");
        }
    }

0 commentaires

2
votes

Essayez cette logique, je n'ai pas de bon compilateur en ce moment mais essayez si vous faites face à un problème de problème

import java.util.*;
public class Main{

public static void main(String[] args) 
{
    int n1, n2 , n3, i;
    int count=0;
    int sum1=0,sum2=0,sum3=0;

    Scanner s = new Scanner(System.in);
    n1=s.nextInt();
    n2=s.nextInt();
    n3=s.nextInt();

    int[] arr1=new int[n1];
    int[] arr2=new int[n2];
    int[] arr3=new int[n3];

    for(i=0;i<n1;i++) 
        arr1[i]=s.nextInt();
    for(i=0;i<n2;i++) 
        arr2[i]=s.nextInt();
    for(i=0;i<n3;i++) 
        arr3[i]=s.nextInt();

    while(count==0){    

    for(i=0;i<n1;i++) {
        sum1+=arr1[i];
    }
    for(i=0;i<n2;i++) {
        sum2+=arr2[i];
    }
    for(i=0;i<n3;i++) {
        sum3+=arr3[i];
    }

    if(sum1==sum2&&sum2==sum3) {
        count++;
    }
    else {
        if(sum1>sum2&&sum1>sum3) {
            arr1[n1-1]=0;
        }
        if(sum2>sum1&&sum2>sum3) {
            arr2[n2-1]=0;
        }
        if(sum3>sum1&&sum3>sum2) {
            arr3[n3-1]=0;
        }

    }
}
    if(count>0){
        System.out.println("Condtion Satisfied");
    }

}
}


2 commentaires

Travailler, merci pour la simple mise en œuvre aussi :)


Bienvenue @stonecoldCold :)