Algorithm
Problem Name: 30 days of code -
Objective 
 Today's challenge puts your understanding of nested conditional statements to the test. You already have the knowledge to complete this challenge, but check out the Tutorial tab for a video on testing.
Task 
 Your local library needs your help! Given the expected and actual return dates for a library book, create a program that calculates the fine (if any). The fee structure is as follows:
- If the book is returned on or before the expected return date, no fine will be charged (i.e.: fine = 0)
- If the book is returned after the expected return day but still within the same calendar month and year as the expected return date, fine = 15 Hackos  * (the number of days late).
- If the book is returned after the expected return month but still within the same calendar year as the expected return date, the fine = 500 Hackos * (the number of monthes late).
- If the book is returned after the calendar year in which it was expected, there is a fixed fine of 10000 Hackos.
Constraints
- 1 <= D <= 31
- 1 <= M <= 12
- 1 <= Y <= 3000
- It is guarenteed that the dates will be valid Gregorian calendar dates.
Sample Input
STDIN       Function
-----       --------
9 6 2015    day = 9, month = 6, year = 2015 (date returned)
6 6 2015    day = 6, month = 6, year = 2015 (date due)
Sample Output
45
Code Examples
#1 Code Example with C Programming
Code -
                                                        C Programming
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
    /* Enter your code here. Read input from STDIN. Print output to STDOUT */
    int Aday, Amonth, Ayear, Eday,Emonth, Eyear;
    int fine = 0;
    scanf("%d %d %d %d %d %d", &Aday, &Amonth, &Ayear, &Eday, &Emonth, &Eyear);
    if (Ayear == Eyear){
        if (Amonth == Emonth){
            fine = 15 * (Aday - Eday);
        }
        else {
            fine = 500 * (Amonth - Emonth);
        }
    }
    else if (Ayear > Eyear){
        fine = 10000;
    }
    
    if (fine  <  0){
        fine = 0;
    }
    
    printf("%d", fine);
    return 0;
}
#2 Code Example with C++ Programming
Code -
                                                        C++ Programming
#include <iostream>
using namespace std;
int main() {
    int da, ma, ya;
    cin >> da;
    cin >> ma;
    cin >> ya;
    int de, me, ye;
    cin >> de;
    cin >> me;
    cin >> ye;
    int fine = 0;
    if (ya > ye) fine = 10000;
    else if (ya == ye) {
        if (ma > me) fine = (ma - me) * 500;
        else if (ma == me && da > de) fine = (da - de) * 15;
    }
    cout << fine;
}
#3 Code Example with C# Programming
Code -
                                                        C# Programming
using System;
class Solution
{
    static void Main(String[] args)
    {
        var actually = Console.ReadLine().Split(' ');
        var da = int.Parse(actually[0]);
        var ma = int.Parse(actually[1]);
        var ya = int.Parse(actually[2]);
        var expected = Console.ReadLine().Split(' ');
        var de = int.Parse(expected[0]);
        var me = int.Parse(expected[1]);
        var ye = int.Parse(expected[2]);
        var fine = 0;
        if (ya > ye) fine = 10000;
        else if (ya == ye)
        {
            if (ma > me) fine = (ma - me) * 500;
            else if (ma == me && da > de) fine = (da - de) * 15;
        }
        Console.WriteLine(fine);
    }
}
#4 Code Example with Golang Programming
Code -
                                                        Golang Programming
package main
import "fmt"
func fineCalculator(actualDay, actualMonth, actualYear, expectedDay, expectedMonth, expectedYear int) int {
	if actualYear < expectedYear {
		return 0
	}
	if actualYear > expectedYear {
		return 10000
	}
	if actualMonth < expectedMonth {
		return 0
	}
	if actualMonth > expectedMonth {
		return (actualMonth - expectedMonth) * 500
	}
	if actualDay < expectedDay {
		return 0
	}
	if actualDay > expectedDay {
		return (actualDay - expectedDay) * 15
	}
	return 0
}
func main() {
	var actualDay, actualMonth, actualYear int
	var expectedDay, expectedMonth, expectedYear int
	fmt.Scan(&actualDay)
	fmt.Scan(&actualMonth)
	fmt.Scan(&actualYear)
	fmt.Scan(&expectedDay)
	fmt.Scan(&expectedMonth)
	fmt.Scan(&expectedYear)
	result := fineCalculator(actualDay, actualMonth, actualYear, expectedDay, expectedMonth, expectedYear)
	fmt.Println(result)
}
#5 Code Example with Java Programming
Code -
                                                        Java Programming
import java.util.Scanner;
public class Solution {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int da = in.nextInt();
        int ma = in.nextInt();
        int ya = in.nextInt();
        int de = in.nextInt();
        int me = in.nextInt();
        int ye = in.nextInt();
        int fine = 0;
        if (ya > ye) fine = 10000;
        else if (ya == ye) {
            if (ma > me) fine = (ma - me) * 500;
            else if (ma == me && da > de) fine = (da - de) * 15;
        }
        System.out.println(fine);
    }
}
#6 Code Example with Javascript Programming
Code -
                                                        Javascript Programming
function processData(input) {
    //Enter your code here
    const [d1,m1,y1,d2,m2,y2] = input.split(/\s/).map(Number);
    if (y1 !== y2) console.log(y1 > y2 ? 10000 : 0);
    else if(m1 !== m2) console.log(m1 > m2 ? (m1 - m2) * 500 : 0);
    else console.log(d1 > d2 ? (d1 - d2) * 15 : 0);
} 
process.stdin.resume();
process.stdin.setEncoding("ascii");
_input = "";
process.stdin.on("data", function (input) {
    _input += input;
});
process.stdin.on("end", function () {
   processData(_input);
});
#7 Code Example with Python Programming
Code -
                                                        Python Programming
actually = list(map(int, input().split()))
da, ma, ya = actually
expected = list(map(int, input().split()))
de, me, ye = expected
fine = 0
if ya > ye:
    fine = 10000
elif ya == ye:
    if ma > me:
        fine = (ma - me) * 500
    elif ma == me and da > de:
        fine = (da - de) * 15
print(fine)
#8 Code Example with PHP Programming
Code -
                                                        PHP Programming
 0 ? 15 * ($d1 - $d2) : 0;
    $m = 500 * ($m1 - $m2) > 0 ? 500 * ($m1 - $m2) : 0;
    $y = $y1 - $y2 > 0 ? 10000 : 0;
    if ($y > 0) {
        return $y;
    }
    if ($m > 0) {
        return $m;
    }
    if ($d > 0) {
        return $d + $m + $y;
    }
    return 0;
}
$_fp = fopen("php://stdin", "r");
fscanf($_fp, "%[^\n]", $date1);
fscanf($_fp, "%[^\n]", $date2);
$date1 = date_parse_from_format('j m Y', $date1);
$date2 = date_parse_from_format('j m Y', $date2);
echo libraryFine($date1['day'], $date1['month'], $date1['year'], $date2['day'], $date2['month'], $date2['year']);
?>
