2011-08-09 5 views
0
int main (int argc, const char * argv[]) 
{ 

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 

    int n, number, triangularNumber; 
    NSLog(@"What Triangular Number Do You Want?"); 
    scanf(@"%i", &number); 
    triangularNumber = 0; 

    for (n = 1; n <= number; ++n) 
     triangularNumber += n; 
     NSLog(@"Triangular Number %i is %i", number, triangularNumber); 

    [pool drain]; 
    return 0; 
} 

La sortie quand j'écris un entier est le suivant:Programme Objective-C simple ne fonctionne pas

Triangular Number 0 is 0 
+0

Depuis l'utilisation du nombre comme pointeur, référence est sa valeur avec * nombre – Dan

Répondre

2

Votre numéro d'entrée est 0 et votre condition dans la boucle for commence à 1. Par conséquent, la boucle n'est jamais exécutée.

0

Il devrait être:

for (n = 1; n <= number; ++n) { 
     triangularNumber += n; 
     NSLog(@"Triangular Number %i is %i", number, triangularNumber); 
} 

Dans la façon dont vous l'avez écrit, il est analysé comme:

for (n = 1; n <= number; ++n) { 
    triangularNumber += n; 
} 
NSLog(@"Triangular Number %i is %i", number, triangularNumber); 

Et puisque l'entrée (nombre) est 0 (comme indi cated par l'impression) la boucle ne se produit pas, pourtant la ligne est imprimée.

+4

L'indentation sur le code est trompeuse. Je ne pense pas qu'il veut enregistrer chaque valeur intermédiaire, juste le résultat final. – highlycaffeinated

+0

oui mais comme je l'ai dit dans le scanf, tout ce que j'écris devrait être assigné à un nombre, donc le nombre devrait avoir une valeur –