Langsung ke konten utama

Minggu 6: Array

 Soal

  1. Buatlah algoritma dan function dalam bahasa C++ untuk menggantikan strlen, yaitu mengetahui panjang suatu string.
  2. Buatlah algoritma dan program untuk mengubah string menjadi bergantian huruf besar dan kecil. Contoh : Algoritma dan Pemrograman -> AlGoRiTmA dAn PeMrOgRaMaN.





#include <iostream>

using namespace std;

class modifikasi {
    friend ostream& operator<<(ostream&, const modifikasi&);
    friend istream& operator>>(istream&, modifikasi&);
public:
int panjangString(string kalimat);
string ubah(string kalimat);
private:
int panjang, indexKata;
string kalimat, baru;
char awal;
bool besar;
};

int modifikasi::panjangString(string kalimat){
int i;
i = 0;
panjang = 0;
while(int(kalimat[i])>=32 && int(kalimat[i]<=125)){
panjang++;
i++;
}
return panjang;
}

string modifikasi::ubah(string kalimat){
awal = kalimat[0];
if(int(awal)>=65 && int(awal)<=90){
besar = true;
}
if(int(awal)>=97 && int(awal)<=122){
besar = false;
}
indexKata = 0;
for(int i=0; i<panjangString(kalimat); i++){
if(int(kalimat[i]) == 32){
awal = kalimat[i+1];
indexKata = 0;
if(int(awal)>=65 && int(awal)<=90){
besar = true;
}
if(int(awal)>=97 && int(awal)<=122){
besar = false;
}
}
if(int(kalimat[i]) == 32){
baru = baru + " ";
}
if(int(kalimat[i]) != 32){
if(besar){
if(indexKata%2 == 0){
baru = baru + static_cast<char>(toupper(kalimat[i]));
} else{
baru = baru + static_cast<char>(tolower(kalimat[i]));
}
} else{
if(indexKata%2 == 0){
baru = baru + static_cast<char>(tolower(kalimat[i]));
} else{
baru = baru + static_cast<char>(toupper(kalimat[i]));
}
}
indexKata++;
}
}
return baru;
}

istream& operator>>(istream& input, modifikasi& obj){
cout<<"Masukkan string: "; getline(input, obj.kalimat);
cout<<"Panjang string: "<<obj.panjangString(obj.kalimat)<<endl;
cout<<"Setelah dimodifikasi: "<<obj.ubah(obj.kalimat);
}

int main(){
modifikasi x;
cin>>x;
return 0;
}




Komentar