• Tidak ada hasil yang ditemukan

C ++ Argumen Default, Kelas Penyimpanan C ++,

Dalam dokumen MODUL PRAKTIK TA. 2020/2021 (Halaman 104-112)

C ++ Rekursi,

Tujuan :

Mahasiswa dapat menggunakan C ++ Argumen Default, Kelas Penyimpanan C ++, C ++ Rekursi, Referensi Pengembalian C ++ dalam pembuatan

program.

Sebagai latihan untuk meningkatkan kemampuan dalam membuat program.

Program C ++ untuk Menghitung Faktorial Bilangan Menggunakan Rekursi Contoh untuk mencari faktorial dari bilangan bulat non-negatif (dimasukkan oleh pengguna) menggunakan rekursi.

Program ini mengambil bilangan bulat positif dari pengguna dan menghitung faktorial dari bilangan tersebut. Misalkan, pengguna memasukkan 6 lalu,

Faktorial akan sama dengan 1 * 2 * 3 * 4 * 5 * 6 = 720

Anda akan belajar mencari faktorial sebuah bilangan menggunakan fungsi rekursif dalam contoh ini.

Kunjungi halaman ini untuk mempelajari, bagaimanakita dapat menggunakan loop untuk menghitung faktorial .

Contoh: Hitung Faktorial Menggunakan Rekursi

#include<iostream>

using namespace std;

int factorial(int n);

int main() { int n;

cout << "Enter a positive integer: ";

cin >> n;

cout << "Factorial of " << n << " = " << factorial(n); return 0; } int factorial(int n) {

if(n > 1) return n * factorial(n - 1);

else return 1; } Keluaran

Masukkan bilangan bulat positif: 6 Faktorial 6 = 720

Dalam program di atas, misalkan pengguna memasukkan angka 6. Nomor tersebut diteruskan ke fungsi factorial() .

Modul Praktek Bahasa C++ Shell Marto Sihombing Dalam fungsi ini, 6 dikalikan dengan faktorial (6 - 1 = 5). Untuk ini, angka 5 diteruskan lagi ke fungsi factorial() .

Begitu juga pada iterasi berikutnya, 5 dikalikan dengan faktorial (5 - 1 = 4). Dan, 4 diteruskan ke fungsi factorial() .

Ini berlanjut hingga nilainya mencapai 1 dan fungsi mengembalikan 1.

Sekarang, setiap fungsi mengembalikan nilai kembali untuk menghitung 1 * 2 * 3 * 4 * 5 * 6 = 720, yang dikembalikan ke fungsi main() .

Bilangan bulat positif disebut bilangan Armstrong (berorde n) jika abcd ... = a n + b n + c n + d n + ...

Dalam kasus bilangan Armstrong yang terdiri dari 3 digit, jumlah pangkat tiga dari setiap digit sama dengan bilangan itu sendiri. Misalnya, 153 adalah bilangan Armstrong karena 153 = 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3

Contoh: Periksa Jumlah 3 Digit Armstrong

#include <iostream>

using namespace std; int main() {

int num, originalNum, remainder, result = 0;

cout << "Enter a three-digit integer: ";

cin >> num; originalNum = num;

while (originalNum != 0) { // remainder contains the last digit remainder = originalNum % 10; result += remainder * remainder * remainder; // removing last digit from the orignal number originalNum /= 10; }

if (result == num) cout << num << " is an Armstrong number.";

else cout << num << " is not an Armstrong number.";

return 0; } Keluaran

Masukkan bilangan bulat positif: 371 371 adalah nomor Armstrong.

Dalam program ini, kita melakukan iterasi melalui while sampai originalNum adalah 0.

Di setiap iterasi loop, pangkat tiga dari digit terakhir orignalNum ditambahkan ke hasil . remainder = originalNum % 10; result += remainder * remainder * remainder;

Dan, digit terakhir dihapus dari orignalNum .

Saat perulangan berakhir, jumlah kubus digit individu disimpan sebagai hasil .

Contoh: Periksa Jumlah n Digit Armstrong

#include <cmath>

#include <iostream>

using namespace std;

int main() {

int num, originalNum, remainder, n = 0, result = 0, power;

cout << "Enter an integer: ";

cin >> num; originalNum = num;

while (originalNum != 0) { originalNum /= 10; ++n; } originalNum = num;

Modul Praktek Bahasa C++ Shell Marto Sihombing while (originalNum != 0) { remainder = originalNum % 10; // pow() returns a double value // round() returns the equivalent int power = round(pow(remainder, n));

result += power; originalNum /= 10; }

if (result == num) cout << num << " is an Armstrong number.";

else cout << num << " is not an Armstrong number.";

return 0; }

Keluaran

Masukkan bilangan bulat: 1634 1634 adalah nomor Armstrong.

Dalam program ini, jumlah digit bilangan yang dimasukkan dihitung terlebih dahulu dan disimpan dalam n .

Dan, fungsi pow() menghitung kekuatan digit individu di setiap iterasi loop while .

Program ini meminta pengguna untuk memasukkan dua bilangan bulat dan menampilkan semua nomor Armstrong di antara interval yang diberikan.

Jikakita tidak tahu cara memeriksa apakah suatu nomor adalah Armstrong atau tidak dalam pemrograman, program ini mungkin tampak sedikit rumit.

Contoh: Menampilkan Nomor Armstrong di Antara Interval

#include <iostream>

using namespace std; int main() { int num1, num2, i, num, digit, sum;

cout << "Enter first number: ";

cin >> num1;

cout << "Enter second number: ";

cin >> num2;

cout << "Armstrong numbers between " << num1 << " and " << num2 << " are: " <<

endl;

for(i = num1; i <= num2; i++) { sum = 0; num = i;

for(; num > 0; num /= 10) {

digit = num % 10; sum = sum + digit * digit * digit; } if(sum == i) { cout << i << endl; } }

return 0; } Keluaran

Masukkan angka pertama: 100 Masukkan angka kedua: 400

Nomor Armstrong antara 100 dan 400 adalah:

153 370 371

Modul Praktek Bahasa C++ Shell Marto Sihombing

Dalam program ini, diasumsikan bahwa pengguna selalu memasukkan angka yang lebih kecil terlebih dahulu. Program ini tidak akan menjalankan tugas yang dimaksudkan jika pengguna memasukkan angka yang lebih besar terlebih dahulu.kita dapat menambahkan kode untuk menukar dua angka yang dimasukkan oleh pengguna jika pengguna memasukkan angka yang lebih besar terlebih dahulu agar program ini bekerja dengan baik.

Dalam program ini, setiap angka antara interval diambil dan disimpan dalam variabel num . Kemudian, setiap digit dari nomor tersebut diambil dalam digit dan kubik (^ 3).

Hasil kubik ditambahkan ke hasil kubik dari jumlah digit terakhir.

Program untuk mencetak segitiga menggunakan *, angka dan karakter Contoh 1: Program untuk mencetak setengah piramida menggunakan * *

Contoh 2: Program mencetak setengah piramida a menggunakan angka 1

Modul Praktek Bahasa C++ Shell Marto Sihombing cout << "\n"; }

return 0; }

Contoh 3: Program untuk mencetak setengah piramida menggunakan huruf SEBUAH

BB CCC DDDD EEEEE Kode sumber

#include <iostream>

using namespace std;

int main() {

char input, alphabet = 'A';

cout << "Enter the uppercase character you want to print in the last row: ";

cin >> input;

for(int i = 1; i <= (input-'A'+1); ++i) {

for(int j = 1; j <= i; ++j) { cout << alphabet << " "; } ++alphabet;

cout << endl; } return 0; }

Program untuk mencetak setengah piramida terbalik menggunakan * dan angka

Contoh 4: Setengah piramida terbalik menggunakan * * * * * *

* * * * * * * * * *

Kode sumber

#include <iostream>

using namespace std; int main() { int rows;

cout << "Enter number of rows: ";

cin >> rows;

for(int i = rows; i >= 1; --i) { for(int j = 1; j <= i; ++j) { cout << "* "; }

cout << endl; } return 0; }

Contoh 5: Setengah piramida terbalik menggunakan angka 1 2 3 4 5

Modul Praktek Bahasa C++ Shell Marto Sihombing 1 2 3 4

1 2 3 1 2 1

Kode sumber

#include <iostream>

using namespace std;

int main() { int rows;

cout << "Enter number of rows: ";

cin >> rows;

for(int i = rows; i >= 1; --i) { for(int j = 1; j <= i; ++j) { cout << j << " "; } cout << endl; } return 0; }

Program untuk menampilkan piramida dan piramida terbalik menggunakan * dan angka

Contoh 6: Program untuk mencetak piramida penuh menggunakan * *

* * * * * * * * * * * * * * * * * * * * * * * * Kode sumber

#include <iostream>

using namespace std;

int main() { int space, rows;

cout <<"Enter number of rows: ";

cin >> rows;

for(int i = 1, k = 0; i <= rows; ++i, k = 0) {

for(space = 1; space <= rows-i; ++space) { cout <<" "; } while(k != 2*i-1) { cout << "* "; ++k; } cout << endl; } return 0; }

Contoh 7: Program mencetak piramida menggunakan angka 1

2 3 2 3 4 5 4 3 4 5 6 7 6 5 4 5 6 7 8 9 8 7 6 5 Kode sumber

Modul Praktek Bahasa C++ Shell Marto Sihombing Contoh 8: Piramida penuh terbalik menggunakan * * * * * * * * * * Contoh 9: Cetak segitiga Pascal

1

Modul Praktek Bahasa C++ Shell Marto Sihombing int rows, coef = 1;

cout << "Enter number of rows: ";

cin >> rows;

for(int i = 0; i < rows; i++) {

for(int space = 1; space <= rows-i; space++) cout <<" ";

for(int j = 0; j <= i; j++) { if (j == 0 || i == 0) coef = 1;

else coef = coef*(i-j+1)/j;

cout << coef << " "; } cout << endl; } return 0; } Contoh 10: Cetak Segitiga Floyd.

1 2 3 4 5 6 7 8 9 10 Kode sumber

#include <iostream>

using namespace std;

int main() {

int rows, number = 1;

cout << "Enter number of rows: ";

cin >> rows;

fo r(int i = 1; i <= rows; i++) { for(int j = 1; j <= i; ++j) {

cout << number << " "; ++number; } cout << endl;

}

return 0; }

Soal Modul ke – 6

 Masalah : buatlah Program untuk rekursif untuk menghitung combinasi dan faktorial.

 Solusi, Algoritma

 Flowchart

 Program

Modul Praktek Bahasa C++ Shell Marto Sihombing

Modul ke –7

Dalam dokumen MODUL PRAKTIK TA. 2020/2021 (Halaman 104-112)