Mengerjakan challenge SOAL dengan menggunakan bahasa pemrograman C++

Hari ini saya akan mengerjakan sebuah soal dengan menggunakan bahasa pemrograman C++. Adapun soal yang akan saya kerjakan adalah sebagai berikut:

25 / 100

Keterangan:

- dibutuhkan 25 hari untuk membangun sebuah kebiasaan
- dibutuhkan 100 hari untuk membangun sebuah gaya hidup

Berdasarkan rumus di atas, seorang lelaki sebut saja si Aldi bertekad membuat kegiatan lari pagi sebagai gaya hidupnya. Jika lari pagi sudah tercatat sebagai kebiasaannya sejak Minggu, 1 Januari 2021 maka pada hari dan tanggal berapakah dia mulai lari pagi dan lari pagi menjadi gaya hidupnya? 

Ketentuan:

1. Tiap bulan memiliki 30 hari, tiap tahun memiliki 12 bulan.

2. Menggunakan maksimal 7 variabel. 

3. Terdapat 4 input-an untuk hari, tanggal, bulan dan tahun. 

4. Minimal terdapat dua penggunaan switch-case.

5. Terdapat penggunaan statement looping.


Berikut saya tampilkan source code nya:

#include <iostream>

using namespace std;

string KonversiHari (int inputHari){
  switch (inputHari){
    case 0:
      return "Minggu";
      break;
    case 1:
      return "Senin";
      break;
    case 2:
      return "Selasa";
      break;
    case 3:
      return "Rabu";
      break;
    case 4:
      return "Kamis";
      break;
    case 5:
      return "Jumat";
      break;
    case 6:
      return "Sabtu";
      break;
    default:
      return "Hari salah";
    }


}

string KonversiBulan (int inputBulan){
  switch (inputBulan){
    case 1:
      return "Januari";
      break;
    case 2:
      return "Februari";
      break;
    case 3:
      return "Maret";
      break;
    case 4:
      return "April";
      break;
    case 5:
      return "Mei";
      break;
    case 6:
      return "Juni";
      break;
    case 7:
      return "Juli";
      break;
    case 8:
      return "Agustus";
      break;
    case 9:
      return "September";
      break;
    case 10:
      return "Oktober";
      break;
    case 11:
      return "November";
      break;
    case 12:
      return "Desember";
      break;
    default:
      return "Bulan salah";
    }


}

int CekHari (int hari, int hitungan){
  if (hari == 0){
      if (((hitungan + hari) % 7) == 0){
	  return hari;
      }else{
	  return 7 - ((hitungan + hari) % 7);
      }
      return hari;
    }else
     return hari - (hitungan % 7);
}


void CekKebiasaan (string keterangan, int hari, int hitungan,
	      int inputTanggal, int inputBulan, int inputTahun, bool mulai){
  int tanggal = inputTanggal;
  int bulan = inputBulan;
  int tahun = inputTahun;
  if (mulai)
    {
      for (int i = hitungan; i >= 1; i--)
	{
	  tanggal--;
	  if (tanggal < 1)
	    {

	      tanggal = 30;
	      bulan--;
	      if (bulan < 1)
		{
		  bulan = 12;
		  tahun--;
		}
	    }

	}
    }
  else
    {

      for (int i = 1; i <= hitungan; i++)
	{

	  tanggal++;
	  if (tanggal > 30)
	    {
	      tanggal = 1;
	      bulan++;
	      if (bulan > 12)
		{

		  bulan = 1;
		  tahun++;
		}
	    }
	}

    }

  cout << keterangan <<
    KonversiHari (mulai ? CekHari (hari, hitungan)
		  : ((hitungan +
		      hari) %
		     7)) << ", " << tanggal << " " <<
    KonversiBulan (bulan) << " " << tahun;
}



int main (){
  int inputHari, inputTanggal, inputBulan, inputTahun;
  cout << "Masukkan hari (0 = Minggu..... 6 = Sabtu)" << endl;
  cout << "Pilihan Anda: ";
  cin >> inputHari;
  cout << "\nMasukkan tanggal: ";
  cin >> inputTanggal;
  cout << "\nMasukkan bulan: ";
  cin >> inputBulan;
  cout << "\nMasukkan tahun: ";
  cin >> inputTahun;
  CekKebiasaan ("\nAldi mulai pada hari ", inputHari, 25,
		inputTanggal, inputBulan, inputTahun, true);
  cout << "\nMenjadi kebiasaan pada hari " <<
    KonversiHari (inputHari) << ", " << inputTanggal << " " <<
    KonversiBulan (inputBulan) << " " << inputTahun;
  CekKebiasaan ("\nMenjadi gaya hidup pada hari ", inputHari, 75,
		inputTanggal, inputBulan, inputTahun, false);
  return 0;
}








0 komentar:

Post a Comment

Informasi:
Form komentar ini menggunakan moderasi, setiap komentar yang masuk akan melalui proses pemeriksaan sebelum ditampilkan dalam kolom komentar.

Memasang link dan konten yang mengandung pornografi di komentar tidak akan di tampilkan. Hanya komentar yang membangun dan sesuai topik artikel saja yang akan kami tampilkan.

Mohon maaf atas ketidaknyamanannya.