2016-11-08 1 views
-3

Hallo also ich benutze C-Code und versuche, eine Tabelle zu erstellen, wo die Zahl in Vielfachen von 5 beginnend von 1 bis 5 bis 10 bis ... erhöht wird die Eingabe des Benutzers. Was ich bisher bekommen habe ist, dass es bei 1 beginnt und dann die Zahl um 5 wie 1 zu 6 zu 11 zu 16 erhöht ... bis es dahin kommt, wo es die Zahl nicht mehr um 5 erhöhen kann, ohne darüber hinauszugehen Benutzereingabe. Könnte jemand mir helfen, die for-Schleife besser einzurichten?Wie man Zahlen um fünf in einer for-Schleife inkrementiert

Hier ist das Segment von meinem Code ich spreche:

else //run this statement if the user inputs a number greater than 14 
    { 
     printf("Number Approximation1   Approximation2\n-----------------------------------------------------\n"); //prints the header for second table 

     for (i = 1; i <= n; i += 5) 
     { 
      printf("%d  %e   %e\n", i, stirling1(i), stirling2(i)); //calls functions to input approximate factorials 
     } 
    } 

mit diesem Code Wenn ich also Eingang n als 28, I i von 1 bis 6 und 11 bis 16 bis 21 zu erhöhen, erhalten zu 26.

Was mag ich den Code tun, wenn ich Eingang n als 28 Zuwachs von i ist 1 bis 5 zu 10 bis 15 auf 20 bis 25 bis 28

Vielen Dank im Voraus!

+0

Sie wollen also um 4, 5, 5, 5, 5 erhöhen? Oder möchtest du auf das nächste Vielfache von 5 runden, nachdem du 1 bearbeitet hast? –

+0

sieht aus, als hättest du spezielle "einmalige" Bedingungen vor und nach der Wiederholung. Ich würde den ersten und den letzten Fall speziell behandeln und den Rest, der dazwischen liegt, in die Schleife legen. – yano

Antwort

2

Try this:

{ 
    printf("Number Approximation1   Approximation2\n-----------------------------------------------------\n"); //prints the header for second table 

    printf("%d  %e   %e\n", i, stirling1(1), stirling2(1)); 

    for (i = 5; i <= n; i += 5) 
    { 
     printf("%d  %e   %e\n", i, stirling1(i), stirling2(i)); //calls functions to input approximate factorials 
    } 
} 

Diese Werte für 1 drucken, 5, 10, 15, 20 ... und so weiter

Hinweis, dass neben einer zusätzlichen Codezeile, der schnellen als ein "wenn" innerhalb der Schleife hinzufügen.

+0

Ich sollte bei 0 beginnen. –

+0

In der Frage will er von 1 beginnen. –

0

Ich habe zwei if Aussagen, die helfen würden Sie mit den Sonderfällen befassen Aussagen, die auf i gedruckt = 1 und i = n neben der Anweisung gedruckt mit jeder 5.

else //run this statement if the user inputs a number greater than 14 
{ 
    printf("Number Approximation1   Approximation2\n-----------------------------------------------------\n"); //prints the header for second table 

    for (i = 1; i <= n; i += 5) 
    { 
     printf("%d  %e   %e\n", i, stirling1(i), stirling2(i)); //calls functions to input approximate factorials 

     if (i == 1){ 
      //when it iterates at the end of this loop, i = 5. 
      //In your example, you will get i from 1 to 5 to 10 up to 25 etc. 
      i = 0; 
     } 

     if ((i + 5) > n){ 
      // for the next loop, it will check if i will exceed n on the next increment. 
      // you do not want this to happen without printing for n = i. 
      //In your case if n = 28, then i will be set to 23, which will then increment to 28. 
      i = n - 5; 
     } 
    } 
} 

Es gibt wahrscheinlich andere mehr elegante Wege, dies zu erreichen, aber dies ist nur ein einfaches Beispiel dafür, was Sie versuchen könnten.

Verwandte Themen