빨간 구역에는 여자만 순서가 랜덤으로 섞입니다.
녹색은 항상 저 위치에 고정이 되어 있어야 합니다.
사실 개발소발로 소스코드는 다 작성했습니다.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int Everyday();
void main()
{
int i,j; //반복 변수
int r, man_random[5], woman_random[3];
char man_std[5][6]={"남자1","남자2","남자3","남자4","남자5"};
char woman_std[3][6]={"여자1","여자2","여자3"};
Everyday();//날짜표시
srand(time(NULL)); //시간별 랜덤 만들기
printf(" ===================================================================\n");
printf(" ㅣ \t\t ㅣㅣ \t A동\t ㅣ \t B동\t ㅣ \t 기타\t ㅣ\n");
printf(" ===================================================================\n");
for(i=0;i<5;i++)//남자랜덤
{
man_again:;
r=rand()%5;
for(j=0;j<5;j++)
if(r==man_random[j])
goto man_again;
man_random[i]=r;
};
for(i=0;i<3;i++)//여자랜덤
{
woman_again:;
r=rand()%3;
for(j=0;j<3;j++)
if(r==woman_random[j])
goto woman_again;
woman_random[i]=r;
}
printf(" ㅣ \t2층\t ㅣㅣ");//2층
for(i=0;i<2;i++)
{
printf(" ");
for(j=0;j<6;j++)
{
printf("%c", man_std[man_random[i]][j]);
}
printf(" ㅣ");
if(i==1) printf("\t 고정임 ㅣ");
}
printf("\n ==================-------------------------------------------------\n");
printf(" ㅣ \t3층\t ㅣㅣ");//3층
for(i=2;i<5;i++)
{
printf(" ");
for(j=0;j<6;j++)
{
printf("%c", man_std[man_random[i]][j]);
}
printf(" ㅣ");
}
printf("\n ==================-------------------------------------------------\n");
printf(" ㅣ \t4층\t ㅣㅣ");//4층
for(i=0;i<3;i++)//출력
{
printf(" ");
for(j=0;j<6;j++)
{
printf("%c", woman_std[woman_random[i]][j]);
}
printf(" ㅣ");
}
printf("\n ==================-------------------------------------------------\n\n\n");
getchar();
}
int Everyday() //날짜 표시
{
struct tm *t;
time_t timer; // 시간측정
timer = time(NULL); // 현재 시각을 초 단위로 얻기
t = localtime(&timer); // 초 단위의 시간을 분리하여 구조체에 넣기
printf("\n\t\t\t%d년 %d월 %d일 \n\n",t->tm_year + 1900, t->tm_mon + 1, t->tm_mday);
}
너무 난잡해서 함수를 이용해서 조금 간편하고 보기 쉽게 바꾸고 싶은 욕심이 나더라구요!
그래서 '함수'로 정리를 해봤더니
<소스>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//함수
int Everyday();//시간으로 변환하는 랜덤함수
int random_fun();//랜덤함수
int show();//이름 섞기
//변수
int i,j; //반복 변수
int r, random[8];//랜덤, 랜덤선언
int MIN,MAX;//최대,최소 변수
char std[8][6]={"남자1","남자2","남자3","남자4","남자5","여자1","여자2","여자3"};
void main()
{
Everyday();//날짜표시
random_fun();
printf(" ===================================================================\n");
printf(" ㅣ \t\t ㅣㅣ \t A동\t ㅣ \t B동\t ㅣ \t 기타\t ㅣ\n");
printf(" ===================================================================\n");
printf(" ㅣ \t2층\t ㅣㅣ");//2층
show(0,2);
printf("\n ==================-------------------------------------------------\n");
printf(" ㅣ \t3층\t ㅣㅣ");//3층
show(2,5);
printf("\n ==================-------------------------------------------------\n");
printf(" ㅣ \t4층\t ㅣㅣ");//4층
show(5,8);
printf("\n ==================-------------------------------------------------\n\n\n");
getchar();
}
int Everyday() //날짜 표시
{
struct tm *t;
time_t timer; // 시간측정
timer = time(NULL); // 현재 시각을 초 단위로 얻기
t = localtime(&timer); // 초 단위의 시간을 분리하여 구조체에 넣기
printf("\n\t\t\t%d년 %d월 %d일 \n\n",t->tm_year + 1900, t->tm_mon + 1, t->tm_mday);
}
int random_fun()//이름 섞기
{
srand(time(NULL)); //시간별 랜덤 만들기
for(i=0;i<8;i++)
{
again:;
r=rand()%8;
for(j=0;j<8;j++)
{
if(r==random[j])
goto again;
}
random[i]=r;
}
}
int show(int MIN, int MAX)//출력
{
for(i=MIN;i<MAX;i++)
{
printf(" ");
for(j=0;j<6;j++) printf("%c", std[random[i]][j]);
printf(" ㅣ");
if(i==1) printf("\t 고정값 ㅣ");
}
}
그랬더니 이렇게 날짜를 제외하고 검정화면만 두둥!! 에러표시라도 나오면 수정이라도 하지...