IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Somme du résultat multiple d'une conversion


Sujet :

C

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2002
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 109
    Points : 78
    Points
    78
    Par défaut Somme du résultat multiple d'une conversion
    Bonjour,

    Sur un petit programme de conversion d'une chaîne, je ne parviens pas à récupérer les données affichées à l'écran.
    Et je souhaiterais pourtant en faire la somme totale.

    J'ai un souci de méthodologie :

    PREMIERE OPTION :
    Dois-je placer ces données dans un fichier .txt, pour les lire ensuite une à une.
    Le but final étant d'en obtenir bien-sûr la somme totale.
    Si oui, comment ?

    DEUXIEME OPTION :
    Est-ce que "fgets" me permettrait de récupérer DIRECTEMENT la série d'entiers (résultat de la conversion de chaque caractère) à l'écran ?

    TROISIEME OPTION :
    Dans la logique, je devrais pouvoir tenter de récupérer chaque caractère converti comme une variable (c1, c2, c3, c4, c5, ...) et en faire ensuite une banale somme.

    D'AUTRES OPTIONS ? :
    Je continue à chercher sur différents sites (Developpez, Openclassroms, ...), diverses FAQs, divers tutos textes ou vidéos.

    J'en appelle à votre indulgence car j'apprends en autodidacte et je fais de mon mieux.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    # include <stdio.h>
    # include <string.h>
     
    int main(int argc, char argv)
    {
    	char nom[100];
    	int longueurChaine = 0;
     
    	printf("Veuillez entrer votre nom :\n");
    	scanf("%s", &nom);
     
    	for (int i = 0; i <= strlen(nom); i++)
    	{
    		printf("%d\n", nom[i]);
    	}
     
    	return 0;
    }
    Cordialement.

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Tu peux déjà oublier la second option.
    La troisième me paraît la meilleure, mais peut elle-même être superflue: Tu peux calculer la somme sans mémoriser les valeurs:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    # include <stdio.h>
    # include <string.h>
     
    int main(int argc, char argv)
    {
    	char nom[100];
    	char *pLF;
    	int somme = 0;
     
     
    	printf("Veuillez entrer votre nom :\n");
    	fgets(nom, 100, stdin);
    	//Retire le \n si l'on a tapé moins de 99 caractères, droppe le reste de la ligne si on en a tapé plus
    	if((pLF=strchr(nom, '\n'))!=NULL)
    		*pLF = '\0';
    	else
    	{
    		int c;
    		while((c=fgetc(stdin))!='\n' && c!=EOF) {}
    	}
     
    	for (int i = 0; nom[i]!='\0'; i++)
    	{
    		int valeurCarac = (unsigned char)nom[i];
    		somme += valeurCarac;
    		printf("%d\n", valeurCarac);
    	}
    	printf("Somme: %d\n", somme);
     
    	return 0;
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2002
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 109
    Points : 78
    Points
    78
    Par défaut
    Médinoc, je te remercie très sincèrement.
    Cela correspond exactement à ce que je cherchais à obtenir depuis ... plusieurs jours par des chemins différents et malheureusement qui s'avérèrent sans issue.

    Je suis en train d'étudier ton code avec beaucoup d'attention.

    Pour bien comprendre à quoi servait le "stdin", j'ai fait des recherches et ai trouvé ce tuto très explicite : https://emmanuel-delahaye.developpez...tes-langage-c/

    Grâce à toi, j'ai appris beaucoup en décomposant ton code pour le commenter.
    Du coup, je lis les ... 96 pages du tuto.


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher les résultats nuls d'une requête somme
    Par vorjan dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 08/08/2008, 01h54
  2. Etat, Somme de résultat d'une fonction
    Par choubak dans le forum IHM
    Réponses: 5
    Dernier message: 26/07/2007, 08h13
  3. Somme des résultats d'une requete
    Par Nathan dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 29/06/2006, 08h52
  4. Somme des résultat d'une requete
    Par Nathan dans le forum Langage SQL
    Réponses: 3
    Dernier message: 29/06/2006, 08h45
  5. Multiplication d'une somme d'un RS
    Par flo456 dans le forum ASP
    Réponses: 2
    Dernier message: 24/02/2006, 14h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo