2013-03-11 3 views
1

Ceci est un exemple de K.N. Livre roi qui trouve le mot le plus petit et le plus grand dans une série de mots et s'arrête à la longueur de mot de 4. Mais cela ne fonctionne pas correctement.programme pour trouver le plus petit et le plus grand mot

#include <stdio.h> 
#include <string.h> 

#define N 20 


int main(void) { 
    char smallest_word[N]; 
    char largest_word[N]; 
    char current_word[N]; 
    printf("Enter word: "); 
    gets(current_word); 
    strcpy(smallest_word, strcpy(largest_word, current_word)); 
    while(strlen(current_word) != 4){ 
     printf("Enter word: "); 
     gets(current_word); 
     if(strcmp(current_word, smallest_word) < 0) 
      strcpy(smallest_word, current_word); 
     if(strcmp(current_word, largest_word) > 0) 
      strcpy(largest_word, current_word); 

    } 
    printf("\nSmallest word: %s\n", smallest_word); 
    printf("Largest word: %s\n", largest_word); 
    return 0; 
} 

Supposons que je tapez:

cat 
dog 
catfish 
bear 

donne

Output: 
Smallest Word: bear 
Largest Word: dog 

que je pense est faux.

+1

vous pensez mal, le résultat est bon :) –

+1

mais le code est horrible ... –

+0

@AndreasGrapentin, il pourrait être plus utile si vous pouvez mettre en évidence _why_ le code est terrible :) –

Répondre

5

Si nous arrangeons les quatre mots dans le lexicographic order, nous obtenons:

  • ours
  • chat
  • poisson-chat
  • chien

Ainsi, la sortie semble correcte ("ours "est le premier, et" chien "est le dernier).

+0

Ainsi, cela signifie que la fonction strcmp() fonctionne selon l'ordre lexicographique. –

+0

Je pensais qu'il compare les chaînes en fonction de leur longueur –

+0

@ ashish2expert: Ordre lexicographique, pas la longueur. http://www.cplusplus.com/reference/cstring/strcmp/ – NPE

Questions connexes