Affichage du premier nombre et du dernier nombre d'un entier

Résolu
mikegamer1 Messages postés 40 Date d'inscription mardi 31 juillet 2018 Statut Membre Dernière intervention 19 février 2019 - Modifié le 26 août 2018 à 12:10
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 27 août 2018 à 12:09
Salut

J'ai tjrs un pb avec ce programme.
Comme le dit le titre j'ai décidé de m'y prendre en convertissant l'entier fournit en chaîne de caractères.
Et voici mon code:
Je rappèle à l'avance que je l'ai fait sur un compilateur mobile c que j'ai installé sur mon téléphone.
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int nbre;
    char chaine[100];
/*


*chaine est un tableau qui contiendra int nbre en chaine de caracteres.

*/
    int taille;
/*


*taille est la taille de int nbre.

*/
    int p,d;
/*


*p désigne le premier chiffre à afficher et d le dernier.

*/
    printf("Nombre:");
    scanf("%d",&nbre);
/*


*le nombre entré sera mis sous forme de chaine de caracteres appelé chaine.

*/
    sprintf(chaine,"%d",nbre);
/*


*on affiche chaine pour voir si c´est bon

*/
    printf("%s",chaine);
    
/*


*on connaitra ensuite la taille de nbre afin de pouvoir indexé les premier et dernier nbre de chaine

*/
    taille=sizeof(nbre);
 //On affiche la taille de nbre   
    printf("\n\t%d",taille);
/*


*les valeurs de p & d dans chaine

*/
    p=chaine[0];
    d=chaine[taille-1];
//AFFICHAGE DU RÉSULTAT FINAL.
    printf("\nle premier chiffre est %d et le dernier est %d",p,d);
    return 0;
}

Et à l'affichage j'ai ceci par exemple :

Nombre:35678
35678
4
le premier chiffre est 51 et le dernier est 55

Ou encore:


Aidez moi à trouvez la faille svp.



7 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
Modifié le 26 août 2018 à 13:10
Bonjour,

Déjà... un nombre est composé de chiffres....
Toi tu veux le premier et le dernier chiffre du nombre saisi par l'utilisateur.

Ensuite... le résultat retourné me semble tout à fait correct...
hormis pour le d
Je pense que c'est simplement
d=chaine[taille];

Regarde donc ici pour comprendre :
https://theasciicode.com.ar/

1
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
Modifié le 26 août 2018 à 16:27
Bonjour.

@jordan: Le dernier élément d'un tableau est toujours taille - 1, et non taille

Le souci vient juste du mode d'affichage, %c et non %d, car sinon tu auras la valeur du caractère ascii et non sa représentation ('A' => 65, '0' => 48, '1' => 49, etc...)

Sinon, utilise simplement des entiers. Tu demandes un entier, avec %d, et tu déduis le premier et dernier chiffre avec des divisions et des modulos.

1
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
Modifié le 26 août 2018 à 17:00

Le souci vient juste du mode d'affichage, %c et non %d, car sinon tu auras la valeur du caractère ascii et non sa représentation ('A' => 65, '0' => 48, '1' => 49, etc...)

Et tu crois que le lien que je lui ai donné parle de quoi ??

JordanE
1
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
26 août 2018 à 23:05
Et tu crois que le lien que je lui ai donné parle de quoi ??


De code ascii. Pas forcément de représentation via printf. Ça peut sembler évident, mais pas forcément pour un débutant. Le complément ne faisait pas de mal.
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mikegamer1 Messages postés 40 Date d'inscription mardi 31 juillet 2018 Statut Membre Dernière intervention 19 février 2019
26 août 2018 à 13:08
Merci
0
mikegamer1 Messages postés 40 Date d'inscription mardi 31 juillet 2018 Statut Membre Dernière intervention 19 février 2019
27 août 2018 à 01:52
Justement le problème est que j'ai voulu résoudre cela par les divisions et les modulos mais rien! Je ne trouvais pas d'idée.
Merci si vous pouvez un peu m'orienter!
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
27 août 2018 à 12:09
Le modulo (reste de la division) te permet de garder les chiffres de droite.
Ex: 12345
12345 % 10 => 5
12345 % 100 => 45
12345 % 1000 => 345


La division entière (les chiffres après la virgule ne sont pas gardés), te permet de supprimer les chiffres de droite.
Ex: 12345
12345 / 10 => 1234
12345 / 100 =>123
12345 / 1000 => 12


En mélangeant les deux, tu peux obtenir ce que tu veux.
Un modulo pour le chiffre de droite.
Des divisions (boucle) + un modulo pour le chiffre de gauche.
-1
Rejoignez-nous