Kullanıcının gireceği iki tarih arasında kaç gün olduğunu bulan bir Pascal programını, aşağıda belirtilenlere uygun olarak yazınız:
Program GunSay (Input, Output);
{ Bu program aynı yıl içindeki iki tarih arasında
kaç gün olduğunu hesaplar }
uses WinCrt;
const
DatePrompt1 = ' aa gg biçeminde ilk tarihi giriniz : ';
DatePrompt2 = ' aa gg biçeminde ikinci tarihi giriniz : ';
var
Month1, Day1, Month2, Day2, {Input değişkenleri}
JulianDate1, JulianDate2, {Hesaplanan değişkenler}
Difference {Output değişkenleri}
: Integer;
ValidDate1, ValidDate2 {Denetim Değişkenleri}
: Boolean;
{**********************************************************************}
procedure ValidateMonth (Month : Integer;
var ValidMonth : Boolean);
{ Girilen ayın geçerliliğini denetler }
begin {ValidateMonth}
ValidMonth := (Month >= 1) and (Month <= 12);
if not ValidMonth then
Writeln ('Geçersiz ay : ', Month)
end; {ValidateMonth}
{----------------------------------------------------------------------}
procedure ValidateDay (Month, Day : Integer;
var ValidDay : Boolean);
{ Girilen günün geçerliliğini denetler }
var
NumberDays : Integer;
begin {ValidateDay}
case Month of
2 : NumberDays := 28;
4,6,9,11 : NumberDays := 30;
1,3,5,7,8,10,12 : NumberDays := 31
end; {case}
ValidDay := (Day >= 1) and (Day <= NumberDays);
if not ValidDay then
Writeln ('Geçersiz Gün : ', Day)
end; {ValidateDay}
{-----------------------------------------------------------------------}
procedure ComputeJulianDate (CalendarMonth,
CalendarDay : Integer;
var ValidDate : Boolean;
var JulianDate : Integer);
{ Yılbaşından itibaren ay başına kadar kaç gün geçtiğini hesaplar.
Buna "Julian Gün" denilir. }
begin {ComputeJulianDate}
ValidateMonth (CalendarMonth, ValidDate);
if ValidDate then
ValidateDay (CalendarMonth, CalendarDay, ValidDate);
if ValidDate then
begin
case CalendarMonth of
1 : JulianDate := 0;
2 : JulianDate := 31;
3 : JulianDate := 59;
4 : JulianDate := 90;
5 : JulianDate := 120;
6 : JulianDate := 151;
7 : JulianDate := 181;
8 : JulianDate := 212;
9 : JulianDate := 243;
10 : JulianDate := 273;
11 : JulianDate := 304;
12 : JulianDate := 334
end; {case}
JulianDate := JulianDate + CalendarDay ;
end {if}
end; {ComputeJulianDate}
{----------------------------------------------------------------------}
procedure Wait;
begin {Wait}
Write ('Devam için tuşuna basınız');
Readln
end; {Wait}
{**********************************************************************}
BEGIN {Ana Program}
ClrScr;
{1.0 Tarihlerin girişi }
ClrScr;
Write (DatePrompt1);
Readln (Month1, Day1);
Write (DatePrompt2);
Readln (Month2, Day2);
{2.0 Girilen tarihlerin yılbaşından itibaren kaçıncı gün
olduğunu hesaplar "Julian Gün" }
Writeln;
ComputeJulianDate (Month1, Day1, ValidDate1 ,JulianDate1);
Write ('İlk Tarih : Ay = ',Month1,' Gün = ',Day1);
if ValidDate1 then
Writeln(' Julian Gün 1 = ', JulianDate1)
else
Writeln;
ComputeJulianDate (Month2, Day2, ValidDate2, JulianDate2);
Write ('İkinci Tarih : Ay = ',Month2,' Gün = ',Day2);
if ValidDate2 then
Writeln(' Julian Gün 2 = ', JulianDate2)
else
Writeln;
{3.0 Julian Günler arasındaki farkı bulur ve yazar }
if ValidDate1 and ValidDate2 then
begin
Difference := JulianDate2 - JulianDate1;
WriteLn;
Writeln ('Tarihler arasındaki fark : ', Difference)
end
else
Writeln ('Girilen tarihler geçersiz olduğundan hesap yapılmadı');
{4.0 Wait}
Wait
END. {Ana Program}
Kullanıcının istediği bir sayıya kadar olan ve 3 ile tam bölünebilen sayıları toplayan bir Pascal programı yazınız.
Program Soru02; uses WinCrt; Var ustsayi,i,toplam : Integer; Begin WriteLn( 'Hangi sayıya kadar 3 ile bölünebilenleri toplayacaksınız? '); Read(Ustsayi); Toplam:=0; For i:=1 to Ustsayi do If i mod 3 = 0 then Toplam := Toplam+i; writeln(Toplam) End.