Jump to content
Sign in to follow this  
encik pot pet

Aktiviti Pengaturcaraan C #2

Recommended Posts

kali ni korang kena fikir and implement sendiri.. kalau surf/cari kat internet dulu.. rugi la sebab ini adalah latihan utk kebaikan korang sendiri...

1. Tentukan tahun yang dimasukkan oleh pengguna sama tahun tersebut ialah tahun lompat(leap year) atau tidak.. korang kena code utk dari tahun 1900 hingga 3000.

contoh:

Input: 2004

output: tahun lompat...

2. Setelah berjaya dgn code di atas.. ada satu lagi tugas utk korang.. kali ni user akan masukkan tarikh, and program awak tu kena tentukan hari bagi tarikh yang dimasukkan.

contoh:

input:26 8 2004

out: Khamis

sekian....

semoga berjaya

Share this post


Link to post
Share on other sites

A'kum. ni aku try wat aturcara. tapi bodo2 jer la, aku tak reti sgt nih. aku pon tgh blajor lagik nih.... kalo ada komen ok gak.

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

main()
{
 int Tmasuk;
 int Tmula = 1900;
 int Takhir = 3000;

 clrscr();

 printf("Masukkan tahun : ");
 scanf("%d", &Tmasuk);

 for(int x=Tmula; x<=Takhir; x=x+4)
 {
	if(Tmasuk == Tmula){
  printf("\n %d adalah tahun lompat", Tmasuk);
  exit(1); }

	Tmula += 4;

 }

}
ni lak aku guna modulus.
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

main()
{
 int Tmasuk;
 int Tmula = 1900;
 int Takhir = 3000;

 clrscr();

 printf("Masukkan tahun : ");
 scanf("%d", &Tmasuk);

 for(int x=Tmula; x<=Takhir; x=x+4)
 {
	if(Tmasuk % 4 == 0){
  printf("\n %d adalah tahun lompat", Tmasuk);
  exit(1); }

 }

}

Edited by akuBest

Share this post


Link to post
Share on other sites

A'kum. errr baru aku perasan, tak yah wat gelung pon sebenarnya kan? hehehehe... utk soklan no 2 tu, bukannya dah ada ker function utk tentukan hari tu. mktime kan?

Share this post


Link to post
Share on other sites

aktiviti ini utk menguji diri sendiri dalam mengimplementasi sesuatu...

kalau nak menggunakan function orang yang dah buat.. memang banyak smile.gif

no 2 tu kalau nak buat pakai algoritma sendiri susah tu zeph.. kalau pakai formula carik kat net boleh kan?

Utk soalan 1

#include <cstdlib>
#include <cstdio>

using namespace std;

int main()
{ 
    int tahun;

    printf("\n Masukkan tahun: ");
    scanf("%d", &tahun);

    printf("\n Tahun %d ialah", tahun);
    if (tahun%4)
        printf(" tahun tidak lompat.");
    else
        printf(" tahun lompat.");    
    
    printf("\n");
    system("pause");
    return 0;
}

sori, ni kod C++ tapi function aku pakai C punya je..

Share this post


Link to post
Share on other sites

#define MOD4(x) (x%4)

#define msg "tahun "

int y;

scanf("%d",&y);

if(MOD4(y)) fprintf(stdout,msg"biasa",11);

else fprintf(stdout,msg"lompat",12);

Edited by raihan

Share this post


Link to post
Share on other sites

bukan tahun lompat 1900, 2100, 2200, 2300, 2500, 2600, 2700, 2900, 3000

tahun lompat 2000, 2400, 2800

untuk tahun berakhir dengan 00 tahun lompat hanya jika boleh dibahagi dengan 400

Share this post


Link to post
Share on other sites

no 2 tu kalau nak buat pakai algoritma sendiri susah tu zeph.. kalau pakai formula carik kat net boleh kan?

tak kisah la nak design sendiri ke atau ambik dari tenet..

tapi kalau korang buleh design sendiri..

hasilnya (knowledge and experiance) korang jugak yg dapat.. bukan orang lain..

betul tak? wink.gifwink.gif

Share this post


Link to post
Share on other sites

bukan tahun lompat 1900, 2100, 2200, 2300, 2500, 2600, 2700, 2900, 3000

tahun lompat 2000, 2400, 2800

untuk tahun berakhir dengan 00 tahun lompat hanya jika boleh dibahagi dengan 400

uiks ? tahun lompat 4 tahun skali la, bukan 400 tahun skali.

Share this post


Link to post
Share on other sites

erk~ camner ek~

tahun biasa == 365

tahun lompat == 366

so, ikut lengkap 4 tahun termasuk tahun lompat == 1461

jadi 1461%7 != 0, takde alignment pun, so as,

365%7 != 0 && 366%7 != 0

so, camner nak dapatkan algo yg terdekat ni??? adeh~

ke~ kena wat satu initial point... pastu wat rekursif/iteration for utk

dapatkan hari user input...

ha ha~ share sesamer camner teknik u all...

Edited by raihan

Share this post


Link to post
Share on other sites

uiks ? tahun lompat 4 tahun skali la, bukan 400 tahun skali

sila baca my reply dengan teliti sebelum buat komen

#include <stdio.h>

int main(void)
{
	int Hari;
	int Bulan;
	int Tahun;
	static char *HariSeminggu[] = {"Ahad", "Isnin", "Selasa", "Rabu", "Khamis", "Jumaat", "Sabtu"};
	long BilHari;
	int i;

	printf("Masukkan haribulan dalam bentuk dd mm yyyy\n");
	scanf("%d %d %d", &Hari, &Bulan, &Tahun);

	BilHari = (long) (30.42*(Bulan - 1)) + Hari;
	if(Bulan == 2)
  BilHari++;
	if((Bulan > 2) && (Bulan < 8))
  BilHari--;
	if(Bulan > 2)
	{
  if(Tahun % 100 == 0)
  {
  	if(Tahun % 400 == 0)
    BilHari++;
  }
  else if(Tahun % 4 == 0)
  	BilHari++;
	}
  
	for(i = 1900; i < Tahun; i++)
	{
  BilHari = BilHari + 365;
  if(i % 100 == 0)
  {
  	if(i % 400 == 0)
    BilHari++;
  }
  else if(i % 4 == 0)
  	BilHari++;
	}
  
	printf("%s\n",HariSeminggu[BilHari % 7]); 

}

takada error checking

Share this post


Link to post
Share on other sites

leh saya ubah sikit tongue.gif

// declaration
const unsigned char HariSebulan[] = {31,28,31,30,31,30,31,31,30,31,30,31};
const char *HariSeminggu[] = {"Ahad", "Isnin", "Selasa", "Rabu", "Khamis", "Jumaat", "Sabtu"};

// code

        //BilHari =  (30.42*(Bulan - 1)) + Hari;
        //if(Bulan == 2)
        //       BilHari++;
        //if((Bulan > 2) && (Bulan < 8))
        //       BilHari--;
        //if(Bulan > 2)
        //{
        //       if(Tahun % 100 == 0)
        //                {
        //                          if(Tahun % 400 == 0)
        //                                     BilHari++;
        //                           }
        //        else if(Tahun % 4 == 0)
        //                  BilHari++;
        //}

BilHari += Hari;
for(i=0,--Bulan;i<Bulan;i++) {
        if(i==1) BilHari += Tahun%4?28:29;
        else BilHari += HariSebulan[i];
}

smile.gif yg mvkk ni cara guna initial point

bermula 1/1/1900 pada hari isnin,

mmm, mungkin ada terkeliru sikit dgn

konsep tahun lompat kut,

ada sesaper nak cuba bagi cara lain blok bawah dia ni tongue.gif

gurlz yg lain lak, camner teknik u all.

Edited by raihan

Share this post


Link to post
Share on other sites

Sorry kalau saya mencelah....... program ni saya pernah buat dulu pakai java laugh.gif

Saya tak nak cerita pasal koding dia , tapi cuma pasal pattern yang saya jumpa waktu nak buat program ni. dry.gif

Mari kita tengok sini :

hari bagi 1 hb Januari tiap-tiap tahun.......

95 A

96 I

97 R

98 K

99 J

00 Sb

01 I

02 S

03 R

04 K

05 Sb

Apa yang korang nampak ?

Dari situ saya dapat lihat yang hari pada tahun berikut sebenarnya menaik.

Katakan tahun 2003, 1 Jan dia hari Rabu , 2004 1 Jan hari Khamis.

Sebab 2004 tahun lompat , 1 Jan bagi tahun 2005 ialah hari Sabtu bukan hari Jumaat sebab tambah satu hari. dry.gif

Itu pattern atau corak yang saya nampak.

dari situ saya dapat buat koding untuk menentukan 1 hb Jan bagi tahun yang diinputkan tu hari apa. smile.gif

Yang nak paparkan Calender tahun tu dan Cari hari bagi tarikh yang dimasukkan tu senang jer kalau dah tahu 1 hb Jan hari apa laugh.gif

Share this post


Link to post
Share on other sites

takpe ar~ kalau nak mencelah pun takpe,

kalau taknak baru kasi sontot je, haha~

kat rumah tu jangan malas malas koding lagi

bangun je, koding, bangun je koding tongue.gif

atau dihalau~ hahaha~ acah je tongue.gif

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...