Skip to content

Raindrops

Intro

Your task is to convert a number into a string that contains raindrop sounds corresponding to certain potential factors. A factor is a number that evenly divides into another number, leaving no remainder. The simplest way to test if a one number is a factor of another is to use the modulo operation.

The rules of raindrops are that if a given number:

  • has 3 as a factor, add 'Pling' to the result.
  • has 5 as a factor, add 'Plang' to the result.
  • has 7 as a factor, add 'Plong' to the result.
  • does not have any of 3, 5, or 7 as a factor, the result should be the digits of the number.

Examples

  • 28 has 7 as a factor, but not 3 or 5, so the result would be "Plong".
  • 30 has both 3 and 5 as factors, but not 7, so the result would be "PlingPlang".
  • 34 is not factored by 3, 5, or 7, so the result would be "34".

Task

Read Above

The Code

 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
#include "raindrops.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"

char *convert(char result[], int drops) {

    if ((drops % 5 == 0) && (drops % 7 == 0) && (drops%3==0))
        strcpy(result, "PlingPlangPlong");
    else if ((drops % 3 == 0) && (drops % 5 == 0))
        strcpy(result, "PlingPlang");
    else if ((drops % 3 == 0) && (drops % 7 == 0))
        strcpy(result, "PlingPlong");
    else if ((drops % 5 == 0) && (drops % 7 == 0))
        strcpy(result, "PlangPlong");
    else if (drops % 3 == 0)
        strcpy(result, "Pling");
    else if (drops % 5 == 0)
        strcpy(result, "Plang");
    else if (drops % 7 == 0)
        strcpy(result, "Plong");
    else
        sprintf(result, "%d", drops);
    return 0;
}
1
2
3
4
5
6
#ifndef RAINDROPS_H
#define RAINDROPS_H

char *convert(char result[], int drops);

#endif

Last update: February 8, 2021

Comments