A30 Answer


#include <stdio.h>
#include <stdlib.h>
#include <math.h>

/* Puzzle A30 -- print a wavey line down the page */
const int nRows=18 ;
const int nCols=21;

/* Number of complete cosine waves to fit into nRows rows*/
const int cycles=2;  

int main(int argc, char *argv[])
{
  int row, col ;
  int centCol = nCols/2;
  int amplitude;
  double theta;  /* angle in radians */
  
  for ( row=0; row<nRows; row++ )
  {
    theta = (2*M_PI*cycles/nRows)*row;
    amplitude = (int)((nRows/4)*cos( theta ));

    for ( col=0; col<centCol+amplitude; col++ )
      printf(" ");

    printf("*\n");
  }

  printf("\n");
  system("PAUSE");	
  return 0;
}

Comments: You need to include math.h for cos() and for M_PI. Remember that the argument to cos() is in radians and must be a double precision value.

Another interesting effect is to gradually diminish the amplitude of the wave to zero as it goes down the page.