Difference between r1.4 and the current
@@ -1,3 +1,4 @@
[[TableOfContents]]
= 진행사항 =* 참여자
|| 튜터 || [최다인] || 참석 ||
@@ -12,7 +13,7 @@
* 구구단, 별찍기 실습
* Visual Studio 디버깅 방법
== 구구단 코드 ==
=== 최다인 ===
* Visual Studio 디버깅 방법
* 다음 수업 : 미정
* 다음 수업 : 4월 18일 금요일 오후 6시
== 구구단 코드 ==
=== 최다인 ===
@@ -57,10 +58,74 @@
=== 유재범 ===
{{{
}}}
#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 gugu, i;
@@ -104,16 +169,162 @@
}}}
=== 장우진 ===
}}}
=== 문태현 ===
}}}
== 별찍기 코드 ==
=== 유재범 ===
{{{
=== 오영은 ===
=== 장우진 ===
{{{
{{{#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);
}
}
}
=== 문태현 ===
{{{
{{{#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++;
}
}
== 별찍기 코드 ==
=== 유재범 ===
{{{
함수만 따로 추출(삼각형, 피라미드, 다이아)
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");
}
}
}}}=== 오영은 ===
@@ -145,16 +356,257 @@
}
}}}
* 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/속도위반 속도위반]
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때문에 ㅋ - 최다인
- 내가 쓰라고함 system때문에 ㅋ - 최다인
- do_while을 굳이 쓸 필요가 있었을까?
- 전역변수와 지역변수가 이름이 같다는 건 썩 좋은 일이 아닌데? 물론 스코프 상으로 가까운 쪽을 자동선택하긴 하지만.
- 보면 볼 수록 전역변수로 저걸 선언해 줄 이유가 전혀 없는 것 같다.
- 정상적인 종료가 아닐 경우에는 0 이외의 다른 값을 return 해 주는 거란다.
- C언어에서는 변수 선언은 항상 가장 위쪽에서 해야 한다.
- 사실 void 함수는 피하는 게 좋아. 이건 설계적인 문제라서 지금 당장은 큰 문제가 아니니 참고. -원준연
- 이건 제대로 말해줘야지 ㅋㅋ 무작정 피하는게 좋다고하면 쓸모없는데 int형함수를 쓰게될거같은데? - 최다인
- 이건 제대로 말해줘야지 ㅋㅋ 무작정 피하는게 좋다고하면 쓸모없는데 int형함수를 쓰게될거같은데? - 최다인
- windows.h는 왜 참조했어?
- 전역변수랑 지역변수 이름 같은건 내가 지적을 해줬는데도 그대로라니 으으 - 최다인
- 정신 차려보니까 저렇게 되어 있었네여 ㅋㅋㅋ 그보다 다인누나보다 준연형 커멘트가 더 많아서 무서웤ㅋㅋㅋㅋㅋㅋㅋㅋ
- 정신 차려보니까 저렇게 되어 있었네여 ㅋㅋㅋ 그보다 다인누나보다 준연형 커멘트가 더 많아서 무서웤ㅋㅋㅋㅋㅋㅋㅋㅋ
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. 유재범 ¶
함수만 따로 추출(삼각형, 피라미드, 다이아) 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 넣었다가 헤더 빼는걸 깜빡했던가. 뭐 상관없지 - 최다인
- 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; }
- 오 깔끔하네. 잘했어요 - 최다인