아래 코드는 32명을 랜덤으로 6개의 조를 짜는 코드인데요.


32명 중에 10명은 1학년, 10명은 2학년, 12명은 3학년으로 지정해서


조의 가장 첫번째 사람의 학년과 중복되지 않은 학년들로 조를 구성하게끔 만들고 싶습니다.


도와주세요.


그리고 텍스트에 저장된 명단은 아래와 같습니다.


이성호 김영섭 김현우 장요셉  

박지은 이연경 이문호 이성순

김문규 강준상 신석우 김현동

조혜진 김효정 안정수 조유나 

김준하 채동하 오민재 고유람 

박상기 윤다은 이단비 이춘원 

최웅기 이해길 박정수 최민기 

임재범 김동규 정상호 신동자 






#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>

#define max 32

struct {
char name[20];
}kt[max], gd[max];

//0~11은 1학년 12~23은 2학년 24~31은 3학년

int main() {

FILE *sk;
int i,j;
int a1, a2, a3,all;
int base[max], x = 1;

sk = fopen("sample.txt", "r");

srand((unsigned)time(NULL));

a1 = rand() % 11;
a2 = rand() % ((23 - 12) + 1) + 12;
a3 = rand() % ((31 - 24) + 1) + 24;

for (i = 0; i < max; i++) {
fscanf(sk, "%s", kt[i].name);
}

for (i = 0; i<max; i++) {
all = rand() % 32;

for (j = 0; j<i; j++) {
if (base[j] == all) {
break;
}
}

if (i != j) {
i--;
}
else {
base[i] = all;
strcpy(gd[i].name, kt[base[i]].name);
}
}


for (i = 0; i < max; i++) {
if (i % 6 == 0) {
printf("-------------------\n");
printf("%d조\n", x++);
}
else {
printf("%s\n", gd[i].name);
}
}

printf("\n");

fclose(sk);

return 0;
}