Nombre occurrences dans chaque ligne d'une matrice

Résolu
Lucy - 27 nov. 2020 à 17:54
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 - 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 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
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 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656 > 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 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
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
Rejoignez-nous