Affichage du premier nombre et du dernier nombre d'un entier [Résolu]

Signaler
Messages postés
40
Date d'inscription
mardi 31 juillet 2018
Statut
Membre
Dernière intervention
19 février 2019
-
cptpingu
Messages postés
3804
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
30 janvier 2020
-
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

Messages postés
27629
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 février 2020
323
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/

Cordialement, 
Jordane                                                                 
Messages postés
3804
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
30 janvier 2020
95
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.


Améliorer votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
Messages postés
27629
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 février 2020
323

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
Messages postés
3804
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
30 janvier 2020
95
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.
Messages postés
40
Date d'inscription
mardi 31 juillet 2018
Statut
Membre
Dernière intervention
19 février 2019

Merci
Messages postés
40
Date d'inscription
mardi 31 juillet 2018
Statut
Membre
Dernière intervention
19 février 2019

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!
Messages postés
3804
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
30 janvier 2020
95
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.