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();
}


avatar tommybasril
@tommybasril

1 Kontribusi 0 Poin

Dipost 2 tahun yang lalu

Belum ada Jawaban. Jadi yang pertama Jawaban

Login untuk ikut Jawaban