I have a program that outputs the first 30 numbers of the fibonacci sequence. My declaration to hold the integers works and the loop to calculate them works but I am trying to output them 5 elements per line with a field width of 10. I have the field width but I can't get it to put only 5 elements per line. I could use some advice! Thanks.

#include <stdio.h>

int main ( void )
{
   int array[] =
   {
      1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,
      16,17,18,19,20,21,22,23,24,25,26,27,28,29,30
   };
   size_t i;
   for (i = 0; i < sizeof array / sizeof *array; ++i )
   {
      printf("%10d%c", array[i], i % 5 == 4 ? '\n' : ' ');
   }
   return 0;
}

/* my output
         1          2          3          4          5
         6          7          8          9         10
        11         12         13         14         15
        16         17         18         19         20
        21         22         23         24         25
        26         27         28         29         30
*/

i dont totally understand your code. Here is what I have for the output can you tell me what you think?

for(int i = 0; i < 30; i++)
{
    for(int count = 0; count < 5; count++)
    {
        cout << setw(10) << fib[i];
    }
    cout << endl;
}

Edited 3 Years Ago by Dani: Formatting fixed

Print an integer. If the counter divided by 5 has a remainder or 4, it's the last one: print a newline; otherwise use a space separator.

[edit]Its equivalent would be

printf ( "%10d", array [ i ] );
      if ( i % 5 == 4 )
      {
         putchar ( '\n' );
      }
      else
      {
         putchar ( ' ' );
      }

i dont totally understand your code.

That might be because your learning in C++ and dave is responding in C.

This article has been dead for over six months. Start a new discussion instead.