U E D R , A S I H C RSS

새싹교실/2014/속도위반/0411

1. 진행사항

  • 참여자
    튜터 최다인 참석
    튜티 유재범 참석
    오영은 참석
    장우진 참석
    태현 참석
  • 저번 시간 과제에 대한 설명
    • 왜 void형을 쓰는가
    • 변수의 자료형에 따른 출력값
    • ...기타 등등
  • 구구단, 별찍기 실습
  • Visual Studio 디버깅 방법

  • 다음 수업 : 4월 18일 금요일 오후 6시

1.1. 구구단 코드

1.1.1. 최다인

#include <stdio.h>
#include <Windows.h>

#pragma warning(disable:4996)

void printgoogoo(int);

int main(){
	int num;

	while(1){
		system("cls");
		printf("출력할 구구단을 입력해주세요 (0은 전체 출력) : ");
		scanf("%d",&num);
		if((num > 9 || num < 2) && num != 0){
			printf("구구단의 값은 2 ~ 9 사이입니다.\n");
			system("pause");
			continue;
		}
		printgoogoo(num);
		system("pause");
	}
	return 0;
}

void printgoogoo(int num){
	int i;
	if(num == 0){
		for(i = 2; i < 10; i++)
			printgoogoo(i);
		return;
	}
	printf("\n구구단 %d단\n" , num);
	for(i = 1; i < 10; i++)
		printf("%d X %d = %d\n", num, i, num*i);
}

1.1.2. 유재범

#include<stdio.h>
#pragma warning(disable:4996)
#include<Windows.h>
void kukudan(int);
void kukudanall();
int input=0;
int main(void)
{
	while(1)
	{
	int input=0;
	printf("구구단을 외자. 구구단을 외자. 숫자를 입력하시오 : ");
	scanf("%d", &input);

	if(input<2 || input>=10)
	{
		printf("구구단이 뭔지 다시 알고 오세요.\n ");
		return 0;
	}
	else if(input==0)
	{
		kukudanall();
	}
	else
		kukudan(input);
	}
	return 0;

}

void kukudan(int input)
{
	int count=1;
	do
	{
		printf("%d * %d = %d\n", input, count, input*count);
		count++;
	}while(count!=10);
}

void kukudanall()
{
	input=1;
	while(input!=10)
	{
		kukudan(input);
		input++;
	}
}
  • 몇 가지 말하자면,
    • windows.h는 왜 참조했어?
      • 내가 쓰라고함 system때문에 ㅋ - 최다인
    • do_while을 굳이 쓸 필요가 있었을까?
    • 전역변수와 지역변수가 이름이 같다는 건 썩 좋은 일이 아닌데? 물론 스코프 상으로 가까운 쪽을 자동선택하긴 하지만.
    • 보면 볼 수록 전역변수로 저걸 선언해 줄 이유가 전혀 없는 것 같다.
    • 정상적인 종료가 아닐 경우에는 0 이외의 다른 값을 return 해 주는 거란다.
    • C언어에서는 변수 선언은 항상 가장 위쪽에서 해야 한다.
    • 사실 void 함수는 피하는 게 좋아. 이건 설계적인 문제라서 지금 당장은 큰 문제가 아니니 참고. -원준연
      • 이건 제대로 말해줘야지 ㅋㅋ 무작정 피하는게 좋다고하면 쓸모없는데 int형함수를 쓰게될거같은데? - 최다인
  • 전역변수랑 지역변수 이름 같은건 내가 지적을 해줬는데도 그대로라니 으으 - 최다인
    • 정신 차려보니까 저렇게 되어 있었네여 ㅋㅋㅋ 그보다 다인누나보다 준연형 커멘트가 더 많아서 무서웤ㅋㅋㅋㅋㅋㅋㅋㅋ

1.1.3. 오영은

#include<stdio.h>
#include<windows.h>
#pragma warning(disable:4996)

int main(void)
{
	int gugu, i;
	
	printf("구구단 입력 프로그램입니다. 1~9중 한 숫자를 입력하시오.\n(0을 누르면 모든 구구단을 보실 수 있습니다.)");
	scanf("%d", &gugu);

	if(gugu>0 && gugu<10)
	{
		printf("%d단을 입력하셨습니다.\n", gugu);
		for(i=1; i<10; i++)
		{
			printf("%d x %d = %d\n", gugu, i, gugu*i);
		}
	}
    else if(gugu>10 && gugu<1)
	{
		printf("잘못된 숫자를 입력하셨습니다.\n");
	

	}

	else if(gugu==0)
	{
	
		for(gugu=1; gugu<10; gugu++)
		{	printf("%d단입니다.\n", gugu);
			for(i=1; i<10; i++)
			{	
		
				printf("%d x %d = %d\n", gugu, i, gugu*i);
			}
		}
	}
	
	return 0;

	

}

1.1.4. 장우진

#include<stdio.h>

void gugudan(int x);

int main()
{
	int num=0;
	while(1){
	printf("원하시는 숫자를 입력해 주세요 : ");
	scanf("%d",&num);

	if(num==-1)
		break;
	
	else 
		gugudan(num);
	}
	
	return 0;
}

void gugudan(int x){
	int count=0, sum=0;

	if (x==0){
		while(x<9)
		{
			x++;
			count=0;
			while(count<9){
				count++;
				sum=x*count;
				printf("%d x %d = %d\n",x,count,sum);
			}
		}
	}

	else{
		while(count<9)
		{
			count++;
			sum=x*count;
			printf("%d x %d = %d\n",x,count,sum);
		}
	}
}



1.1.5. 문태현

#include<stdio.h>
int gogo(int x, int y);


int main()
{
	int a, b=1;


	printf("원하는 구구단을 입력하시오\n");
	scanf("%d",&a);
	
	if(a<2){
		if(a==0){
			a=a+2;
			while(a<10)
			{gogo (a, b);
			a++;
			}
		}
		else{
			printf("다시입력하시오");
		}
	}
	else if (a>9)
		printf("다시입력하시오");
	else if (a>=2 && a<=9)

		gogo(a, b);

}


int gogo(int x, int y)
{	
	while(y<10){
	printf("%d x %d=%d\n", x, y, x*y);
	y++;
	}
}




1.2. 별찍기 코드

1.2.1. 유재범

함수만 따로 추출(삼각형, 피라미드, 다이아)

void triangle(int num2)
{
	for(count=0; count!=num2; count++)
	{
		for(line=0; line!=count+1; line++)
		{
			printf("*");
		}
		printf("\n");
	}
}

void pyramid(int num2)
{
	for(count=0; count!=num2;  count++)
	{
		for(line2=0; line2!=num2-count; line2++)
		{
			printf(" ");
		}
		for(line=0; line!=2*count+1; line++)
		{
			printf("*");
		}
		printf("\n");
	}
}

void dia(int num2)
{
	for(count=0; count!=num2;  count++)
	{
		for(line2=0; line2!=num2-count+1; line2++)
		{
			printf(" ");
		}
		for(line=0; line!=2*count+1; line++)
		{
			printf("*");
		}
		printf("\n");
	}
	for(count=num2-1; count!=0;  count--)
	{
		for(line2=0; line2!=num2-count+2; line2++)
		{
			printf(" ");
		}
		for(line=2*count-1; line!=0; line--)
		{
			printf("*");
		}
		printf("\n");
	}
}

1.2.2. 오영은

#include<stdio.h>
#include<windows.h>
#pragma warning(disable:4996)

void printstar()
{
	putchar('*');
}


int main()
{   int i, j, k;
	printf("원하는 숫자를 입력하세요. : ");
	scanf("%d", &i);

	for(k=1;k<=i;++k)
	{
		for(j=1;j<=k;++j)
	    {
		printstar();
		
	    }
		printf("\n");
	}

}
  • printstar 함수를 선언해서 쓰는 메리트가 전혀 없는거 같네.
  • windows.h는 왜 참조했어?
    • system 쓰려면 내가 넣으라고 했는데, 버릇처럼 일단 넣고 시작하는듯 ㅋㅋ 아니면 디버깅하면서 system 넣었다가 헤더 빼는걸 깜빡했던가. 뭐 상관없지 - 최다인

1.2.3. 장우진

#include <stdio.h>

int main()
{
	int i=0, size=0, line=0;

	printf("크기를 입력해 주세요 :");
	scanf("%d",&size);

	for(line=0;size>line;line++)
	{
		for(i=0;i< line+1;i++)
		{
			printf("*");
		}
		printf("\n");
	}
	return 0;
}


1.2.4. 문태현

#include<stdio.h>

void printstar();

int main()
{
	int  siz ,line, starcount;
	printf("사이즈를 입력하시오");
	scanf("%d",&siz);

	for(line=1; line<=siz; line++)
	{
		for(starcount=1; starcount<=line;starcount++)
		{
		printstar();
		}
		printf("\n");
	}


}


void printstar()
{printf("*");
}
	

2. 과제

  • 피라미드형 별찍기
    • 예시

SIZE : 6
      *
     ***
    *****
   *******
  *********
 ***********
  • 특별 과제 : 일반 별찍기를 재귀함수로 짜 볼 것.
    • 위키에 올리지 말고 개인톡으로 보내세요.

2.1. 유재범

#include<stdio.h>
#pragma warning(disable:4996)
void dia(int);
void pyramid(int);
void triangle(int);
int count=0, line=0, line2=0;


int main(void)
{
	while(1)
	{
		int num1=0, num2=0;//num1=별 찍는 모양, num2=찍는 별 갯수
		printf("컴공의~ 공유과제~ 별찍~기! 별! 찍기! 별! 찍기! 별! 별! 찍기!찍기\n1.삼각형\n2.피라미드\n3.다이아몬드\n");
		scanf("%d", &num1);
		if(num1==1 || num1==2 || num1==3)
		{
			printf("얼마나 찍을라우 젊은이? : ");
			scanf("%d", &num2);
			if(num1==1)
				triangle(num2);
			else if(num1==2)
				pyramid(num2);
			else if(num1==3)
				dia(num2);
		}	
		else
		{
			printf("하지마! 하지마! 별 찍기 싫으면 그냥 Alt+F4를 누르라고! \n왜 다른 숫자를 눌러! 그냥 때려 쳐! 안해! 나 안해!! 안한다고!!\n\n\n");
		}
		
	}
	
	return 0;
}

void triangle(int num2)
{
	for(count=0; count!=num2; count++)
	{
		for(line=0; line!=count+1; line++)
		{
			printf("*");
		}
		printf("\n");
	}
}

void pyramid(int num2)
{
	for(count=0; count!=num2;  count++)
	{
		for(line2=0; line2!=num2-count; line2++)
		{
			printf(" ");
		}
		for(line=0; line!=2*count+1; line++)
		{
			printf("*");
		}
		printf("\n");
	}
}

void dia(int num2)
{
	for(count=0; count!=num2;  count++)
	{
		for(line2=0; line2!=num2-count+1; line2++)
		{
			printf(" ");
		}
		for(line=0; line!=2*count+1; line++)
		{
			printf("*");
		}
		printf("\n");
	}
	for(count=num2-1; count!=0;  count--)
	{
		for(line2=0; line2!=num2-count+2; line2++)
		{
			printf(" ");
		}
		for(line=2*count-1; line!=0; line--)
		{
			printf("*");
		}
		printf("\n");
	}
}

  • 하는 김에 다이아 완성. 무한 반복에 1, 2, 3 이외의 수가 나오면 씹어먹고 처음부터 다시 하도록 설정. 움직이는 모션은 못넣겠네요 빈 칸을 넣어야 하나 뭘 해야 하나..
    • 움직이는건 지금상태론 만들기 힘들걸 ㅋ - 최다인

2.2. 오영은

#include<stdio.h>
#pragma warning(disable:4996)

int main()
{   int i, j, k;
	printf("원하는 숫자를 입력하세요. : ");
	scanf("%d", &i);

	i=i*2;
	for(k=1;k<=i;k=k+2)
	{
		for(j=i;j>k;j=j-2)
	    {
		printf(" ");
	    }
		for(j=1;j<=k;++j)
	    {
		printf("*");
	    }
		printf("\n");
	}

}

2.3. 장우진

#include <stdio.h>

int main()
{
	int i=0, size=0, line=0;

	printf("크기를 입력해 주세요 :");
	scanf("%d",&size);

	size=size*2;

	for(line=0;size>line;line=line+2)
	{
		for(i=size;i>line+1;i=i-2)
		{
			printf(" ");
		}
		for(i=0;i<line+1;i++)
		{
			printf("*");
		}
		
		printf("\n");
	}
	

	return 0;
}

2.4. 문태현

#include<stdio.h>
int main()
{
	int size, h, i, j;
	scanf_s("%d", &size);
	for (h = 1; h < size + 1; h++)
	{
		for (i = size - h; i > 0; i--)
		{
			printf(" ");
		}
		for (j = 1; j < h * 2; j++)
		{
			printf("*");
		}
		printf("\n");
	}
}

3. 후기



도위반
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2014-04-30 00:02:40
Processing time 0.2784 sec