A voir également:
- Negative c
- Negative +62 - Guide
- Excel datedif negative - Forum Excel
- Excel heure négative ✓ - Forum Excel
- Negative 0035 ✓ - Forum Mobile
- Ne pas afficher valeur négative excel - Forum Excel
1 réponse
Utilisateur anonyme
10 nov. 2018 à 10:07
10 nov. 2018 à 10:07
Bonjour
je ne suis pas un spécialiste de C, mais plusieurs choses m'interpellent dans ton code.
D'abord, par convention, les noms de variables commencent par une minuscule.
Ici
j varie forcément de 0 à 7, puisque c'est ce qu'un for fait, et toi tu refais la même chose avec i.
Ceci
fonctionne pareil, mais avec une variable de moins.
Plus loin tu utilises un do while, dans lequel tu fais varier i, un for est plus adapté.
Au fait, le i++ dans le for, ça veut dire i = i + 1, et ça marche partout, pas juste dans la déclaration du for.
Et ceci ne cherche pas le négatif le plus récurrent, ça compte le nombre de fois ou j == i (et encore chez moins ur visual studio, ça plante)
Je te conseille de prendre un papier et un crayon, d'écrire 8 nombres, de définir les étapes qui te permettent de définir quel est le négatif le plus récurent et ensuite de le traduire en algorithmie afin d'en faire du C
je ne suis pas un spécialiste de C, mais plusieurs choses m'interpellent dans ton code.
D'abord, par convention, les noms de variables commencent par une minuscule.
Ici
for(J=0;J<8;J++) { printf (" donner un entier "); scanf("%i",&T[I]); I=I+1; }
j varie forcément de 0 à 7, puisque c'est ce qu'un for fait, et toi tu refais la même chose avec i.
Ceci
for(j=0;j<8;j++) { printf (" donner un entier "); scanf("%i",&T[j]);//utilisation de j comme indice du tableau }
fonctionne pareil, mais avec une variable de moins.
Plus loin tu utilises un do while, dans lequel tu fais varier i, un for est plus adapté.
for(i=0; i<8; i++) { if (T[i] == NbCh) Der_oc = i; }
Au fait, le i++ dans le for, ça veut dire i = i + 1, et ça marche partout, pas juste dans la déclaration du for.
Et ceci ne cherche pas le négatif le plus récurrent, ça compte le nombre de fois ou j == i (et encore chez moins ur visual studio, ça plante)
for (i = 0; i <= 8; i++) une boucle de { if (T[i] < 0) { for (j = 0; j <= i; i++) { if (j == (i)) { NPR = i; nbrec = nbrec + 1; } } } }
Je te conseille de prendre un papier et un crayon, d'écrire 8 nombres, de définir les étapes qui te permettent de définir quel est le négatif le plus récurent et ensuite de le traduire en algorithmie afin d'en faire du C
Modifié le 12 nov. 2018 à 10:27
ce code tente d'accéder à la dernière itération à T[8], qui déborde la mémoire allouée au tableau T, dont les indices valables ne vont que de 0 à 7. Donc, la condition d'arrêt devrait être et pas ...
La boucle imbriquée suivante peut aussi être en cause : elle va de l'indice 0 représenté par à l'indice courant inclus représenté par , mais ne fait jamais varier , qui reste à 0, alors que est incrémenté et augmente donc de plus en plus... Il faudrait corriger cette boucle.
Bien sûr, comme le dit exactement Whismeril le test if n'est pas pertinent, il faut tester les valeurs du tableau, et pas leurs indices. De plus, il faudra conserver le nombre négatif et son nombre d'occurrences dans des variables de traitement, permettant de comparer, en fin de boucle, le résultat obtenu par rapport aux comparaisons précédentes stockées dans des variables de résultats.
Enfin, il faudrait décider comme traiter (ou si on traite) le cas où plusieurs nombres négatifs différents sont saisis un même nombre de fois et correspondent au nombre maximum d'occurrences.
12 nov. 2018 à 11:20
Il y a un autre truc qui d'une façon ou d'une autre risque de merdouiller
c'est un for ou J commence à 0, qu'il doit être inférieur à I et I augmente.
12 nov. 2018 à 14:01
La boucle imbriquée suivante peut aussi être en cause : for(J=0;J<=I;I++) elle va de l'indice 0 représenté par J à l'indice courant inclus représenté par I, mais ne fait jamais varier J, qui reste à 0, alors que I est incrémenté et augmente donc de plus en plus... Il faudrait corriger cette boucle.
:-)
12 nov. 2018 à 19:01