잘못된문자를입력받을시 처음으로돌아가는 소스좀 부탁드립니다!
아리에스
질문 제목 : 잘못된문자를입력받을시 처음으로돌아가는 소스좀 부탁드립니다!잘못된문자를입력받을시 처음으로돌아가는 소스좀 부탁드립니다!질문 내용 : #include stdio.h
#include math.h
void binary(char array[], int value);
void shift(char array[], int value);
int main()
{
char array[32] = {0};
int input= 0;
intvalue= 0;
printf(정수를 입력하세요 : );
scanf(%d, &value);
fflush(stdin);
binary(array, value);
while (1) {
for ( int i = 0; i 32; i++ ) {
printf(%d, array[i]);
if ( ((i+1) % 8 == 0) && (i != 0) )
printf( );
}
printf(\n);
printf(1. 왼쪽 shift 2. 오른쪽 shift 3. 프로그램 종료 = );
scanf(%d, &input);
fflush(stdin);
switch ( input ) {
case 1:
printf(shift 할 비트 수를 입력하세요 : );
scanf(%d, &input);
fflush(stdin);
shift(array, input);
break;
case 2:
printf(shift 할 비트 수를 입력하세요 : );
scanf(%d, &input);
fflush(stdin);
shift(array, (-input));
break;
case 3:
return 0;
}
}
return 0;
}
void binary(char array[], int value)
{
for ( int i = 31; i != -1; i-- ) {
int z;
if ( i != 0 )
z = pow(double(2), i);
else
z = 1;
array[31 - i] = (value 0) ? (value / z) ? 0 : 1 : (value / z) ? 1 : 0;
value %= z;
}
}
void shift(char array[], int value)
{
if ( value 0 ) {
//-
for ( int i = 0; i abs(value); i++ ) {
int last = array[31];
for ( int k = 31; k != 0; k-- ) {
array[k] = array[k - 1];
}
array[0] = last;
}
}
else {
//-
for ( int i = 0; i value; i++ ) {
int first = array[0];
for ( int k = 0; k != 31; k++ ) {
array[k] = array[k + 1];
}
array[31] = first;
}
}
}
여기서 잘못된 입력을 받으면 잘못된 값이 입력 되었습니다 라는 내용을 출력하고 1단계로 돌아가는
소스좀 짜주세요 ... 예로들면 a를입력받으면 위처럼떠야하는데
범위를 어떻게주어야하는가요 ??
-
세찬
질문게시판에는 반드시 돋움체 또는 굴림체를 사용해야 됩니다.
이 폰트로 계속해서 덧글을 달면 탈퇴가 됩니다.
폰트는 자신의 블로그에서 설정할 수 있습니다. -
영빈이
방법이야 여러가지가 있겠지만... 처음으로 돌아가고 싶은 부터 원하는 부분까지 while(1) 무한루프로 묶어버리고 a입력시 continue;를 해주시면 됩니다..
정상적으로 프로그램이 진행됐을때는 마지막에 break; 해주시면 되요