Home > c# > A function to print a character number of times and in number of lines

A function to print a character number of times and in number of lines

February 4Hits:1
Advertisement

My task was:

Write a function that takes three arguments: a character and two integers. The character is to be printed. The first integer specifies the number of times that the character is to be printed on a line, and the second integer specifies the number of lines that are to be printed. Write a program that makes use of this function.

And my code is: (i know i did not add different scenarios like if the first char is number etc, but please let me know if it looks ok)

#include <stdio.h> void printing_char (char ch, int numberOfChars, int numberOfLines);  int main (void) {     char userChar;     int lines,times;     printf ("please enter a character, number of times in a line, and number of lines:\n");     while ((scanf ("%c%d%d", &userChar, &times, &lines)) == 3)     {         printing_char (userChar, times, lines);     }     return 0; }  void printing_char (char ch, int numberOfChars, int numberOfLines) {     int x;     int y = 0;      while (++y <= numberOfLines)     {             for (x = 0; x<numberOfChars; x++)             {                 printf ("%c", ch);             }             printf ("\n");     } } 

Answers

Only a couple of things:

  • int lines,times; - one declaration per line, please!
  • scanf("%c%d%d", &userChar, &times, &lines) - where does one number end and the next start?. You need to include some terminating characters, such as ,
    printf("please enter a character, number of times in a line, and number of lines, separated by a comma:\n");
    while ((scanf("%c,%d,%d", &userChar, &times, &lines)) == 3)
    
    
  • An expression such as while (++y <= numberOfLines) is confusing, what value does y have at each step? It'd be better to rewrite this as a for loop
    for ( y = 0; y < numberOfLines; y++ )
    
    

In addition to comments by @GlennRogers, here's a bit of pedantry:

  • consider putting main last to avoid the need for a prototype for printing_char
  • printing_char should be static. Seems a bad name too.
  • for-loops can define the loop variable in the initial loop:
    for (int x = 0; x<numberOfChars; x++)
    
    
  • nested loops are generally best avoided. Your inner for-loop would be better as a function:
    static void print_n_times(int ch, int n)
    {
        for (int i=0; i<n; ++i) {
             putchar(ch);
        }
    }
    
    
  • adding a blank line after the function definition is very odd. Best not done.
  • numberOfChars and numberOfLines are verbose for my taste. I prefer n_chars, n_lines (or camel-case nChars, nLines). Also, as the variables in main have exactly the same meaning, it would be reasonable to call lines and times the same there, ie. n_chars and n_lines
  • you have unnecessary brackets around the scanf call
Tags:

Related Articles

Copyright (C) 2018 ceus-now.com, All Rights Reserved. webmaster#ceus-now.com 14 q. 0.953 s.