4. 후기 ¶
- 욕심을 버리고 String이나 구조체 같이 진도를 더 나가지 않고 배열 사용법이라도 제대로 익혀서 보내기로 마음 먹었어요. - 홍성현
- 우왕 프로그래밍 재미땅 - 장해민
5.1. 장해민 ¶
#include "stdio.h"
void DeleteDuplicate(int*, int*, int*);
void DeleteEven(int*, int*, int*);
void DeletePrime(int*, int*, int*);
void print(int*, int);
void bubble(int*, int);
void add(int*, int*);
int main()
{
int num[256], uqnum[256];
int rcv, i, game;
int count=0;
printf("Type numbers except 0(type 0 at the end): ");
for (i=0; i<256; i++){
scanf("%d", &rcv);
if (rcv==0)
break;
else {
num[i]=rcv;
count+=1;
}
}
DeleteDuplicate(uqnum, num, &count);
bubble(num, count);
print(num, count);
for (;;){
//Choose a game
printf("1. Add numbers\n2. Remove even numbers\n3. Remove prime numbers\n4. Exit\nGame number: ");
scanf("%d", &game);
printf("\n");
if (game==4)
break;
else{
switch (game)
{
case 1: printf("Type numbers you want to add except 0(type 0 at the end)\n: ");
add(num, &count);
break;
case 2: printf("Remove even\n");
DeleteEven(uqnum, num, &count);
break;
case 3: printf("Remove prime\n");
DeletePrime(uqnum, num, &count);
break;
}
}
DeleteDuplicate(uqnum, num, &count);
bubble(num, count);
print(num, count);
}
return 0;
}
void print(int a[], int n)
{
int i;
printf("\nResult: ");
for (i=0; i<n; i++){
printf("%d ", a[i]);
}
if (n!=1)
printf("(%d numbers)\n\n", n);
else
printf("(one number)\n\n");
}
void DeleteDuplicate(int a[], int b[], int *n)
{
int h, i, j, k;
int count=*n;
for (h=0; h<256; h++){
a[h]=0;
}
for (i=0; i<*n; i++){
for (j=0; j<*n; j++){
if (a[j]!=b[i]&&a[j]==0){
a[j]=b[i];
break;
}
if (a[j]==b[i]){
count--;
break;
}
}
}
*n=count;
for (k=0; k<count; k++){
b[k]=a[k];
}
}
void DeleteEven(int a[], int b[], int *n)
{
int h, i, j=0 ,k;
int count=*n;
for (h=0; h<*n; h++){
a[h]=0;
}
for (i=0; i<*n; i++){
if (b[i]%2!=0){
a[j]=b[i];
j++;
}
else
count--;
}
*n=count;
for (k=0; k<count; k++){
b[k]=a[k];
}
}
void DeletePrime(int a[], int b[], int *n)
{
int h=0, i, j, k, l=0, count=0;
int count2=*n;
for (h=0; h<*n; h++){
a[h]=0;
}
for (i=0; i<*n; i++){
for (j=1; j<=b[i]; j++){
if (b[i]%j==0)
count++;
}
//1 or
if (count==2){
count2--;
count=0;
}
else {
a[l]=b[i];
l++;
count=0;
}
}
*n=count2;
for (k=0; k<count2; k++){
b[k]=a[k];
}
}
//Sort by size
void bubble(int a[], int n)
{
int temp;
int i, j;
for (j=0; j<n; j++){
for (i=0; i<n-1; i++){
if (a[i]>=a[i+1]){
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
}
}
void add(int a[], int *n)
{
int i;
int rcv;
int count=*n;
for (i=*n; i<256; i++){
scanf("%d", &rcv);
if (rcv==0)
break;
else {
a[i]=rcv;
count++;
}
}
*n=count;
}
5.2. 이한용 ¶
/*
#include<stdio.h>
int i, j, t, count=0, arr[100];
void order_1();
void order_2();
void order_3();
int main()
{
int num;
while (1)
{
printf("1. 숫자 저장하기\n2. 짝수 제거하기\n3. 소수 제거하기\n");
printf("어느 명령을 수행할까요?");
scanf("%d", &num);
printf("\n");
if (num==1)
{
order_1();
printf("\n\n");
}
else if (num==2)
{
order_2();
printf("\n\n");
}
else if (num==3)
{
order_3();
printf("\n\n");
}
}
return 0;
}
void order_1()
{
printf("숫자를 하나씩 입력하세요.\n");
for (i=count; i<100; i++)
{
scanf("%d", &arr[i]);
count++;
if (arr[i]==0)
{
count--;
break;
}
}
for (j=count-2; j>=0; j--)
{
for (i=0; i<=j; i++)
{
if(arr[i]>arr[i+1])
{
t=arr[i];
arr[i]=arr[i+1];
arr[i+1]=t;
}
}
}
for (i=0; i<count; i++)
{
if(arr[i]==arr[i+1])
{
for (j=i; j<count; j++)
{
arr[j]=arr[j+1];
}
i--;
count--;
}
}
printf("저장된 수 : ");
for (i=0; i<count; i++)
{
printf("%d ", arr[i]);
}
}
void order_2()
{
printf("짝수를 제거합니다.\n");
for(i=0; i<count; i++)
{
if(arr[i]%2==0)
{
for (j=i; j<count; j++)
{
arr[j]=arr[j+1];
}
i--;
count--;
}
}
printf("저장된 수 : ");
for (i=0; i<count; i++)
{
printf("%d ", arr[i]);
}
}
void order_3()
{
printf("소수를 제거합니다.\n");
for(i=0; i<count; i++)
{
t=0;
if (arr[i]==1)
{
//아무것도 안함
}
else if (arr[i]==2)
{
for (j=i; j<count; j++)
{
arr[j]=arr[j+1];
}
i--;
count--;
}
else
{
for(j=2; j<arr[i]; j++)
{
if (arr[i]%j==0)
t++;
}
if (t==0)
{
for (j=i; j<count; j++)
{
arr[j]=arr[j+1];
}
i--;
count--;
}
}
}
printf("저장된 수 : ");
for (i=0; i<count; i++)
{
printf("%d ", arr[i]);
}
}
*/










