Nombre occurrences dans chaque ligne d'une matrice [Résolu]

Signaler
-
Messages postés
16004
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
3 juin 2021
-
Bonjour, j'ai un peu de difficulté à trouver le nom d'ocurrences je sais coment le faire pour une ligne, mais pour faire toutes les lignes je ne sais pas.
Par exemple je veux savoir combien de fois le 7 se répete à la ligne 0 et combien de fois à la ligne 1 et ainsi de suite.
int tab[][] =
{ { 7,0,0, 0,9,5, 4,0,8 },
{ 0,0,0, 8,0,4, 3,7,0 },
{ 0,0,0, 0,0,0, 0,5,1 },
Merci pour votre aide

2 réponses

Messages postés
16004
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
3 juin 2021
549
Ok,

et bien il suffit d'englober tes 2 boucles for dans une autre boucle for qui te fera passer de ligne en ligne.
Sans oublier de remettre le nbChiffres à 0 à chaque changement de ligne
Merci beaucoup, mais j'ai essayé comme tu me l'as conseillé, mais malheureusement ça ne marche pas.


int col, temp=0, lig;
int nbChiffres[]; // vecteur de 10 compteurs
nbChiffres = new int[10];

int sud[][] =
{ { 7,0,0, 0,9,5, 4,0,8 },
{ 0,0,0, 8,0,4, 3,7,0 },
{ 0,0,0, 0,0,0, 0,5,1 },

{ 3,7,0, 4,1,2, 0,0,0 },
{ 0,4,0, 0,0,0, 0,2,0 },
{ 0,0,0, 5,3,9, 0,4,6 },

{ 6,8,0, 9,0,0, 0,0,0 },
{ 0,5,1, 2,0,3, 0,0,0 },
{ 2,0,3, 6,4,0, 0,0,7 }
};

//Déterminer le nombre d'occurrence à la ligne
for(lig=0; lig<=8;lig++) {
col=0;
for(col = 0; col <=8; col++){
temp = sud[lig][col];
nbChiffres[temp]++;
}
for(col=1; col < nbChiffres.length; col++){
if(nbChiffres[col] >= 2){
System.out.println(col +" se produit "+ nbChiffres[col]+" fois à la ligne "+lig);
}else {
if(nbChiffres[col] > 0 && nbChiffres[col] == 1){
System.out.println(col +" se produit "+ nbChiffres[col]+" fois à la ligne "+lig);
}
}
}
}


Par example ça m'affiche en autres:
"5 se produit 1 fois à la ligne 1" alors qu'il n'y a aucun 5 à la ligne 1
Messages postés
16004
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
3 juin 2021
549 > Brian
Je répète
Sans oublier de remettre le nbChiffres à 0 à chaque changement de ligne
Messages postés
16004
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
3 juin 2021
549
Bonsoir

je sais coment le faire pour une ligne

Peux tu poster le code qui le fait sur une ligne?
Pour poster un code merci de lire jusqu'au bout ce petit tuto https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Oui désolé voilà.

    
public class TestSudoku {

	public static void main(String[] args) {
		int  col, temp=0;
		
		int nbChiffres[]; // vecteur de 10 compteurs
		nbChiffres = new int[10];

		int sud[][] = 
			{		{ 7,0,0, 0,9,5, 4,0,8 },				
					{ 0,0,0, 8,0,4, 3,7,0 },
					{ 0,0,0, 0,0,0, 0,5,1 },

					{ 3,7,0, 4,1,2, 0,0,0 },
					{ 0,4,0, 0,0,0, 0,2,0 },
					{ 0,0,0, 5,3,9, 0,4,6 },

					{ 6,8,0, 9,0,0, 0,0,0 },
					{ 0,5,1, 2,0,3, 0,0,0 },
					{ 2,0,3, 6,4,0, 0,0,7 }
			};
		
		//Déterminer le nombre d'occurrence à la ligne 0
		for(col = 0; col <=8; col++){
			temp = sud[0][col];
			nbChiffres[temp]++;
		}
		for(col=1; col < nbChiffres.length; col++){
			if(nbChiffres[col] >= 2){
				System.out.println(col +" se produit "+ nbChiffres[col]+" à la ligne 0");
			}else {
				if(nbChiffres[col] > 0 && nbChiffres[col] == 1){
					System.out.println(col +" se produit "+ nbChiffres[col]+" à la ligne 0");

				}
			}
		}
	}
}