Coding C++
contoh soal
1. (Matematika: Bilangan segitiga) Bilangan segitiga didefinisikan sebagai m (m + 1) / 2 untuk
m = 1, 2, c, dan seterusnya. Oleh karena itu, beberapa angka pertama adalah 1, 5, 12, 22,. . . .
Tulis fungsi dengan header berikut yang mengembalikan angka segitiga:
int getTriangularNumber(int n)
Tulis program pengujian yang menggunakan fungsi ini untuk menampilkan 75 segitiga pertama
angka dengan 5 angka di setiap baris.
jawab :
#include<iostream>
#include<conio.h>
#include<stdio.h>
#include<math.h>
using namespace std;
int getTingularNumber(int n){
int j = 5,a = 1;
cout << "Merupakan bilangan suku ke : " << endl;
for(int h = 1; h <= n ; h++){
for(int k = a; k <= j; k++){
cout << k << "\t";
}
a = a + 5;
j = j + 5;
cout << endl;
}
cout << "================================" << endl;
}
void aturan_2(int n){
int a, rumus;
cout << "Suku ke" << "\t" << "||" << "\t" << "bilangan segi tiga" << endl;
cout << "--------" << "||" << "\t" << "-----------------" << endl;
for(a = 1; a <= n; a++){
rumus = (((3*a*a)/2) - (a/2));
cout << a << "\t" <<"||" << "\t"<< rumus << endl;
}
}
int main(void){
getTingularNumber(15);
aturan_2(75);
cin.get();
getch();
return 0;
}
// ini adalah pogram hasilnya
outputnya :
soal 2.
(Rata-rata digit dalam integer) Tulis fungsi yang menghitung rata-rata
digit dalam bilangan bulat. Gunakan header fungsi berikut:
double averageDigits (long n)
Misalnya, averageDigits (936) mengembalikan 6.0 ((9 + 3 + 6) / 3). (Petunjuk: Gunakan
operator% untuk mengekstrak digit, dan operator / untuk menghapus digit yang diekstraksi.
Misalnya, untuk mengekstrak 6 dari 936, gunakan 936% 10 (= 6). Untuk menghapus 6 dari 936,
gunakan 936/10 (= 93). Gunakan loop untuk berulang kali mengekstrak dan menghapus digit hingga
semua digit diekstraksi. Tulis program pengujian yang meminta pengguna untuk memasukkan file
integer dan menampilkan jumlah semua digitnya.
jawab:
#include<iostream>
#include<conio.h>
#include<stdio.h>
#include<math.h>
using namespace std;
double averageDigits(long n){
int a[3],b,c,rata;
int i = 0;
//proses
while(n != 0 && i < 3){
a[i] = n % 10;
n /= 10;
i++;
}
cout << "Maka rata - rata yang di miliki" << endl;
cout << "digit - digit bilangan berikut : " << endl;
cout << a[0] << ", " << a[1] << ", dan " << a[2] << endl;
// hasil
rata = (a[0] + a[1] + a[2])/3;
cout << "Maka hasil dari : " << endl;
cout << "( " << a[0] << " + ";
cout << a[1] << " + " << a[2];
cout << " ) / 3 = " << rata << endl;
}
int main(void){
int a;
cout << "Masukan angka yang ingin di cetak : ";
cin >> a;
averageDigits(a);
cin.get();
getch();
return 0;
}
outputnya :
Soal 3
(Armstrong integer) Tulis fungsi dengan header berikut:
int cubeOfDigits(int number)
void isArmstrong(int sum, int number)
Gunakan cubeOfDigits untuk mengimplementasikan isArmstrong. Integer adalah Armstrong
integer jika jumlah pangkat tiga dari digitnya sama dengan bilangan itu sendiri. Menulis sebuah
program uji yang meminta pengguna untuk memasukkan bilangan bulat dan melaporkan apakah itu file
Integer Armstrong.
jawab:
#include<iostream>
#include<conio.h>
#include<stdio.h>
using namespace std;
int cubeOfDigits(int number,int sum){
int i = 0,a[sum],amstrong,u;
u = number;
while(number != 0 && i < sum){
a[i] = number % 10;
number /= 10;
i++;
}
cout << "Digit-digit yang di tampilkan iyalah : " << endl;
cout << a[2] << ", " << a[1] << " dan " << a[0] << endl;
amstrong = (a[2]*a[2]*a[2]) + (a[1]*a[1]*a[1]) + (a[0]*a[0]*a[0]);
if(amstrong == u){
cout << "Ini adalah bilangan Amstrong" << endl;
}else {
cout << "Ini bukan bilangan Amstrong" << endl;
}
}
int main(void){
int a,b,c;
cout << "Masukan nilai mana saja yang ingin di cek : ";
cin >> a;
cout << "Berapa digit bilnagan yang kamu inginkan : ";
cin >> b;
cubeOfDigits(a,b);
cin.get();
getch();
return 0;
}
outputnya :
soal 4
(Menampilkan angka genap dalam integer) Tulis fungsi dengan header berikut ke
tampilkan angka genap dalam bilangan bulat:
void displayEven(int number)
Misalnya, displayEven (345) menampilkan 4. Tulis program pengujian yang meminta
pengguna untuk memasukkan integer dan menampilkan angka genap di dalamnya.
jawab :
#include<iostream>
#include<conio.h>
#include<stdio.h>
using namespace std;
void displayEven(int number){
int i = 0,sum,k,u;
cout << "Masukan berapa dijid bilngan yang ingin di buat : ";
cin >> sum;
int a[sum];
while(number != 0 && i < sum){
a[i] = number % 10;
number /= 10;
i++;
}
for(int h = 0; h < sum; h++){
u = a[h];
if(u % 2 == 0){
cout << a[h] << " : adalah digit genab";
}
}
}
int main(void){
int a;
cout << "Masukan nilai yang terdiri 3 dijit ";
cout << "untuk menentukan salah satu digitnya genab : ";
cin >> a;
displayEven(a);
cin.get();
getch();
return 0;
}
outputnya :
soal
(Keuangan: validasi nomor kartu kredit) Nomor kartu kredit mengikuti tertentu
pola. Nomor kartu kredit harus terdiri dari 13 hingga 16 digit. Nomor
harus dimulai dengan yang berikut:
n 4 untuk kartu Visa
n 5 untuk kartu MasterCard
n 37 untuk kartu American Express
n 6 untuk kartu Discover
Pada tahun 1954, Hans Luhn dari IBM mengusulkan algoritme untuk memvalidasi kartu kredit
angka. Algoritma berguna untuk menentukan apakah sebuah nomor kartu dimasukkan
dengan benar atau dipindai dengan benar oleh pemindai. Hampir semua nomor kartu kredit adalah
dihasilkan setelah pemeriksaan validitas ini, umumnya dikenal sebagai pemeriksaan Luhn atau
cek Mod 10. Hal tersebut dapat dijelaskan sebagai berikut. (Sebagai ilustrasi, pertimbangkan
nomor kartu 4388576018402626.)
1. Gandakan setiap digit kedua dari kanan ke kiri. Jika penggandaan angka menghasilkan a
nomor dua digit, tambahkan dua digit untuk mendapatkan satu digit nomor.
Masukkan titik akhir dari ruas baris pertama: 2.0 2.0 0 0
Masukkan titik akhir dari ruas garis kedua: 3 3 1 1
Kedua garis itu tidak bersilangan
4388576018402626
2 * 2 = 4
2 * 2 = 4
4 * 2 = 8
1 * 2 = 2
6 * 2 = 12 (1 + 2 = 3)
5 * 2 = 10 (1 + 0 = 1)
8 * 2 = 16 (1 + 6 = 7)
4 * 2 = 8
Masukkan titik akhir dari ruas baris pertama: 2.0 2.0 0 0
Masukkan titik akhir dari segmen baris kedua: 0 2.0 2.0 0
Titik potongnya adalah: (1, 1)
2. Sekarang tambahkan semua angka satu digit dari Langkah 1.
4 + 4 + 8 + 2 + 3 + 1 + 7 + 8 = 37
3. Tambahkan semua digit di tempat ganjil dari kanan ke kiri pada nomor kartu.
6 + 6 + 0 + 8 + 0 + 7 + 8 + 3 = 38 Latihan Pemrograman 281
4. Jumlahkan hasil dari Langkah 2 dan Langkah 3.
37 + 38 = 75
5. Jika hasil dari Langkah 4 habis dibagi 10, maka nomor kartu tersebut sah; jika tidak,
itu tidak valid. Misalnya, angka 4388576018402626 tidak valid, tetapi
nomor 4388576018410707 valid.
Tulis program yang meminta pengguna memasukkan nomor kartu kredit sebagai string.
Menampilkan apakah nomor tersebut valid. Rancang program Anda untuk menggunakan yang berikut ini
fungsi:
// Kembalikan nilai true jika nomor kartu valid
bool isValid (const string & cardNumber)
// Dapatkan hasil dari Langkah 2
int sumOfDoubleEvenPlace (string const & cardNumber)
// Kembalikan nomor ini jika itu adalah satu digit, jika tidak,
// kembalikan jumlah dari dua digit tersebut
int getDigit (nomor int)
// Kembalikan jumlah digit tempat ganjil dalam nomor kartu
int sumOfOddPlace (string const & cardNumber)
// Kembalikan nilai true jika substr adalah awalan untuk cardNumber
bool beginWith (string const & cardNumber, string const & substr)