Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

새싹교실/2014/속도위반/0411: Difference between revisions

From ZeroWiki
imported>woojin818
No edit summary
(Repair batch-0005 pages from live compare)
 
(26 intermediate revisions by 7 users not shown)
Line 1: Line 1:
__TOC__
= 진행사항 =
= 진행사항 =
* 참여자
* 참여자
Line 20: Line 21:
|-
|-
|  
|  
| [[문태현]]
| 문태현
| 참석
| 참석
|}
|}
Line 30: Line 31:
* Visual Studio 디버깅 방법
* Visual Studio 디버깅 방법


* 다음 수업 : 미정
* 다음 수업 : 4월 18일 금요일 오후 6시


== 구구단 코드 ==
== 구구단 코드 ==
Line 72: Line 73:


=== 유재범 ===
=== 유재범 ===
#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형함수를 쓰게될거같은데? - [[최다인]]
* 전역변수랑 지역변수 이름 같은건 내가 지적을 해줬는데도 그대로라니 으으 - [[최다인]]
** 정신 차려보니까 저렇게 되어 있었네여 ㅋㅋㅋ 그보다 다인누나보다 준연형 커멘트가 더 많아서 무서웤ㅋㅋㅋㅋㅋㅋㅋㅋ
=== 오영은 ===
=== 오영은 ===
  #include<stdio.h>
  #include<stdio.h>
Line 168: Line 228:


=== 문태현 ===
=== 문태현 ===
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++;
}
}


== 별찍기 코드 ==
== 별찍기 코드 ==
=== 유재범 ===
=== 유재범 ===
함수만 따로 추출(삼각형, 피라미드, 다이아)
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");
}
}


=== 오영은 ===
=== 오영은 ===
Line 201: Line 355:
   
   
  }
  }
 
* printstar 함수를 선언해서 쓰는 메리트가 전혀 없는거 같네.
* windows.h는 왜 참조했어?
** system 쓰려면 내가 넣으라고 했는데, 버릇처럼 일단 넣고 시작하는듯 ㅋㅋ 아니면 디버깅하면서 system 넣었다가 헤더 빼는걸 깜빡했던가. 뭐 상관없지 - [[최다인]]
=== 장우진 ===
=== 장우진 ===
#include <stdio.h>
   
   
  int main()
  int main()
Line 217: Line 374:
  printf("*");
  printf("*");
  }
  }
printf("\n");
}
return 0;
}
=== 문태현 ===
#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");
  }
  }
printf("\n");
   
   
}
void printstar()
{printf("*");
}
= 과제 =
* 피라미드형 별찍기
** 예시
SIZE : 6
      *
      ***
    *****
    *******
  *********
  ***********
* 특별 과제 : 일반 별찍기를 재귀함수로 짜 볼 것.
** 위키에 올리지 말고 개인톡으로 보내세요.
== 유재범 ==
#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;
  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 이외의 수가 나오면 씹어먹고 처음부터 다시 하도록 설정. 움직이는 모션은 못넣겠네요 빈 칸을 넣어야 하나 뭘 해야 하나..
** 움직이는건 지금상태론 만들기 힘들걸 ㅋ - [[최다인]]
== 오영은 ==
#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");
}
}
== 장우진 ==
#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;
}
* 오 깔끔하네. 잘했어요 - [[최다인]]
== 문태현 ==
#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");
}
}


== 후기 ==
= 후기 =


-----
-----
[[:새싹교실/2014/속도위반 속도위반]]
:새싹교실/2014/속도위반 속도위반
 

Latest revision as of 00:45, 27 March 2026

진행사항

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

구구단 코드

최다인

#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);
}

유재범

#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형함수를 쓰게될거같은데? - 최다인
  • 전역변수랑 지역변수 이름 같은건 내가 지적을 해줬는데도 그대로라니 으으 - 최다인
    • 정신 차려보니까 저렇게 되어 있었네여 ㅋㅋㅋ 그보다 다인누나보다 준연형 커멘트가 더 많아서 무서웤ㅋㅋㅋㅋㅋㅋㅋㅋ

오영은

#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;

	

}

장우진

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);
		}
	}
}

문태현

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++;
	}
}

별찍기 코드

유재범

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

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");
	}
}

오영은

#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 넣었다가 헤더 빼는걸 깜빡했던가. 뭐 상관없지 - 최다인

장우진

#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;
}

문태현

#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("*");
}
	

과제

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

유재범

#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 이외의 수가 나오면 씹어먹고 처음부터 다시 하도록 설정. 움직이는 모션은 못넣겠네요 빈 칸을 넣어야 하나 뭘 해야 하나..
    • 움직이는건 지금상태론 만들기 힘들걸 ㅋ - 최다인

오영은

#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");
	}

}

장우진

#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;
}

문태현

#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");
	}
}

후기


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