Je prends une classe d'introduction de base à C. J'ai le programme global pour fonctionner, mais il ne produit pas la sortie requise comme il se doit.Modification de valeurs entières
La tâche consiste à écrire un programme qui demande à l'utilisateur une valeur entière et de modifier l'entrée de sorte que la place 1s et 100s ait le même chiffre, quelle que soit la valeur la plus grande.
Par exemple:
1234 sera modifié pour 1434
1969 sera modifié pour 1969
2025 sera modifié pour 2525
Pour une raison quelconque, au lieu de prendre la plus grande valeur de la place 1s et 100s, le programme choisit la plus petite valeur pour modifier l'entrée de l'utilisateur.
1234 -> 1232
2025 -> 2020
1962 -> 1262
Tout conseils ou des idées sur ce qui pourrait se tromper?
#include <stdio.h>
int main() {
int myValue;
int tmp;
int oneDigit;
int hundredDigit;
int larger;
int smaller;
int factor;
printf("\nEnter an int: ");
scanf("%d", &myValue);
// Getting absolute value
tmp = (myValue < 0) ? -myValue : myValue;
// Extracting digits
oneDigit = tmp % 10;
hundredDigit = (tmp/100) % 10;
// Grabbing larger and smaller integer
larger = (oneDigit > hundredDigit) ? oneDigit : hundredDigit;
smaller = (oneDigit > hundredDigit) ? hundredDigit : oneDigit;
// Checking what to factor by
factor = (oneDigit > hundredDigit) ? 1 : 100;
// New modified digit
tmp = tmp - (larger - smaller) * factor;
printf("\nThe modified value of %d is %d\n", myValue, tmp);
return 0;
}
Nous vous remercions de votre réponse rapide. J'ai essayé votre méthode, mais quand je tape 1234, cela me donne 1236, ce qui n'est pas la sortie attendue Cependant, quand j'entre dans 1232, elle renvoie 1232, ce qui est la sortie attendue. Savez-vous pourquoi cela se passe? Même après avoir modifié les deux sections de code que vous avez indiqué était incorrect. Merci encore. –