2015-10-14 1 views
-5

je besoin d'aide à ce problème:Introduction à la programmation C

Une entreprise paie ses vendeurs sur une base de commission. Les vendeurs reçoivent 100,00 $ par semaine plus 9% de leurs ventes brutes pour cette semaine. Par exemple, un vendeur dont la vente brute dans une semaine est de 3000,00 $ recevra 370,00 $ (100,00 + 3000 * 0,09). Écrivez un programme C qui (en utilisant un tableau de compteurs) détermine combien de vendeurs ont gagné des salaires dans chacune des gammes suivantes:

i. 100 à 199 $
ii. 200 à 299
iii. 300 - 399
iv. $ 400 - 499
v. 500 - 599
vi. 600 à 699
vii. 700 $ - 799
viii. 800 $ - 899
ix. $ 900 - 999
x. 1000 $ et plus
Note: Arrondissez le salaire de chaque vendeur au nombre entier.

Testez votre programme pour des données de ventes brutes générées aléatoirement entre 0 et 15 000 pour une équipe de 30 commerciaux.

Documentez et indentez votre code source de façon appropriée pour une lisibilité élevée.

Voici ce que j'ai jusqu'à présent:

#include <stdio.h> 
    #include <math.h> 

    int main() 
{ 
    int salesperson[10] = {}; 

    int gross = 0; 
    int commission = 1; 

    { 
     while(gross != 0); 
     printf("please enter a number from 0-3000 %\n;"); 
     printf("Enter gross sales: "); 
     scanf("%d", &gross); 
     commission = 100 + (.09 * gross); 

     if (commission >= 100 && commission <= 199) 
     { 
      salesperson[0]++; 
     } 

     if (commission >= 200 && commission <= 299) 
     { 
      salesperson[1]++; 
     } 

     if (commission >= 300 && commission <= 399) 
     { 
      salesperson[2]++; 
     } 

     if (commission >= 400 && commission <= 499) 
     { 
      salesperson[3]++; 
     } 

     if (commission >= 500 && commission <= 599) 
     { 
      salesperson[4]++; 
     } 

     if (commission >= 600 && commission <= 699) 
     { 
      salesperson[5]++; 
     } 

     if (commission >= 700 && commission <= 799) 
     { 
      salesperson[6]++; 
     } 

     if (commission >= 800 && commission <= 899) 
     { 
      salesperson[7]++; 
     } 

     if (commission >= 900 && commission <= 999) 

     { 

      salesperson[8]++; 
     } 
     if (commission >= 1000) 
     { 
      salesperson[9]++; 
     } 

    } 
     printf("a) $100-199:%d\n", salesperson[0]); 
     printf("b) $200-299: %d\n", salesperson[1]); 
     printf("c) $300-399: %d\n", salesperson[2]); 
     printf("d) $400-499; %d\n", salesperson[3]); 
     printf("e) $500-599: %d\n", salesperson[4]); 
     printf("f) $600-699: %d\n", salesperson[5]); 
     printf("g) $700-799: %d\n", salesperson[6]); 
     printf("h) $800-899: %d\n", salesperson[7]); 
     printf("i)$900-999:%d\n", salesperson[8]); 
     printf("j) $1000 and over: %d\n", salesperson[9]); 






    return 0; 
} 

Quand je lance le programme de mes résultats continuent d'affluer à 0, et je ne sais pas pourquoi. Est-ce que quelqu'un peut m'aider?

+1

Cette ligne de code ne fait rien 'while (brute! = 0);'. –

+0

Toutes ces instructions 'if' peuvent être remplacées par une seule instruction' if (commission> = 100) {salesperson [commission/100 - 1] ++;} ' – Barmar

+2

Cela doit être migré vers CodeReview.stackexchange.com, mais' while (gross! = 0); 'est une instruction while manquant un corps. – JPhi1618

Répondre

0

Votre boucle n'a aucun corps. Changer ceci:

{ 
    while (gross != 0); 
    printf("please enter a number from 0-3000 %\n;"); 
    printf("Enter gross sales: "); 
    scanf("%d", &gross); 
    commission = 100 + (.09 * gross); 

à ceci:

while (1) 
{ 
    printf("please enter a number from 0-3000 %\n;"); 
    printf("Enter gross sales: "); 
    scanf("%d", &gross); 
    if (gross == 0) break; 
    commission = 100 + (.09 * gross); 
+0

merci les gars je l'ai fait, je reçois encore 0 pour mes résultats –

+0

si je voulais le générer en utilisant un int int pour savoir comment je fais ça? –

+0

A l'intérieur de votre boucle, au lieu d'utiliser scanf pour grossir, vous pourriez faire quelque chose comme: gross = rand()% 3001; qui génère un nombre aléatoire compris entre 0 et 3000.Mais notez que ceci est pseudo-aléatoire et doit être ensemencé pour vous donner des réponses différentes chaque fois que vous exécutez le programme. Google vous en dira plus à ce sujet. tutorialspoint.com/c_standard_library/c_function_rand.htm – Samidamaru

1

Vous avez écrit ceci:

{ 
    while (gross != 0); 

Mais je pense que vous vouliez dire ceci:

while (gross != 0) 
{ 

Une déclaration while suivie un ; est essentiellement un no-op - le corps de la boucle est vide. Si vous voulez répéter tout le code à l'intérieur des accolades, le while doit précéder l'accolade ouvrante. Le code de l'accolade d'ouverture { à l'accolade fermante { est le "corps" de la boucle, c'est-à-dire la partie qui est exécutée à chaque itération de la boucle.

En outre, vous devez initialiser gross à une valeur autre que 0 afin de ne pas quitter la boucle avant même d'avoir une chance d'obtenir une valeur. -1 fonctionnerait pour une valeur initiale.

0

En plus des autres réponses, votre condition de boucle while n'a aucun sens.

Vous commencez avec gross = 0;

Ensuite, votre boucle dit immédiatement while(gross != 0)

à savoir si le brut n'est pas 0 faire quelque chose.

Mais la valeur brute est 0. Parce que c'est ce que vous avez défini.

Ainsi, il se ferme juste après l'impression des valeurs du tableau qui sont toutes initialisées à 0. D'où vos zéros.

Vous pouvez le réparer en mettant quelque chose de plus sensible dans votre condition de boucle while. Comme:

while(! (gross > 3000))

ou quelque chose si vous le voulez pour sortir quand quelque chose au-dessus de ce qui est tapé.

+0

si je voulais le générer en utilisant un random int comment le ferais-je? –

+0

À l'intérieur de votre boucle, au lieu d'utiliser scanf pour obtenir 'gross' vous pourriez faire quelque chose comme:' gross = rand()% 3001; 'qui génère un nombre aléatoire entre 0 et 3000. Mais notez que ceci est pseudo-aléatoire être ensemencé pour vous donner des réponses différentes chaque fois que vous exécutez le programme. Google vous en dira plus à ce sujet. http://www.tutorialspoint.com/c_standard_library/c_function_rand.htm – Samidamaru

+0

Je viens de mettre à jour mon post. Ma condition suggérée pour votre boucle while était également fausse. Celui que j'ai maintenant édité est correct et semble correct quand je cours votre code avec cette condition – Samidamaru