Disons que je dois formater la sortie d'un tableau pour afficher un nombre fixe d'éléments par ligne. Comment puis-je faire cela en utilisant l'opération de module?
En utilisant C++, le code ci-dessous fonctionne pour afficher 6 éléments par ligne mais je ne sais pas comment et pourquoi cela fonctionne?
for ( count = 0 ; count < size ; count++)
{
cout << somearray[count];
if( count % 6 == 5) cout << endl;
}
Et si je veux afficher 5 éléments par ligne? Comment trouver l'expression exacte nécessaire?
en expression C++ a % b
renvoie le reste de la division de a par b (s’ils sont positifs. Pour les nombres négatifs, le signe du résultat est défini par la méthode d’implémentation). Par exemple:
5 % 2 = 1
13 % 5 = 3
Avec cette connaissance, nous pouvons essayer de comprendre votre code. Condition count % 6 == 5
_ signifie que la nouvelle ligne sera écrite lorsque le reste du nombre de divisions par 6 sera égal à cinq. Combien de fois cela arrive-t-il? Exactement 6 lignes (exercice: écrivez les nombres 1..30 et soulignez ceux qui remplissent cette condition), à partir de la 6 ème ligne (compte = 5).
Pour obtenir le comportement souhaité de votre code, vous devez changer la condition en count % 5 == 4
, ce qui vous donnera une nouvelle ligne toutes les 5 lignes, à partir de la 5ème ligne (compte = 4).
En gros, module vous donne le reste simple Exemple en maths, que reste-t-il/reste de 11 divisé par 3? la réponse est 2
pour la même chose que C++ a opérateur de module ('%')
Code de base pour l'explication
#include <iostream>
using namespace std;
int main()
{
int num = 11;
cout << "remainder is " << (num % 3) << endl;
return 0;
}
Qui affichera
le reste est 2
Ce projet JSFiddle peut vous aider à comprendre le fonctionnement du module: http://jsfiddle.net/elazar170/7hhnagrj
function modulus(x,y){
var m = Math.floor(x / y);
var r = m * y;
return x - r;
}
Cela vous donne le reste d'une division.
int c=11, d=5;
cout << (c/d) * d + c % d; // gives you the value of c
Vous pouvez penser à l'opérateur de module comme vous donnant un reste. count% 6 divise 6 autant de fois que vous le pouvez et vous donne un reste de 0 à 5 (ce sont tous les restes possibles car vous en avez déjà divisé 6 autant que vous le pouvez). Les éléments du tableau sont tous imprimés dans la boucle for, mais chaque fois que le reste est égal à 5 (tous les 6 éléments), il génère un caractère de nouvelle ligne. Cela vous donne 6 éléments par ligne. Pour 5 éléments par ligne, utilisez
si (compte% 5 == 4)