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 :

Taux en pourcentage langage C


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    avril 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : avril 2021
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Taux en pourcentage langage C
    Bonsoir à tous,

    Je me présente à vous, j'ai 62 ans passionné d'informatique depuis 1999. J'ai tester linux, windows et finalement revenu sur Mac.
    Certains me disent fou car j'apprends le C avec le livre de Mathieu Nébra.
    Ils me disent le C te servira à rien alors que je lis que c'est une base solide. Donc...

    Je vous met en copie le code source d'un programme en C dont je débute d'ailleurs ; et j'ai un soucis je voudrais que le taux soit exprimé en pourcentage.
    Et là je ne sais pas faire.

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    //
    //  main.c
    //  CT1retraite
    //
    //  Created by proux on 17/04/2021.
    //
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
     
    int main(int argc, char *argv[])
    {
        int retraite = 0, taux = 0, salaire = 0, trimestre = 0;
        double coefficient = 0;
     
     
     
      printf("Entrez le coefficient : ");
      scanf("%lf", &coefficient);
      printf("Entrez les trimestres : ");
      scanf("%d", &trimestre);
     
      taux = coefficient * trimestre;
        printf("%lf * %d = %d\n", coefficient, trimestre, taux);
     
      printf("Entrez le taux : ");
      scanf("%d", &taux);
      printf("Entrez le salaire : ");
      scanf("%d", &salaire);
     
      // On fait le calcul :
     
      retraite = taux * salaire;
     
      // Et on affiche la multiplication à l'écran :
     
      printf ("%d * %d = %d\n", taux, salaire, retraite);
     
      return 0;
    }
    Voici l'exécution du programme dans le terminal sous MacOS

    Last login: Sat Apr 17 20:54:05 on ttys001
    /Users/proux/Desktop/CT1retraite ; exit;
    proux@Mac-mini-de-proux ~ % /Users/proux/Desktop/CT1retraite ; exit;

    Entrez le coefficient : 0.449
    Entrez les trimestres : 150
    0.449000 * 150 = 67
    Entrez le taux : 67
    Entrez le salaire : 1000
    67 * 1000 = 67000
    Saving session...
    ...copying shared history...
    ...saving history...truncating history files...
    ...completed.

    [Opération terminée]
    Merci à vous tous de m'aider si vous pouvez.

    Bruno.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    libre
    Inscrit en
    juin 2019
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : libre

    Informations forums :
    Inscription : juin 2019
    Messages : 44
    Points : 27
    Points
    27
    Par défaut
    Je ne suis pas sur

    change ces deux ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // On fait le calcul :
     
    retraite = taux * salaire / 100 ;
     
    // Et on affiche la multiplication à l'écran :
     
    printf ("%f %% * %d = %d\n", (float)taux/100, salaire, retraite);

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : février 2006
    Messages : 8 964
    Points : 24 570
    Points
    24 570
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par bruno proux Voir le message
    J'ai tester linux, windows et finalement revenu sur Mac.

    Certains me disent fou car j'apprends le C avec le livre de Mathieu Nébra.
    Ils me disent le C te servira à rien alors que je lis que c'est une base solide. Donc...
    On ne peut pas forcément dire que ça ne servira à rien. Un langage est un langage et s'il continue à être utilisé aujou'd'hui c'est que fatalement il sert. Comme le disait Herbert Mayer "Aucun langage de programmation n'est parfait. Il n'existe même pas un langage meilleur que d'autre ; il n'y a que des langages en adéquation ou peu conseillés pour des buts particuliers".
    Le C est un langage ultra rapide. Il tient sa vitesse du fait qu'il ne contrôle absolument rien de ce que demande le dev, dans une philosophie que se résume à "le dev sait ce qu'il fait". Le dev demande un truc, il tentera alors de faire le truc sans vérifier si le truc est/n'est pas licite. Cela veut dire qu'il ne vérifiera pas si, quand on écrit dans tab[10] si l'indice "10" est/n'est pas dans les limites du tableau. Cela rend un programme ultra rapide mais si ledit programme n'est pas écrit avec une rigueur absolue, il pourra potentiellement faire n'importe quoi (on nomme ce comportement un "comportement imprévisible" ou "UB" pour "Undefined Behavior").
    C'est aussi un langage ultra bas-niveau (à peine au dessus de l'assembleur). Cela signifie que tu ne pourras pas développer très rapidement. Rien que pour ajouter un nouvel élément dans un tableau qui n'a pas assez de place et qu'il faut alors agrandir il faut grosso-modo 5 lignes (sous réserve en plus que le tableau ait été au départ prévu pour être dynamique!!!) là où dans d'autres langages il suffit d'écrire tab.append(truc). Donc si tu veux coder par exemple un logiciel utilisateur avec menus, boutons, copier/coller etc tu es parti pour 3 mois de boulot rien que pour faire une calculatrice à 4 opérations.
    Donc voilà un peu le résumé du C. Accessoirement c'est dommage que tu ne sois pas resté sous Linux car cet OS a été écrit en C. C'est d'ailleurs une des raisons qui fait que le C reste enseigné dans les écoles d'ingénieur car on peut ensuite taper avec dans les couches profondes de cet OS pour lui programmer ses propres interfaces. Mais bon comme le Mac a lui aussi une base Unix peut-être que...
    En revanche je ne sais rien du livre de Mathieu Nebra. Ce que je sais c'est que c'est dommage d'acheter un livre pour apprendre les bases d'un langage alors qu'il existe sur le net toute une foule de tutoriels gratuits et très bien faits.

    Citation Envoyé par bruno proux Voir le message
    Je vous met en copie le code source d'un programme en C dont je débute d'ailleurs ; et j'ai un soucis je voudrais que le taux soit exprimé en pourcentage.
    Bon ben il compile sans erreur ni warning. C'est déjà une bonne chose. Simplement le include <math.h> n'est pas utile (tu ne fais pas appel à des outils mathématiques tels que "racine carrée" ou "sinus/cosinus" et de toute façon si tu devais y faire appel il faudrait compiler en demandant spécifiquement de relier ladite librairie à l'exécutable) ni include <stdlib.h> (tu n'utilises pas de fonctions de la librairie standard et printf/scanf appartiennent à "stdio.h").

    Maintenant concernant ton souci je pense que cela vient à la base d'une incompréhension de ce que tu manipules. Parce que mathématiquement parlant, un taux c'est une valeur comprise entre 0 et 1. Donc tu ne peux pas décemment saisir "67". Ou alors c'est parce que inconsciemment, tu considères ce "67" comme un pourcentage du taux, autrement dit le taux lui est de 0.67. Donc une fois saisi sous forme de pourcentage, il faut alors le diviser par 100 avant de le multiplier (et dans ce cas comme il devient float il faut l'afficher comme un float => printf ("%d%% * %d = %f\n", taux, salaire, retraite)).

    D'autant plus que tu utilises la même variable "taux" dans deux contextes différents (une première fois comme une multiplication des coef par les trimestres) ce qui nuit un peu à la compréhension de son rôle réel. Et comme cette multiplication n'est elle-même pas réutilisée après, elle pourrait alors être directement faite dans le printf().

    Bref il me semble que ce code devrait mieux correspondre à ton calcul
    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
    32
    33
    34
    35
    //	main.c
    //	CT1retraite
    //
    //	Created by proux on 17/04/2021.
    //
     
    #include <stdio.h>
     
    int main(int argc, char *argv[]) {
    	unsigned short trimestre;
    	float coefficient;
     
    	printf("Entrez le coefficient : ");
    	scanf("%f", &coefficient);
    	printf("Entrez les trimestres : ");
    	scanf("%hu", &trimestre);
    	printf("%.02f * %hu = %.02f\n", coefficient, trimestre, coefficient * trimestre);
     
    	unsigned short salaire;
    	unsigned short taux;
    	float retraite;
     
    	printf("Entrez le taux (sous forme de pourcentage) : ");
    	scanf("%hu", &taux);
    	printf("Entrez le salaire : ");
    	scanf("%hu", &salaire);
     
    	// On fait le calcul :
    	retraite=taux / 100.0 * salaire;
     
    	// Et on affiche le résultat à l'écran :
    	printf("%hu * %hu%% = %.02f\n", salaire, taux, retraite);
     
    	return 0;
    }

    Tu remarqueras plusieurs choses
    • j'ai remplacé tes "int" par des "unsigned short". Ben oui, ces valeurs étant toutes positives, elles n'ont pas besoin d'être signées (on gagne en vitesse lors des calculs, vitesse infinitésimale certes mais vitesse quand-même) et n'étant pas énormes (je ne pense pas que ton salaire dépassera 65535€/mois) le short suffit. Plus tu te forceras à réfléchir au typage précis de tes variables dès le départ plus ça te sera facile quand il faudra le faire réellement. Pareil pour le double qui peut, dans ces calculs, être remplacé par un float (on ne recherche pas la masse de l'électron!!!)
    • j'ai supprimé l'initialisation de tes variables. Ben oui, pourquoi mettre à 0 une variable qui de toute façon sera écrasée 2 lignes plus bas (philosophie du C, on ne fait pas de choses inutiles). Ok ici il y a un petit schisme entre les divers intervenants, certains prônent l'initialisation systématique comme "barrière de sécurité" et ils ont aussi des bons arguments en faveur de cette option. Donc si ça te rassure de laisser l'initialisation à 0...
    • j'ai défini les variables uniquement à partir du moment où j'en avais besoin. Ca c'est un des avantages du C99 (l'année où tu t'es mis à l'informatique), autant en profiter. A la base ça ne change rien mais quand tu feras évoluer ton code et que tu supprimeras certaines parties devenues inutiles, ça t'aidera alors à supprimer les variables elles-aussi devenues inutiles sans en oublier. Ou alors (autre possibilité) quand tu supprimes une partie du code tu supprimes alors toutes les variables puis tu attends que le compilo râle pour savoir lesquelles remettre..
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

  4. #4
    Expert éminent
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    mai 2010
    Messages
    3 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : mai 2010
    Messages : 3 009
    Points : 9 381
    Points
    9 381
    Par défaut
    Certains me disent fou car j'apprends le C avec le livre de Mathieu Nébra.
    Ils me disent le C te servira à rien alors que je lis que c'est une base solide. Donc...
    Bah disons que c'est un mauvais livre pour le C

    Sinon , le C ne sert pas à "rien" , mais il est clairement pas pédagogue comme langage , depuis le temps que je traîne sur les forum C , la plupart des débutants passe leur temps à résoudre des problèmes lié au langages et aux différents UB que à vraiment codé.
    Pour ma part le truc le plus important dans l'informatique c'est l'algo est un langage qui permet de se concentrer sur celui ci (comme le Python) est bien mieux pédagogue que le C.

    Je ne rejoins pas forcément l'avis de mon camarade plus haut que le C est bas niveau , cela dépend surtout de son utilisation , un printf/scanf ,c'est tout sauf du bas niveau
    Par contre le C peut être bas niveau si on code en embraqué ,mais rare sont ceux qui font de l'embarqué en général , donc si tu fais du C sur un OS , je considère pas que tu fera du C très bas niveau (même si ça reste plus "bas niveau" que la plupart des langages).

    L'utilité du C est variable, si ton but est de faire de la GUI , oui il faut fuir le C , c'est clairement pas le langage fait pour :p
    Je pense que tes interlocuteurs qui dise que le C ne sert pas ,c'est que sauf si tu code un OS / driver/embarqué , hors de ces champs là , oui le C n'est pas le meilleur outils pour faire d'autre type de programme.

  5. #5
    Membre averti
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    juillet 2020
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : juillet 2020
    Messages : 124
    Points : 366
    Points
    366
    Par défaut
    Citation Envoyé par bruno proux Voir le message
    Bonsoir à tous,

    Je me présente à vous, j'ai 62 ans passionné d'informatique depuis 1999. J'ai tester linux, windows et finalement revenu sur Mac.
    Certains me disent fou car j'apprends le C avec le livre de Mathieu Nébra.
    Ils me disent le C te servira à rien alors que je lis que c'est une base solide. Donc...
    Re-Bonjour Bruno,
    Je ne sais pas qui te traite de fou mais je me permets d'intervenir car sur un autre site, celui d'OCR le QG de M. Nébra, tu précises aussi bientôt suivre une formation en algo.
    Cette précision est importante, car à moins d'avoir comme prérequis une connaissance minimale de C pour suivre cette formation, il est fort à parier que si un langage particulier est pris pour implémenter des algorithmes alors ce sera certainement ou python ou javascript ou quelque chose de ce acabit. Pourquoi ? Parce que dans ces langages tu n'as besoin de t'occuper de beaucoup de détails qui au début sont surtout du bruit et cela te permettra de te concentrer sur l'essentiel.
    Pour te donner un exemple, tu as l'algo d'échange de valeur entre deux variables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    algo échange( v1, v2 )
        temp <- v1
        v1 <- v2
        v2 <- temp
    En gros en C ça demande de comprendre un minimum ce que sont les pointeurs, d'avoir survolé une description du modèle mémoire, …
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void swap(int *v1, int *v2)
    {
        int tmp=*v1;
        *v1=*v2;
        *v2=tmp;
    }
    Et là tu n'as que la version entière (=la version qui traite des entiers), il faudra faire d'autres versions de fonctions similaires pour traiter d'autres types.
    Alors qu'en python un échange se fait simplement par une affectation :
    C'est un bon choix que de suivre une formation en algo, car c'est cela avoir de bonnes bases solides.
    En général on présentera toujours un algo sous forme de pseudo-code, une sorte de langage à mi-chemin entre une langue naturelle et un langage de programmation (comme le premier code).

    Donc le C pourquoi pas … mais pas comme premier langage d'apprentissage surtout dans le cadre d'un formation algo, enfin àmha.


    Citation Envoyé par Sve@r Voir le message
    [...][*]j'ai remplacé tes "int" par des "unsigned short". Ben oui, ces valeurs étant toutes positives, elles n'ont pas besoin d'être signées (on gagne en vitesse lors des calculs, vitesse infinitésimale certes mais vitesse quand-même) et n'étant pas énormes (je ne pense pas que ton salaire dépassera 65535€/mois) le short suffit. Plus tu te forceras à réfléchir au typage précis de tes variables dès le départ plus ça te sera facile quand il faudra le faire réellement. Pareil pour le double qui peut, dans ces calculs, être remplacé par un float (on ne recherche pas la masse de l'électron!!!)
    [...]
    Ce sont des considérations que l'on a pas en débutant en algo, que l'on a en général pas dans d'autres langages qui se débrouillent très bien avec ou des entiers ou des flottants et on en sait pas plus, par exemple.
    De plus, on a aucune certitude qu'utiliser un short «fait gagner en vitesse», bien au contraire sur x86_64 par exemple. Si on veut «de la vitesse» alors on peut utiliser les fast int depuis C99 → par exemple uint_fast_16t qui garantit d'utiliser le type le plus rapide pour des opérations non signées (attention danger pour le débutant) sur au moins 16 bits.

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : février 2006
    Messages : 8 964
    Points : 24 570
    Points
    24 570
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par WhiteCrow Voir le message
    De plus, on a aucune certitude qu'utiliser un short «fait gagner en vitesse»
    Comme l'indique ce préambule "elles n'ont pas besoin d'être signées" ma remarque ne portait pas sur le short mais sur l'unsigned pour lequel il n'y a pas besoin d'extension du bit de signe. Quelle que soit la rapidité de cette extension, si elle n'y est pas c'est fatalement du temps de gagné.

    Citation Envoyé par WhiteCrow Voir le message
    Ce sont des considérations que l'on a pas en débutant en algo
    Ici on n'est pas en algo mais en C. Et les conseils, plus tôt on les suit moins on a d'effort à faire pour s'y mettre plus tard. Et quoi qu'il arrive un conseil reste toujours bon à prendre.

    Citation Envoyé par WhiteCrow Voir le message
    que l'on a en général pas dans d'autres langages
    Pareil, ici on n'est pas dans "d'autres langages". Il aurait posé sa question dans le fofo Python ma réponse n'aurait pas été la même. Il veut se mettre au C, je lui donne des conseils et états d'esprit que moi-même j'applique à mes codes en C mais qui ne sont pas ceux de mes codes Python.
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

  7. #7
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    avril 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : avril 2021
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Taux en pourcentage langage C
    Citation Envoyé par Sve@r Voir le message
    Bonjour

    On ne peut pas forcément dire que ça ne servira à rien. Un langage est un langage et s'il continue à être utilisé aujou'd'hui c'est que fatalement il sert. Comme le disait Herbert Mayer "Aucun langage de programmation n'est parfait. Il n'existe même pas un langage meilleur que d'autre ; il n'y a que des langages en adéquation ou peu conseillés pour des buts particuliers".
    Le C est un langage ultra rapide. Il tient sa vitesse du fait qu'il ne contrôle absolument rien de ce que demande le dev, dans une philosophie que se résume à "le dev sait ce qu'il fait". Le dev demande un truc, il tentera alors de faire le truc sans vérifier si le truc est/n'est pas licite. Cela veut dire qu'il ne vérifiera pas si, quand on écrit dans tab[10] si l'indice "10" est/n'est pas dans les limites du tableau. Cela rend un programme ultra rapide mais si ledit programme n'est pas écrit avec une rigueur absolue, il pourra potentiellement faire n'importe quoi (on nomme ce comportement un "comportement imprévisible" ou "UB" pour "Undefined Behavior").
    C'est aussi un langage ultra bas-niveau (à peine au dessus de l'assembleur). Cela signifie que tu ne pourras pas développer très rapidement. Rien que pour ajouter un nouvel élément dans un tableau qui n'a pas assez de place et qu'il faut alors agrandir il faut grosso-modo 5 lignes (sous réserve en plus que le tableau ait été au départ prévu pour être dynamique!!!) là où dans d'autres langages il suffit d'écrire tab.append(truc). Donc si tu veux coder par exemple un logiciel utilisateur avec menus, boutons, copier/coller etc tu es parti pour 3 mois de boulot rien que pour faire une calculatrice à 4 opérations.
    Donc voilà un peu le résumé du C. Accessoirement c'est dommage que tu ne sois pas resté sous Linux car cet OS a été écrit en C. C'est d'ailleurs une des raisons qui fait que le C reste enseigné dans les écoles d'ingénieur car on peut ensuite taper avec dans les couches profondes de cet OS pour lui programmer ses propres interfaces. Mais bon comme le Mac a lui aussi une base Unix peut-être que...
    En revanche je ne sais rien du livre de Mathieu Nebra. Ce que je sais c'est que c'est dommage d'acheter un livre pour apprendre les bases d'un langage alors qu'il existe sur le net toute une foule de tutoriels gratuits et très bien faits.


    Bon ben il compile sans erreur ni warning. C'est déjà une bonne chose. Simplement le include <math.h> n'est pas utile (tu ne fais pas appel à des outils mathématiques tels que "racine carrée" ou "sinus/cosinus" et de toute façon si tu devais y faire appel il faudrait compiler en demandant spécifiquement de relier ladite librairie à l'exécutable) ni include <stdlib.h> (tu n'utilises pas de fonctions de la librairie standard et printf/scanf appartiennent à "stdio.h").

    Maintenant concernant ton souci je pense que cela vient à la base d'une incompréhension de ce que tu manipules. Parce que mathématiquement parlant, un taux c'est une valeur comprise entre 0 et 1. Donc tu ne peux pas décemment saisir "67". Ou alors c'est parce que inconsciemment, tu considères ce "67" comme un pourcentage du taux, autrement dit le taux lui est de 0.67. Donc une fois saisi sous forme de pourcentage, il faut alors le diviser par 100 avant de le multiplier (et dans ce cas comme il devient float il faut l'afficher comme un float => printf ("%d%% * %d = %f\n", taux, salaire, retraite)).

    D'autant plus que tu utilises la même variable "taux" dans deux contextes différents (une première fois comme une multiplication des coef par les trimestres) ce qui nuit un peu à la compréhension de son rôle réel. Et comme cette multiplication n'est elle-même pas réutilisée après, elle pourrait alors être directement faite dans le printf().

    Bref il me semble que ce code devrait mieux correspondre à ton calcul
    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
    32
    33
    34
    35
    //	main.c
    //	CT1retraite
    //
    //	Created by proux on 17/04/2021.
    //
     
    #include <stdio.h>
     
    int main(int argc, char *argv[]) {
    	unsigned short trimestre;
    	float coefficient;
     
    	printf("Entrez le coefficient : ");
    	scanf("%f", &coefficient);
    	printf("Entrez les trimestres : ");
    	scanf("%hu", &trimestre);
    	printf("%.02f * %hu = %.02f\n", coefficient, trimestre, coefficient * trimestre);
     
    	unsigned short salaire;
    	unsigned short taux;
    	float retraite;
     
    	printf("Entrez le taux (sous forme de pourcentage) : ");
    	scanf("%hu", &taux);
    	printf("Entrez le salaire : ");
    	scanf("%hu", &salaire);
     
    	// On fait le calcul :
    	retraite=taux / 100.0 * salaire;
     
    	// Et on affiche le résultat à l'écran :
    	printf("%hu * %hu%% = %.02f\n", salaire, taux, retraite);
     
    	return 0;
    }

    Tu remarqueras plusieurs choses
    • j'ai remplacé tes "int" par des "unsigned short". Ben oui, ces valeurs étant toutes positives, elles n'ont pas besoin d'être signées (on gagne en vitesse lors des calculs, vitesse infinitésimale certes mais vitesse quand-même) et n'étant pas énormes (je ne pense pas que ton salaire dépassera 65535€/mois) le short suffit. Plus tu te forceras à réfléchir au typage précis de tes variables dès le départ plus ça te sera facile quand il faudra le faire réellement. Pareil pour le double qui peut, dans ces calculs, être remplacé par un float (on ne recherche pas la masse de l'électron!!!)
    • j'ai supprimé l'initialisation de tes variables. Ben oui, pourquoi mettre à 0 une variable qui de toute façon sera écrasée 2 lignes plus bas (philosophie du C, on ne fait pas de choses inutiles). Ok ici il y a un petit schisme entre les divers intervenants, certains prônent l'initialisation systématique comme "barrière de sécurité" et ils ont aussi des bons arguments en faveur de cette option. Donc si ça te rassure de laisser l'initialisation à 0...
    • j'ai défini les variables uniquement à partir du moment où j'en avais besoin. Ca c'est un des avantages du C99 (l'année où tu t'es mis à l'informatique), autant en profiter. A la base ça ne change rien mais quand tu feras évoluer ton code et que tu supprimeras certaines parties devenues inutiles, ça t'aidera alors à supprimer les variables elles-aussi devenues inutiles sans en oublier. Ou alors (autre possibilité) quand tu supprimes une partie du code tu supprimes alors toutes les variables puis tu attends que le compilo râle pour savoir lesquelles remettre..
    Merci pour toutes ces infos. Je débute et j'ai réussi à faire le pourcentage à ma façon mais je vais suivre ton code.

    Bruno.

  8. #8
    Membre averti
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    juillet 2020
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : juillet 2020
    Messages : 124
    Points : 366
    Points
    366
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    [...]
    Ici on n'est pas en algo mais en C. Et les conseils, plus tôt on les suit moins on a d'effort à faire pour s'y mettre plus tard. Et quoi qu'il arrive un conseil reste toujours bon à prendre.


    Pareil, ici on n'est pas dans "d'autres langages". Il aurait posé sa question dans le fofo Python ma réponse n'aurait pas été la même. Il veut se mettre au C, je lui donne des conseils et états d'esprit que moi-même j'applique à mes codes en C mais qui ne sont pas ceux de mes codes Python.
    Ce sont des conseils qui étaient certainement très pertinents il y a quelques années lorsque les compilos étaient bien moins débrouillard que de nos jours. Toujours àmha, les bons conseils à donner sont soit ceux qui aident le compilo comme l'utilisation de restrict, des vla dans les signatures de fonctions soit ceux qui augmentent la lisibilité du code comme ne pas essayer d'être trop intelligent en faisant de l'extraction de code, vouloir dérécursiver à tout prix, etc …
    C'est clair que le PO ne précise pas ici sont but d'avoir une formation en algo.

  9. #9
    Expert éminent
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    juillet 2013
    Messages
    3 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : juillet 2013
    Messages : 3 883
    Points : 8 690
    Points
    8 690
    Par défaut
    Citation Envoyé par WhiteCrow Voir le message
    Donc le C pourquoi pas … mais pas comme premier langage d'apprentissage surtout dans le cadre d'un formation algo, enfin àmha.
    C'est la différence entre programmeur et développeur (et on peut ajouter analyste-programmeur qui en France, avec les grilles de salaires à 1 niveau Bac+2 et ingénieur)

    Les programmeurs développent les briques que les développeurs vont utiliser.
    Le développeur doit aussi participer aux réunions, faire la documentation, remonter les tickets, ... en gros intégrer le processus entreprise.

    Et donc ta réaction est typiquement de l'air du temps : on forme des développeurs qui vont empiler les briques, on ne leur demande pas de savoir comment cela fonctionne.
    Et comme tu le dis, l'embarqué, le développement d'applications bureau, ..., en France, ce sont des emplois de niche qui pour certains, les E.S.N.s demandent + 1 profil électronique qu'informatique pur.

  10. #10
    Membre averti
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    juillet 2020
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : juillet 2020
    Messages : 124
    Points : 366
    Points
    366
    Par défaut
    Citation Envoyé par foetus Voir le message
    C'est la différence entre programmeur et développeur (et on peut ajouter analyste-programmeur qui en France, avec les grilles de salaires à 1 niveau Bac+2 et ingénieur)
    [...]
    Y a-t-il une différence entre un débutant programmeur, un débutant développeur et, en France, un débutant analyste-programmeur ? 😶
    Non, ce sont tous des novices qui doivent tout apprendre. Je ne pense pas que savoir monter et démonter un moteur, ou simplement avoir une idée de comment il fonctionne fait d'un conducteur un conducteur plus prudent. La base c'est pas la mécanique mais le code de la route. Et comme le PO, même s'il ne l'exprime pas ici mais sur d'autres forums, cherche avant tout à se préparer à une formation en algo … sans avoir plus de connaissances en programmation que ça …
    C'est d'ailleurs le seul but de mon intervention, rajouter de l'info manquante à la question que le PO pose …

  11. #11
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    avril 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : avril 2021
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Taux en pourcentage langage C
    Merci à vous tous j'ai réussi à résoudre le problème.

    Vous êtes formidables.

    Je vous mettrais le code source prochainement.

    Bruno.

  12. #12
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : février 2006
    Messages : 8 964
    Points : 24 570
    Points
    24 570
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par WhiteCrow Voir le message
    Ce sont des conseils qui étaient certainement très pertinents il y a quelques années lorsque les compilos étaient bien moins débrouillard que de nos jours.
    Ah ce fameux compilateur tellement intelligent. Pourtant des compilos il y en a toute une foultitude. Déjà tu ne peux pas présumer de ce sur quoi le PO va travailler/s'amuser (embarqué? vieux truc?). Il n'y a pas si longtemps j'ai codé pour une caméra et même si elle contient un Linux, il n'était pas très riche ledit Linux (même pas de Python quoi !!!)
    Et puis j'aime à penser qu'aussi intelligent qu'il puisse être, un compilo fera aussi bien avec mon aide que sans mais qu'avec mon aide il a alors une chance de faire encore mieux.

    Citation Envoyé par WhiteCrow Voir le message
    Toujours àmha, les bons conseils à donner sont soit ceux qui aident le compilo comme l'utilisation de restrict, des vla dans les signatures de fonctions soit ceux qui augmentent la lisibilité du code comme ne pas essayer d'être trop intelligent en faisant de l'extraction de code, vouloir dérécursiver à tout prix, etc …
    L'un n'empêche pas l'autre. Je t'assure que si j'avais eu connaissance des notions que tu cites (et si j'avais jugé que ça pouvait servir le PO) j'en aurais parlé. restrict je viens d'aller voir sur la page wikipedia ce qui s'en dit mais je n'ai pas encore trop d'idée de son utilité. Et les vla dans des signatures de fonction je n'arrive même pas à m'imaginer à quoi ça doit ressembler (toutefois perso les vla je suis pas super fana car si le vla ne peut pas se faire, il n'y a pas de retour possible et c'est la mort du petit cheval => j'en suis resté au bon vieux malloc peut-être rustique mais au-moins qui te dit s'il peut faire le job ou pas).
    Accessoirement déclarer une variable "unsigned short" c'est indiquer "cette variable n'est pas destinée à monter super haut et ne sera jamais négative" ce qui, en soi, est aussi un atout concernant la lisibilité du code...
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

  13. #13
    Membre averti
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    juillet 2020
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : juillet 2020
    Messages : 124
    Points : 366
    Points
    366
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Ah ce fameux compilateur tellement intelligent. Pourtant des compilos il y en a toute une foultitude. Déjà tu ne peux pas présumer de ce sur quoi le PO va travailler/s'amuser (embarqué? vieux truc?). Il n'y a pas si longtemps j'ai codé pour une caméra et même si elle contient un Linux, il n'était pas très riche ledit Linux (même pas de Python quoi !!!)
    Et puis j'aime à penser qu'aussi intelligent qu'il puisse être, un compilo fera aussi bien avec mon aide que sans mais qu'avec mon aide il a alors une chance de faire encore mieux.
    Mac après win et linux … je pense que ce sera ou clang ou gcc … et pas de vieux trucs. Mais bon, on peut encore coder pour un pdp11 …

    Justement, ce que tu crois être une aide ne l'est parfois pas … Comment codes-tu une fonction qui fait la somme des entiers de 1 à n, n étant un paramètre ? Enfin quand je dis toi, je pense aux implémentations c les plus classiques …

    Citation Envoyé par Sve@r Voir le message
    L'un n'empêche pas l'autre. Je t'assure que si j'avais eu connaissance des notions que tu cites (et si j'avais jugé que ça pouvait servir le PO) j'en aurais parlé. restrict je viens d'aller voir sur la page wikipedia ce qui s'en dit mais je n'ai pas encore trop d'idée de son utilité. Et les vla dans des signatures de fonction je n'arrive même pas à m'imaginer à quoi ça doit ressembler (toutefois perso les vla je suis pas super fana car si le vla ne peut pas se faire, il n'y a pas de retour possible et c'est la mort du petit cheval => j'en suis resté au bon vieux malloc peut-être rustique mais au-moins qui te dit s'il peut faire le job ou pas).
    Accessoirement déclarer une variable "unsigned short" c'est indiquer "cette variable n'est pas destinée à monter super haut et ne sera jamais négative" ce qui, en soi, est aussi un atout concernant la lisibilité du code...
    L'utilité des restrict ? Pouvoir optimiser les instruction out of order ou les copies mémoires ; toute la différence entre un memcpy et un memmove par exemple.
    Les VLA uniquement dans les signatures … par exemple un prototype comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void foo(size_t n, int array_1[restrict n], int array_2[restrict n]);
    indique au compilateur non seulement que les deux paramètres array_1 et array_2 ne peuvent être NULL, mais qu'ils pointent vers une zone mémoire suffisamment grande pour contenir au moins n éléments, les restrict eux indiquent que les objets pointés ne s'overlappent pas.

  14. #14
    Expert éminent
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    juillet 2013
    Messages
    3 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : juillet 2013
    Messages : 3 883
    Points : 8 690
    Points
    8 690
    Par défaut
    Citation Envoyé par WhiteCrow Voir le message
    Les VLA
    qui existent que depuis C99 et déprécié avec le C11.

    Je ne sais pas quoi te dire de +, puisque tu veux avoir raison
    Et surtout pas que le compilateur Microsoft (avec Visual C++) n'a jamais été compatible C99.

  15. #15
    Membre averti
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    juillet 2020
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : juillet 2020
    Messages : 124
    Points : 366
    Points
    366
    Par défaut
    Citation Envoyé par foetus Voir le message
    qui existent que depuis C99 et déprécié avec le C11.

    Je ne sais pas quoi te dire de +, puisque tu veux avoir raison
    Et surtout pas que le compilateur Microsoft (avec Visual C++) n'a jamais été compatible C99.
    Je ne parle que des VLA dans les signatures de fonctions … exactement ce que recommande le comité de normalisation pour la future norme C23 →
    Citation Envoyé par WG14
    Additional Principle for C23
    At the WG 14 meeting in London, England, in April, 2016, the previous principles were reviewed, and the following was added:
    15. Application Programming Interfaces (APIs) should be self-documenting when possible. In particular, the order of parameters in function declarations should be arranged such that the size of an array appears before the array. The purpose is to allow Variable-Length Array (VLA) notation to be used. This not only makes the code's purpose clearer to human readers, but also makes static analysis easier. Any new APIs added to the Standard should take this into consideration.
    Source : Programming Language C - C23 Charter.

  16. #16
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : février 2006
    Messages : 8 964
    Points : 24 570
    Points
    24 570
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par WhiteCrow Voir le message
    Comment codes-tu une fonction qui fait la somme des entiers de 1 à n, n étant un paramètre ? Enfin quand je dis toi, je pense aux implémentations c les plus classiques …
    Sais pas trop... Je pense que je lui ferais retourner n*(n+1)/2. Me semble que ça donne en général d'assez bons résultats sans tomber dans le trop classique...

    Et pour les restrict et les vla comme je t'ai dit je ne t'empêche pas d'en parler au PO vu que tu maitrises plus que moi (même si ce sujet me semble là un peu plus difficile à expliquer à un débutant).
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

  17. #17
    Membre averti
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    juillet 2020
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : juillet 2020
    Messages : 124
    Points : 366
    Points
    366
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Sais pas trop... Je pense que je lui ferais retourner n*(n+1)/2. Me semble que ça donne en général d'assez bons résultats sans tomber dans le trop classique...
    Je te propose une implémentation naïve compilée avec clang (le compilo que le PO utilisera surement) dont la sortie asm est consultable sur godbolt.

    Ce qui est très intéressant, est qu'en implémentant la solution avec une boucle for et un accumulateur (la version naïve), le compilateur produit un code qui fait en gros un n(n-1)/2+n. En cherchant pourquoi cette expression plutôt que celle que tu as donnée, il apparaît que ta version fait un overflow quand la boucle for n'en fait pas, problème résolu avec la solution du compilo qui est donc une implémentation conforme.
    Et là, chapeau bas CLang !
    Tu peux essayer d'autres sommes, même un peu compliquées …

    Pour ceux qui préfèrent les tldr; →
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int sum(int n)
    {
        int res=0;
        for(int i=0; i<=n; i++)
            res += i;
        return res;
    }
    donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    sum:                                    # @sum
            mov     eax, edi
            lea     ecx, [rdi - 1]
            imul    rcx, rax
            shr     rcx
            add     ecx, edi
            xor     eax, eax
            test    edi, edi
            cmovns  eax, ecx
            ret
    Citation Envoyé par Sve@r Voir le message
    Et pour les restrict et les vla comme je t'ai dit je ne t'empêche pas d'en parler au PO vu que tu maitrises plus que moi (même si ce sujet me semble là un peu plus difficile à expliquer à un débutant).
    Ah ben non, il n'a clairement pas le niveau … ça ne sert absolument à rien.

  18. #18
    Expert éminent
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    juillet 2013
    Messages
    3 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : juillet 2013
    Messages : 3 883
    Points : 8 690
    Points
    8 690
    Par défaut
    Citation Envoyé par WhiteCrow Voir le message
    il apparaît que ta version fait un overflow
    et si tu mets des size_t à la place de tes int cela fait quoi ?

    Il optimise que dalle ton compilateur ... or 1 somme ne peut être jamais négative (et je ne dis rien sur commencer ta boucle à 0 ne sert à rien sauf perdre 1 tour de boucle)

    Et pour ton "overflow" ne peut intervenir qu'à INT_MAX (à cause du +1) ... or ta somme cela fait déjà depuis longtemps qu'elle déborde (à N=20724 si je ne me trompe pas)

    Alors que la formule n(n-1)/2+n avec des types non signés ne donnent pas de valeurs correctes pour 0 (à cause du -1)

    De toute manière, c'est le genre de calcul à faire en macro

    #define SUM(N) ((N * (N + 1)) / 2).
    Et comme tu kiffes l'assembleur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            mov     rax, qword ptr [rsp]
            lea     rsi, [rax + 1]
            imul    rsi, rax
            shr     rsi
            mov     qword ptr [rsp], rsi

  19. #19
    Membre confirmé
    Femme Profil pro
    ..
    Inscrit en
    décembre 2019
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 91
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : décembre 2019
    Messages : 242
    Points : 535
    Points
    535
    Par défaut
    Salut,

    Citation Envoyé par WhiteCrow Voir le message
    Ce sont des considérations que l'on a pas en débutant en algo, que l'on a en général pas dans d'autres langages qui se débrouillent très bien avec ou des entiers ou des flottants et on en sait pas plus, par exemple.
    De plus, on a aucune certitude qu'utiliser un short «fait gagner en vitesse», bien au contraire sur x86_64 par exemple. Si on veut «de la vitesse» alors on peut utiliser les fast int depuis C99 → par exemple uint_fast_16t qui garantit d'utiliser le type le plus rapide pour des opérations non signées (attention danger pour le débutant) sur au moins 16 bits.
    Absolument ! Le type de base pour les entiers c'est int et pour les réels c'est double. Sauf pour quelques CPU 8 bits, le type int est taillé pour offrir les meilleurs performances et le plus de sécurité. Ce type doit être privilégié par et pour le débutant.

    Citation Envoyé par foetus Voir le message
    et si tu mets des size_t à la place de tes int cela fait quoi ?
    Je me souviens il y a quelques jours (?) d'un code où un débutant avait noté int age; et tu lui en avais proposé un avec size_t age;

  20. #20
    Expert éminent
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    juillet 2013
    Messages
    3 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : juillet 2013
    Messages : 3 883
    Points : 8 690
    Points
    8 690
    Par défaut
    Citation Envoyé par kaitlyn Voir le message
    Je me souviens il y a quelques jours (?) d'un code où un débutant avait noté int age; et tu lui en avais proposé un avec size_t age;
    Dans la norme C99, certains retiennent en priorité, les types mis en avant comme size_t, que la librairie standard utilise partout (1 exemple malloc), le retour int de main.
    Et d'autres, les VLAs (qui sont dépréciés depuis C11), les instructions non standard comme _restrict et qui sont des conseils et attendent la nouvelle norme C23 pour savoir comment rendre lisible 1 code C.

    Après tu as raison, j'ai été traumatisé par Visual C++ 2008-2010-2013 qui n'est pas compatible C99 : je définis toujours en premier mes variables, j'essaye de ne pas utiliser le nouveau commentaire, et mes booléens sont des unsigned char (et peut-être d'autres choses)


    Et pour le type "idéal", le type int ne fait que 32 bits même en 64 bits : donc j'ai 1 doute sur cette affirmation

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Format pourcentage en taux
    Par zezro dans le forum SAS Base
    Réponses: 3
    Dernier message: 17/04/2018, 09h12
  2. Calcul d'un taux de pourcentage entre 2 prix
    Par scoubisami dans le forum AJAX
    Réponses: 2
    Dernier message: 31/01/2018, 10h07
  3. Calcul pourcentage Taux
    Par Baxter89 dans le forum WinDev
    Réponses: 6
    Dernier message: 15/06/2017, 11h33
  4. [CR XI] TCD sur un pourcentage (taux de service en fonction d'une tranche de tolérance)
    Par juju05 dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 17/11/2014, 09h58
  5. [langage] Je cherche un bon livre ?
    Par Anonymous dans le forum Langage
    Réponses: 13
    Dernier message: 09/04/2003, 13h16

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