2017-07-09 2 views
-7

Apple et Orange problème.Impossible d'effacer les cas de test: Je suis supposé écrire le code pour cela:

Seuls 3 des 12 cas de test sont effacés. Je ne peux pas penser à autre chose depuis des heures.

entrée échantillon 0

7 11 
5 15 
3 2 
-2 2 1 
5 -6 

exemple de sortie 0

1 
1 

Problème: https://www.hackerrank.com/challenges/apple-and-orange/problem

code

int main(){ 

    int s; 
    int t; 
    scanf("%d %d",&s,&t); 

    int a; 
    int b; 
    scanf("%d %d",&a,&b); 

    int m; 
    int n; 
    scanf("%d %d",&m,&n); 

    int *apple = malloc(sizeof(int) * m); 
    for(int apple_i = 0; apple_i < m; apple_i++){ 
     scanf("%d",&apple[apple_i]); 
    } 


    int *orange = malloc(sizeof(int) * n); 
    for(int orange_i = 0; orange_i < n; orange_i++){ 
     scanf("%d",&orange[orange_i]); 
    } 

    int fellap=0; 
    int fellor=0; 
    int d; 

    for(int apple_i = 0; apple_i < m; apple_i++){ 
     d=apple[apple_i]+a; 
     f(d>=s && d<=t){ 
      fellap++; 
     } 
    } 

    for(int orange_i = 0; orange_i < n; orange_i ++){ 
     d=orange[orange_i]+b; 
     if(d>=s&&d<=t){ 
      fellor++; 
     } 
    } 

    printf("%d\n", fellor); 
    printf("%d\n", fellap); 

    return 0; 
} 
+0

Mise en forme/indentation :( – ThingyWotsit

+3

Pour être clair, vous voulez que nous courons test/boucles debug pour vous pour – ThingyWotsit

Répondre

0

Le bug dans votre code est très tr ivial un. Vous avez changé la sortie des oranges et des pommes. Changer

printf("%d\n", fellor); 
printf("%d\n", fellap); 

à

printf("%d\n", fellap); 
printf("%d\n", fellor); 

Je ne vois pas la nécessité de lire toutes les valeurs dans un tableau. Vous pouvez simplement parcourir l'entrée et faire les calculs en même temps. Voici un exemple qui passe tous les tests:

Code de travail qui passe tous les tests:

int main(){ 
    int s; 
    int t; 
    scanf("%d %d",&s,&t); 
    int a; 
    int b; 
    scanf("%d %d",&a,&b); 
    int m; 
    int n; 
    scanf("%d %d",&m,&n); 

    int noApples=0; 
    int noOranges=0; 

    for(int apple_i = 0; apple_i < m; apple_i++){ 
     int apple; 
     scanf("%d",&apple); 
     if (apple+a >= s && t >= apple+a) 
      noApples++; 
    } 

    for(int orange_i = 0; orange_i < n; orange_i++){ 
     int orange; 
     scanf("%d",&orange); 
     if (orange+b >= s && t >= orange+b) 
      noOranges++; 
    } 
    printf("%d\n%d\n", noApples, noOranges); 
    return 0; 
} 
+0

Merci, Monsieur, pouvez-vous s'il vous plaît me dire pourquoi mon code n'a pas passé tous les tests? – SorainOne

+0

Comme je l'ai dit, vous avez changé l'ordre de la printf: s – klutt