Perulangan for saya tidak sesuai dengan yang saya harapkan
Program ini membagi orang ke dalam grup, tapi saat saya buat orangnya 5 dan grup 2. hasil keluarannya jadi 3 orang dan 1 orang, sedangkan 1 orang lagi tidak keluar. saya ekspeknya 3 orang dan 2 orang
#include <iostream> #include <algorithm> #include <conio.h> #include <vector> #include <time.h> using namespace std; int main() { int jumlah_orang, jumlah_kelompok, jumlah_kelompok_iterasi; char user3; vector<string> names; vector<string> names_team; string nama, nama_kelompok; srand(time(NULL)); do { system("cls"); cout << "Jumlah Orang: "; cin >> jumlah_orang; cout << "Jumlah Kelompok: "; cin >> jumlah_kelompok; jumlah_kelompok_iterasi = jumlah_kelompok; if(jumlah_kelompok <= jumlah_orang ) { if(jumlah_kelompok == 1) { system("cls"); cout << "Maaf, tidak bisa membagi ke dalam kelompok,\n"; cout << "Mohon gunakan Random Picker 1 Nama!\n\n"; } else { cin.ignore(); system("cls"); cout << "List Nama:\n"; for(int i = 0; i < jumlah_orang; i++) { cout << "Nama ke-" << i+1 << ": "; getline(cin, nama); names.push_back(nama); } system("cls"); cout << "List Kelompok:\n"; for(int i = 0; i < jumlah_kelompok; i++) { cout << "Nama Kelompok " << i+1 << ": "; getline(cin, nama_kelompok); names_team.push_back(nama_kelompok); } system("cls"); cout << "Data telah disimpan!\n"; cout << "Tekan Enter untuk mengacak Data"; cin.ignore(); system("cls"); for(int i = 0; i < jumlah_kelompok; i++) { cout << names_team[i] << ":\n"; if(jumlah_orang > jumlah_kelompok) { if(jumlah_orang % jumlah_kelompok == 0) { for(int j = 0; j < (jumlah_orang / jumlah_kelompok); j++) { int random_name = rand() % names.size(); cout << j + 1 << ". " << names[random_name] << endl; auto iter_nama = find(names.begin(), names.end(), names[random_name]); if(iter_nama != names.end()) { names.erase(iter_nama); } } } else { // random nama lebih kurang for(int j = 0; j < 1; j++) { if(names.size() % jumlah_kelompok_iterasi == 0) { for(int k = 0; k < names.size() / jumlah_kelompok_iterasi; k++) { int random_name = rand() % names.size(); cout << k + 1 << ". " << names[random_name] << endl; auto iter_nama = find(names.begin(), names.end(), names[random_name]); if(iter_nama != names.end()) { names.erase(iter_nama); } } } else { for(int k = 0; k < ((jumlah_orang / jumlah_kelompok) + 1); k++) { int random_name = rand() % names.size(); cout << k + 1 << ". " << names[random_name] << endl; auto iter_nama = find(names.begin(), names.end(), names[random_name]); if(iter_nama != names.end()) { names.erase(iter_nama); } } } } } // end } else if (jumlah_orang = jumlah_kelompok) { int random_name = rand() % names.size(); cout << "1. " << names[random_name] << endl; auto iter_nama = find(names.begin(), names.end(), names[random_name]); if(iter_nama != names.end()) { names.erase(iter_nama); } } jumlah_kelompok_iterasi = jumlah_kelompok_iterasi - 1; cout << endl; } } } else { cout << "Jumlah kelompok harus lebih sedikit dari jumlah orang!\n"; } cout << "Ulang Program? (Y/T): "; cin >> user3; } while(user3 == 'Y' || user3 == 'y'); getch(); }
1 Kontribusi 0 Poin
atau respon:
Jawaban
Belum ada Jawaban, jadi yang pertama
Login untuk gabung berdiskusiPertanyaan Lainnya
Top Kontributor
- @ahanafi
813 Kontribusi 551 Poin
- @Nandar
648 Kontribusi 204 Poin
- @dianarifr
642 Kontribusi 316 Poin
- @Saputroandhi
509 Kontribusi 162 Poin
- @dodipsitorus
412 Kontribusi 145 Poin