Nombre occurrences dans chaque ligne d'une matrice

Résolu
Lucy - 27 nov. 2020 à 17:54
Whismeril
Messages postés
17467
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
28 juin 2022
- 27 nov. 2020 à 22:09
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

Whismeril
Messages postés
17467
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
28 juin 2022
599
27 nov. 2020 à 20:57
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
1
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
0
Whismeril
Messages postés
17467
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
28 juin 2022
599 > Brian
27 nov. 2020 à 22:09
Je répète
Sans oublier de remettre le nbChiffres à 0 à chaque changement de ligne
0
Whismeril
Messages postés
17467
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
28 juin 2022
599
27 nov. 2020 à 18:16
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

0
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");

				}
			}
		}
	}
}
0