Selamat datang di ForSa! Forum diskusi seputar sains, teknologi dan pendidikan Indonesia.

Welcome to Forum Sains Indonesia. Please login or sign up.

Maret 29, 2024, 04:28:27 PM

Login with username, password and session length

Topik Baru

Artikel Sains

Anggota
Stats
  • Total Tulisan: 139,653
  • Total Topik: 10,405
  • Online today: 207
  • Online ever: 1,582
  • (Desember 22, 2022, 06:39:12 AM)
Pengguna Online
Users: 0
Guests: 222
Total: 222

Aku Cinta ForSa

ForSa on FB ForSa on Twitter

[ASK] Program menghasilkan output suatu pola

Dimulai oleh ghifariyusuf, Oktober 22, 2014, 09:21:49 PM

« sebelumnya - berikutnya »

0 Anggota dan 1 Pengunjung sedang melihat topik ini.

ghifariyusuf

Tolongin ane ya ngerjain tugas kuliah ini, ane beluM mengerti caranya :(

Buatlah sebuah program yg menerima inputan berupa bilangan integer ganjil 0 < N < 25 dan akan menghasilkan pola seperti contoh berikut :

INPUT : 3
OUTPUT :
3  2  3
2  1  2
3  2  3

INPUT : 7
OUTPUT :
7  6  7  6  7  6  7
6  5  4  5  4  5  6
7  4  3  2  3  4  7
6  5  2  1  2  5  6
7  4  3  2  3  4  7
6  5  4  5  4  5  6
7  6  7  6  7  6  7

makasih gan  ;D

sm2jc5

int angka = 100;
while((angka<0) || (angka>=25) || (angka%2 == 0)){
  std::cout<<"Masukan sebuah angka ganjil (0 < N < 25): ";
  std::cin>>angka;
}
int angkaAwal=angka;
std::vector<std::vector<int> > randVect;
std::vector<int> v;
for(int i=0;i<angka;++i){
  randVect.push_back(v);
  for(int j=0;j<angka;++j)
    randVect.at(i).push_back(0);   
}
int ulang=0;
if(angka==1)
  ulang=1;
else
  ulang = ((angka-3)/2)+1;
int ii=0;
int jj=0;
for(int x=0;x<ulang;++x,++ii,++jj,angka-=2){
  for(int i=ii;i<angka+ii;++i){
    for(int j=jj;j<angka+jj;++j){
      if(x%2==0){  //jika indeks koordinat awal genap
if(i%2==0){ //jika indeks baris genap
  if(j%2==0) //jika indeks kolom genap
    randVect.at(i).at(j) = angka;
  else
    randVect.at(i).at(j)=angka-1;
}else{  //jika indeks baris ganjil
  if(j%2==0)  //jika indeks kolom genap
    randVect.at(i).at(j)=angka-1;
  else
    randVect.at(i).at(j)=randVect.at(i).at(j-1)-1;
}
      }else{   //jika indeks koordinat awal ganjil
if(i%2==0){ //jika indeks baris genap
  if(j%2==0) //jika indeks kolom genap
    randVect.at(i).at(j) = randVect.at(i).at(j-1)-1;
  else
    randVect.at(i).at(j)=angka-1;
}else{  //jika indeks baris ganjil
  if(j%2==0)  //jika indeks kolom genap
    randVect.at(i).at(j)=angka-1;
  else
    randVect.at(i).at(j)=angka;
}
      }
    }
  }
}
for(int i=0;i<angkaAwal;++i){
  for(int j=0;j<angkaAwal;++j)
    std::cout<<std::setw(3)<<randVect.at(i).at(j)<<" ";
  std::cout<<'\n';
}