" async="async"> ', { cookie_domain: 'auto', cookie_flags: 'max-age=0;domain=.tistory.com', cookie_expires: 7 * 24 * 60 * 60 // 7 days, in seconds }); 책 알려주는 남자 :: Assignment #51 ~ #60



PA51(소수).pdf

#include <stdio.h>

#define HOWMANY 50000 


void processSieve(int[]);

int getLower();

int getUpper(int);

void showPrimes(int[], int, int);


int main()

{

int sieve[HOWMANY+1]; // The array of true/false

int lower = 1, upper = HOWMANY; 

 

  processSieve(sieve);

  lower = getLower();

  upper = getUpper(lower);

  showPrimes(sieve, lower, upper);

}


void processSieve(int sieve[HOWMANY+1]) // 1. 1~50000까지의 소수들을 구분 

{

int i, n;

for (n=2; n<HOWMANY; n++)

{

for(i=2; i<=n; i++)

{

if (n==i)

{

sieve[n]=1;

break;

}

else if (n%i == 0)

{

sieve[n]=0; 

break;

}

}

}

}


int getLower(void) // 2. 시작값 설정 

{

int lower;


do {

printf("Please enter the lower boundary (between 1 and 50000) ");

scanf("%d", &lower);

} while(lower<1 || lower>50000);

printf("\n");

return lower;

}


int getUpper(int lower) // 3. 끝값 설정 

{

int upper;

do {

printf("Please enter the upper boundary (between %d and 50000) ", lower);

scanf("%d", &upper);

} while(upper<=lower || upper>50000);

printf("\n");

return upper;

}


void showPrimes(int sieve[HOWMANY+1], int lower, int upper) // 4. 시작값과 끝값 사이에서 차이가 6인 것을 카운트 후 프린트 

{

int i, count=0;

printf("Here are all of the sexy prime pairs in the range %d to %d, one pair per line:\n", lower, upper);

for (i=lower; i<=upper-6; i++)

{

if(sieve[i]==1 && sieve[i+6]==1)

{

printf("%d and %d\n", i, i+6);

count++;

}

}

printf("There were %d sexy prime pairs displayed.", count);

}




PA52(회문).pdf

#include <stdio.h>


int reverse(int n);

void palindrome(int n); 


int main()

{

int n;

printf("Please enter a number: ");

scanf("%d", &n);

reverse(n);

palindrome(n);

return 0;

}


int reverse(int n)

{

int rn=0, i, o=0;

for(i=n; i>0; i/=10)

{

o = i%10;

rn = rn*10 + o;

}

return rn;

}


void palindrome(int n)

{

int count=0, i=0, rn=reverse(n);

for(i=n; i!=rn;  )

{

i += rn;

rn = reverse(i);

count++;

}

if (1000<count || i>2000000000)

printf("%d is not a panlindrome ");

else

printf("%d  %d", count, i);

}



PA53(지뢰).pdf


#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#define ROW 100

#define COL 100


int n, m, i, j;

int count=0;

int a[ROW][COL]={0,};


void dis1mine (int n, int m, int a[][COL]);

void dis2mine (int n, int m, int a[][COL]);


void main()

{

srand((unsigned)time(NULL));

printf("지뢰밭의 행과 열의 크기를 입력하시오: \n");

scanf("%d %d", &n, &m);

printf("\n");

dis1mine(n, m, a);

dis2mine(n, m, a);

}


void dis1mine(int n, int m, int a[][COL])

{

for(i=1; i<n+1; i++)

{

for(j=1; j<m+1; j++)

{

a[i][j]=rand()%5;

if(a[i][j]==1)

printf("* ");

else

printf("·");

}

printf("\n");

}

printf("\n");

}


void dis2mine (int n, int m, int a[][COL])

{

for(i=1; i<n+1; i++)

{

for(j=1; j<m+1; j++)

{

count=0;

if(a[i][j]==1)

{

printf("* ");


}

else if(a[i][j]!=1)

{

if(a[i-1][j-1]==1) count++;

if(a[i-1][j]==1) count++;

if(a[i-1][j+1]==1) count++;

if(a[i][j+1]==1) count++;

if(a[i+1][j+1]==1) count++;

if(a[i+1][j]==1) count++;

if(a[i+1][j-1]==1) count++;

if(a[i][j-1]==1) count++;

printf("%d ", count);

}

}

printf("\n");

}

}


PA54(여행).pdf


#include <stdio.h>

#define STUDENT 1000


void main()

{

int i, n;

float sum=0, mean; 

float a[STUDENT]={0, };

printf("학생 수를 입력하시오: ");

scanf("%d", &n);

for(i=0; i<n; i++)

{

printf("쓴 금액 입력: ");

scanf("%f", &a[i]);

sum+=a[i]; 

}

mean = sum/n;

sum=0;

for(i=0; i<n; i++)

if(a[i]<mean)

sum+=mean-a[i];

printf("전달해야할 금액: %f", sum);

}


PA55(암호).pdf

#include <stdio.h>

#include <string.h>

#define ENTRY 1000

#define LENGTH 16

#define TEXT 80


void main(){

int n, i, j, count=0;

char dict[ENTRY][LENGTH];

char text[TEXT];

char *word1[ENTRY];

char *token;

char seps[]=" ";

char word2[ENTRY][LENGTH];

scanf("%d", &n);

fflush(stdin);

for(i=0; i<n; i++){

fgets(dict[i], sizeof(dict[i]), stdin);

dict[i][strlen(dict[i])-1]=NULL;

}

printf("\n");

fgets(text, sizeof(text), stdin);

text[strlen(text)-1]=NULL;

token=strtok(text, seps);

for(i=0; token!=NULL; i++){

word1[i]=token;

token=strtok(NULL, seps);

count++;

}

printf("\n");

for(i=0; i<count; i++){

for(j=0; j<n; j++){

if(strlen(word1[i])==3 && strlen(dict[j])==3)

strcpy(word2[i], dict[j]);

else if(strlen(word1[i])==6 && strlen(dict[j])==6)

strcpy(word2[i], dict[j]);

else{

if(word1[i][2]==word1[i][3] && dict[j][2]==dict[j][3])

strcpy(word2[i], dict[j]);

else if(word1[i][3]== dict[j][3] && word1[i][1]=='q' && dict[j][1]=='p')

strcpy(word2[i], dict[j]);

else if(word1[i][3]== dict[j][2])

strcpy(word2[i], dict[j]);

else if(word1[i][0]=='b' && dict[j][0]=='d')

strcpy(word2[i], dict[j]);

}

}

}

for(i=0; i<count; i++){

printf("%s ", word2[i]);

}

}


PA56(투표).pdf

#include <stdio.h>

#include <string.h>

#define VOTER 1000

#define NAME 80

#define ENTRY 20


void main(){

int i, j, n, result=1;

int max=0, min=0;

int vote[VOTER][ENTRY];

char cdd[ENTRY][NAME];

scanf("%d", &n);

fflush(stdin);

for(i=0; i<n; i++){

fgets(cdd[i], sizeof(cdd[i]), stdin);

cdd[i][strlen(cdd[i])-1]=NULL;

}

for(i=0; i<5; i++)

for(j=0; j<n; j++)

scanf("%d", &vote[i][j]);

do{

int sum[ENTRY]={0};

for(i=0; i<5; i++){

if(vote[i][0]>0)

sum[vote[i][0]-1]++;

else

sum[vote[i][1]-1]++;

}

for(j=0; j<n; j++){

if(sum[max]<sum[j])

max=j;

if(sum[min]>sum[j])

min=j;

}

for(i=0; i<5; i++)

if(vote[i][0]==min+1)

vote[i][0]=-1;

if(sum[max]> 5.0/2.0)

result=0;

}while(result!=0);

printf("\n");

printf("%s", cdd[max]);

}


PA57(은행).pdf

#include <stdio.h>

#define SIZE 8

void in(int queue);

void out(int queue);


int queue[SIZE]={1, 2, 3, 4, 5, 6, 7, 8, 9};

int front=-1, rear=-1;


int main(){


int n, result=1;

do{

printf("input number: ");

scanf("%d", &n);

if(n==-1)

result=0;

else if(n!=0)

in(queue);

else if(n==0)

out(queue);

}while(result!=0);

return 0;

}


void in(int queue){

front++;

if(front>=8)

printf("queue full!\n");

}


void out(int queue){

rear++;

if(front==rear || rear>=8)

printf("queue empty!\n");

else

printf("[%d]\n", rear+1);

}


PA58(도둑).pdf

#include <stdio.h>

#define ROW 10

#define COL 20


void main(){

int i, j, col, weight;

float temp0, temp1, temp2, temp3;

int temp=0, result=0;

int sum_value=0, sum_weight=0;

int sum_v1, sum_v2, sum_w1;

int stolen[COL]={0};

float bag[ROW][COL];

scanf("%d %d", &col, &weight);

for(i=0; i<2; i++)

for(j=0; j<col; j++)

scanf("%f", &bag[i][j]);


for(i=0; i<col; i++){

bag[2][i]=bag[0][i]/bag[1][i];

bag[3][i]=i;

}

for(i=0; i<col; i++){

for(j=0; j<col-1; j++){

if(bag[2][j]<bag[2][j+1])

{

temp2=bag[2][j];

bag[2][j]=bag[2][j+1];

bag[2][j+1]=temp2;

temp3=bag[3][j];

bag[3][j]=bag[3][j+1];

bag[3][j+1]=temp3;

temp0=bag[0][j];

bag[0][j]=bag[0][j+1];

bag[0][j+1]=temp0;

temp1=bag[1][j];

bag[1][j]=bag[1][j+1];

bag[1][j+1]=temp1;

}

}

}

do{

for(i=0; i<col; i++){

if(sum_weight+bag[1][i]>weight){

sum_v1=sum_value-bag[0][i-1]+bag[0][i];

sum_w1=sum_weight-bag[1][i-1]+bag[1][i];

if(sum_v1>sum_value && sum_w1<=weight){

sum_value=sum_v1;

sum_weight=sum_w1;

stolen[i-1]=0;

stolen[i]=bag[3][i];

result=1;

}

else 

result=1;

}

else if (sum_weight==weight)

result=1;

else{

sum_value+=bag[0][i];

sum_weight+=bag[1][i];

stolen[i]=bag[3][i];

}

}

}while(result==0);

printf("\n");

printf("Max value: %d\n", sum_value);

for(i=0; i<col; i++){

for(j=0; j<col-1; j++){

if(stolen[j]>stolen[j+1]){

temp=stolen[j];

stolen[j]=stolen[j+1];

stolen[j+1]=temp;

}

}

}

for(i=0; i<col; i++)

if(stolen[i]!=0)

printf("%d ",stolen[i]);

}


PA59(문자열).pdf


#include <stdio.h>

#include <string.h>

#include <stdlib.h>


char str1[100];

char str2[100];

float num2;

int i, num1;


void reverseString (char *str);

void getString (char *str);

int compareString (char *strl, char *str2);

int strToInteger (char *str);

float strToFloat (char *str);


int main(){

getString(str1);

getString(str2);

reverseString(str1);

reverseString(str2);

printf("\n");

if(compareString(str1, str2)==1)

printf("Two strings are same\n");

else if(compareString(str1, str2)==0)

printf("Two strings are not same\n");

printf("\n");

compareString(str1, str2);

num1=strToInteger(str1);

printf("The integer string is: %d\n", num1);

printf("\n");

num2=strToFloat(str2);

printf("The float string is: %0.2f\n", num2);

printf("Number [%d] + Number[%0.2f] is %0.2f\n", num1, num2, (float) num1+num2);

}


void reverseString (char *str){

int length=0;

char temp;

for(i=0; str[i]!=NULL; i++)

length++;

for(i=0; i<length/2; i++){

temp=str[i];

str[i]=str[length-1-i];

str[length-1-i]=temp;

}

printf("The reverse order of the first string is: %s\n", str);

}


void getString (char *str){

printf("Please enter your string: ");

gets(str);

printf("The string you first entered is: %s\n", str);

printf("\n");

}


int compareString (char *strl, char *str2){

int count=0;

int result;

for(i=0; str1[i]!=NULL; i++)

if(str1[i]!=str2[i])

count++;

if(count==0) result=1;

else result=0;

return result;

}


int strToInteger (char *str){

int result=0, negative=1;

printf("Please enter your integer string: ");

gets(str);

if(*str=='-'){

negative=-1;

str++;

}

while(*str){

result = result*10 + *str - '0';

str++;

}

return result*negative;

}


float strToFloat (char *str){

float result1=0.0, result2=0.0, j=1;

int negative=1;

printf("Please enter your float string: ");

gets(str);

if(*str=='-'){

negative=-1;

str++;

}

while(*str!='.' ){

result1 = result1*10 + *str-'0';

str++;

}

if(*str=='.'){

str++;

while(*str){

result2 = result2*10 + *str-'0';

str++;

j*=0.1;

}

}

return (result1+result2*j)*negative;

}


PA60(월도르프).pdf



'프로그래밍' 카테고리의 다른 글

LAB WEEK#8 Array  (0) 2018.11.05
LAB WEEK#7 Function  (0) 2018.10.31
블로그 이미지

얼음꿀차

책을 한 번 읽긴 읽어야겠는데 막상 읽자니 뭘 읽을지 고민되는 당신을 위해 읽을만한 책들을 알려드립니다!

,