Starost dijakov
Napiši program, ki naj izpiše, ali je dijak polnoleten, ali ne. Uporabnik naj vnese
datum rojstva dijaka in današnji datum. Metoda naj izračuna, koliko je
dijak star in vrne starost v letih (dnevi in meseci niso pomembni). Primeri vpisov datumov (oblika dd.mm.llll):
02.07.1991
14.08.1988
Namig
Metoda naj preveri, če je v tem letu dijak že imel rojstni dan. Če ne, potem je še eno leto mlajši, sicer je starost dijaka kar razlika med letnicama.
Rešitev (Java)
import javax.swing.JOptionPane;
public class StarostDijakov {
public static void main(String[] args) {
//preberemo datum rojstva in danasnji datum
String datumRojstva =
JOptionPane.showInputDialog("Vpiši datum rojstva dijaka v obliki dd.mm.llll!");
String danasnjiDatum =
JOptionPane.showInputDialog("Vpiši današnji datum v obliki dd.mm.llll!");
//izracunamo starost
int starost = star(datumRojstva, danasnjiDatum);
//izpisemo, ali je polnoleten ali ne
if (starost < 18) System.out.println("Dijak ni polnoleten.");
else System.out.println("Dijak je polnoleten.");
}
public static int star(String datRoj, String danDat) {
//iz datuma preberemo dan, mesec in leto
String danDan = danDat.substring(0, 2);
String danMes = danDat.substring(3, 5);
String danLet = danDat.substring(6);
String rojDan = datRoj.substring(0, 2);
String rojMes = datRoj.substring(3, 5);
String rojLet = datRoj.substring(6);
//dan, mesec in leto spremenimo v cela stevila
int dD = Integer.parseInt(danDan);
int dM = Integer.parseInt(danMes);
int dL = Integer.parseInt(danLet);
int rD = Integer.parseInt(rojDan);
int rM = Integer.parseInt(rojMes);
int rL = Integer.parseInt(rojLet);
//izracunamo starost
int starost = 0;
if ( ((dM - rM) > 0) || ((dM == rM) && ((dD - rD) >= 0)) ) starost = dL - rL;
else starost = dL - rL - 1;
return starost;
}
}
Rešitev (C#)
using System;
using System.Collections.Generic;
using System.Text;
namespace StarostDijakov {
class StarostDijakov {
static void Main(string[] args) {
//preberemo datum rojstva in danasnji datum
Console.Write("Vpiši datum rojstva dijaka v obliki dd.mm.llll: ");
String datumRojstva = Console.ReadLine();
Console.Write("Vpiši današnji datum v obliki dd.mm.llll: ");
String danasnjiDatum = Console.ReadLine();
//izracunamo starost
int starost = star(datumRojstva, danasnjiDatum);
//izpisemo, ali je polnoleten ali ne
if (starost < 18) Console.WriteLine("Dijak ni polnoleten.");
else Console.WriteLine("Dijak je polnoleten.");
Console.ReadKey();
}
public static int star(String datRoj, String danDat) {
//iz datuma preberemo dan, mesec in leto
String danDan = danDat.Substring(0, 2);
String danMes = danDat.Substring(3, 2);
String danLet = danDat.Substring(6);
String rojDan = datRoj.Substring(0, 2);
String rojMes = datRoj.Substring(3, 2);
String rojLet = datRoj.Substring(6);
//dan, mesec in leto spremenimo v cela stevila
int dD = Int32.Parse(danDan);
int dM = Int32.Parse(danMes);
int dL = Int32.Parse(danLet);
int rD = Int32.Parse(rojDan);
int rM = Int32.Parse(rojMes);
int rL = Int32.Parse(rojLet);
//izracunamo starost
int starost = 0;
if (((dM - rM) > 0) || ((dM == rM) && ((dD - rD) >= 0))) starost = dL - rL;
else starost = dL - rL - 1;
return starost;
}
}
}
Rešitev (Python)
#!C:/Python30/python
#-*-encoding: utf-8 -*-
# -*- coding: latin-1 -*-
'''
Created on 1.7.2009
Naloga ni popolna, saj deluje le za letnico ne pa tudi za datum rojstva
@author: fajdigap
'''
import time #uvozimo modul za delo z datumom oz.�asom
def star(datRoj): #oblika zapisa Tue Jan 13 10:17:09 2009
danDat = time.localtime()
danDL = danDat[0]
starost = danDL - datRoj
return starost
#preberemo datum rojstva in danasnji datum
datumRojstva = int(input("Vpiši letnico rojstva dijaka !"))
starost = star(datumRojstva)
#izpisemo, ali je polnoleten ali ne
if (starost < 18):
print ("Dijak ni polnoleten. Ima %d let." %(starost))
else:
print ("Dijak je polnoleten, saj ima %d let." %(starost))