16:20 8월 이후는 날짜가 다르다는 분들을 위해 int getDays(int month, int day) { int i, sum = 0; for (i = 1; i < month; i++) { if (i == 2) { sum += 28; } else if (i % 2 == 0 && i < 8) { sum += 30; } else if (i % 2 == 1 && i > 8) { sum += 30; } else { sum += 31; } } return sum + day; } 이런 식으로 입력하면 8월 이후에 한달의 날짜가 바뀌는것도 계산할 수 있습니다. 시청자들을 위해^^
저도 공부중인데 영상에 나온 날짜 계산 프로그램이 조금 틀린 것 같아요... 7월까지는 괜찮지만 8월부터는 짝수달이 31일, 홀수달이 30일이라 저대로 프로그램 작성하시면 안되고 8월달부터 둘로 나눠서 작성해야 할 것 같네요. 선생님이 예시로 돌려보신 날짜인 3월 1일은 8월 전이라 관계가 없고 12월 22일은 어차피 홀수달 2개 짝수달 2개가 지난 후라 날짜가 맞게 나와서 오류를 발견하지 못하신 것 같아요... 그래도 항상 좋은 강의 감사합니다!!
월단위의 날짜를 수정하고 값이 맞지 않는 부분을 수정해 봤습니다 int getdays(int mon,int day) { int i, sum = 0; for(i = 1;i < mon; i++) { if(i == 1 ||i == 3 ||i == 5 ||i == 7 ||i == 8 ||i == 10 ||i == 12) { sum += 31; } else if(i == 2) { sum += 28; } else { sum += 30; } } sum += day - 1; return sum; } int main(void) { int a,b; int total = 0; printf("오늘은 몇 월 몇 일인가요 : "); scanf("%d %d",&a,&b); total = getdays(a,b); printf("총 %d일이 지났습니다.",total); return 0; }
scanf()함수를 사용할 때 변수 이름 앞에 &를 붙여야 함. 형식 지정자인 %c로 하면 Enter도 하나의 공백 문자로써 입력 받을 수 있음. 자료형은 int,float,double,char와 같은 언어이고 기본 입출력은 scanf,printf와 같은 것들임.전역변수는 main함수 앞에서 선언됨. 함수는 반환형태, 함수 이름, 매개변수 순으로 됨. 반환형이 있다면 유의하며 이후 강의들을 잘 본다. 반환형이 선언되어있다면 void를 쓴다. counter()로 연산가능.
열심히 따라가다가 집중력이 떨어 졌는지.. 컴파일이 안되는 에러가 발생하곤 하는데요.. // 로 한줄한줄주석처리해서 어느부분이 문제인지.. 하나씩 잡아나가다보니 결국에는 완성이 되네요. 이번영상 덕분에 전역변수랑 지역변수의 개념이 살짝 알듯말듯.. 조금만더하면 될거 같다는 희망을 갖고 다음영상으로 갑니다. 감사합니다!!
#include int getDays(int month, int day) // 무슨달 무슨 날인지 입력받 {
int i , sum = 0; // i와 sum을 초기화 for( i= 1; i < month; i++) //i는 1부터 시작해서 month에 도달할때까지 i를 더해나가면서 반복한다 { if(i == 2) //윤년 감안하지 않음. { sum += 28;
} else if(i % 2 == 0) { sum += 30;
} else {
sum += 31; }
}
return sum + day; //sum은 특정한달까지의 날자개수구하는거 } //day는 몇날 몇일이기때문에 그냥 그대로더해줌 int main(void) { int month, day; scanf("%d,%d", &month,&day ); printf("1월 1일부터 해당 날짜까지의 거리는 %d일 입니다.", getDays(month, day));
return 0; } 횐님들 2월로 치면 작동을안하네요. 뭐가문제인지 ;;; 2월 10일 치면 38일이 나와야하는디
저는 강의 스탑시켜놓고 혼자서 만들어본 다음에 들어서 완전 다르게 했네요ㅋㅋㅋ for문으로 할 생각은 못 했어요ㅠㅠ int getDays(int month, int day) { int countDays = 0; if(month!=1 && month!=2 && month < 9) { countDays -= 1 + ((month+1)/2); } else if(month >= 9) { countDays -= 1 + (month/2); }
while(month > 1) { month -= 1; countDays += 31; } countDays += day; return countDays; } 이렇게 해도 8월 전후로 짝/홀수달 날짜수가 바뀌는 거 해결되더라구요!
#include //특정한 금액을 받아서 가장 적은 거스름 화폐의 개수를 구하는 함 수 void smallest(int number) ▶1) { int count=0; while (number>=50000) { number-=50000; count++; } while (number>=10000) { number-=10000; count++; }while (number>=5000) { number-=5000; count++; }while (number>=1000) { number-=1000; count++; } ▶2) } int main(void) { int number; printf("금액을 입력하세요:"); scanf("%d",&number) ; printf("최소로 줄 수 있는 화폐의 개수는 %d개 입니다./n",number); return 0; } ▶1과 2처럼 시간 더하기 프로그램처럼 전역변수 개념으로 최소 화폐 갯수 구하기 프로그램 만드려고 int smallest(int number)로 바꾸고, return number; 없애는 것은 왜 답이 안 나올까요?
3개월이나 지났지만 답변해드리자면 int number는 smallest 함수의 지역변수입니다. 따라서 smallest 함수가 종료되는 순간(리턴 되는 순간) 메모리에서 사라지게 됩니다. 쉽게 이해해보시고 싶으시면 smallest 함수에 month += 1000; 이라는 코드를 추가해보세요. smallest 함수에서 month에 1000을 더해줬지만 smallest 함수가 끝나는 순간 메모리에서 사라지기 때문에 smallest 함수를 몇 번을 호출을 해봐도 그 이후에 month 값을 출력을 해보시면 원래 처음 입력 받은 month값 그대로인 것을 알 수 있습니다.
안녕하세요 강의 잘 보고 있습니다. 지폐의 개수를 단순히 카운트 하는 것 보다, 5만원짜리가 몇개, 1만원짜리가 몇개등 개수를 각각 나타내면 실생활에서자주 쓰이므로 더 좋을것 같았습니다. 그래서 비슷하지만 조건이 더 적은 3자리 숫자에서 각자리 숫자를 합하는 프로그램을 한번 만들어 봤습니다. 예를들어 623이면 6+2+3=11 처럼 나오게 끔요. (이를 응용하면 지폐 카운트로 쉽게 만들 수 있죠.) 여기서 궁금한게 사용자 정의 함수에서는 한번에 1개의 값만 반환 가능한가요? (예를들면 623에서 6,2,3을 각각의 조건에 따라서 출력하게끔요) 지금은 방법을 몰라서 3개의 함수를 각각 정의시켰는데, 만약 여러개의 값을 반환이 가능하다면 어떻게 하는지 궁금합니다. #include // num100은 100의자리 숫자 int num100(int number) { int count100=0; if(number>=100) { while(number>=100) { number-=100; count100++; } return count100++; }
else { return 0; } } // num10은 10의 자리 숫자 int num10(int number) { int count10=0; if(number>=10) { while(number>100) { number-=100; } while(number>=10) { number-=10; count10++; } return count10++; }
선생님 안녕하세요! 저는 취미로 선생님 방송을 보며 프로그래밍을 배우는 예비 고2입니당! 그런데 마지막에 날짜를 계산하는 프로그램에서 계속 이상한 값이 나오네요ㅜㅜ 그래서 1시간동안 토씨하나하나 확인했는데 어디가 틀렸는지를 모르겠어요ㅜ 혹시 그냥 제 핑계일수도 있겠지만 컴퓨터 사양에따라 값이 달라지는건 아닌ㄱ... 그럴리가 없겠죠 도대체 어디를 틀린걸까나ㅜㅜㅜㅜ여기서 포기하면 애초에 시작을 안하는게 좋았겠지요?ㅋㅋ 한번 4시간이 걸리든 밤을세든 한번 그 틀린 토씨를 찾아 보도록 하겠습니다~~! 말이 길었네요ㅜ 그냥 하고픈 말은 이런 엄청난 강의 만들어주셔서 감사하고요ㅠ 앞으로도 마지막강의 까지 잘부탁드립니다!!!😙
저도 공부중인데 영상에 나온 프로그램이 조금 틀린 것 같아요... 7월까지는 괜찮지만 8월부터는 짝수달이 31일, 홀수달이 30일이라 저대로 프로그램 작성하시면 안되고 8월달부터 둘로 나눠서 작성해야 할 것 같네요. 선생님이 예시로 돌려보신 날짜인 3월 1일은 8월 전이라 관계가 없고 12월 22일은 어차피 홀수달 2개 짝수달 2개가 지난 후라 날짜가 맞게 나와서 오류를 발견하지 못하신 것 같아요...
화폐 갯수를 가장 적게 구하는 프로그램 만드는데 실행이 안됩니다. int main (void)다음 {}사이에 오류가 있는거 같은데 대체 뭐가 틀렸을까요 ㅠㅠ int main(void) { int number; printf("금액을 입력하세요 : "); scanf("%d", &number); printf("최소로 줄 수 있는 화폐의 갯수는 %d개 입니다. ", smallest(number)); return 0; }
현재 어린(?)나이에 C를 배우고 있는데 학원에서 배웠을때 이해를 못했는데 동빈님 영상 보고 제대로 이해합니다! 그런데 궁금한 점이 있어요. n개의 수를 입력 받아서 그 수의 합을 구하려고 배열을 사용해서 함수를 만드려고 하는데 main 함수 밖에서 함수를 만드니까 for에서 i=1;i
마지막 문제에서 1월1일부터 현재의 날짜까지의 차이를 구하라는 문제는 365에서 반절인 178일날 다음일부터는 반대로 177로 다운되고 12월31일은 364일이 아닌 1일이 되어야 되지 않나요? 그렇게 짜면 프로그램이 많이 복잡해지나요? 그렇게 할려다가 한계에 부딪쳐서 도움을 바라는 마음에 댓글 남겨봅니다 ..
윤년은 계산 안하되 원래 달의 날짜대로 하려면 이렇게 하면 되는건가요?#include int getdays(int month, int day) { int i, sum = 0; for(i = 1; i < month; i++) { if(i == 2) { sum += 28; } else if((i < 8)&&(i % 2 == 1)) { sum += 31; } else if((i < 8)&&(i % 2 == 0)) { sum += 30; } else if((i >= 8)&&(i % 2 == 1)) { sum += 30; } else { sum += 31; } } return sum + day; } int main(void) { int month, day; printf("1월 1일 부터 거리를 구할 날짜를 입력하세요.(예시 3월 1일= 3 1) : "); scanf("%d %d", &month,&day); printf("1월 1일부터 그 날짜까지의 거리는 %d일입니다.", getdays(month,day)); return 0; }
11:20 컴파일후 실행 하는데 이상한 현상이 발생하네요... 저번에 했던 1000초는 16분 40초 이 프로그램이 뜨고요... 직접 프로그램 열어서 실행시키면 시 입력하고 분 입력하고 더할 분 입력하고 엔터 누르면 그냥 꺼집니다 ㅠㅠ 뭐가 문제일까요? 3번 이상 체크했는데
화폐 개수 세는 프로그램에서 전역변수에 int number, count=0를 넣고 int smallest(int number)를 void smallest()로 바꾸고 main함수에서 int number를 삭제 하였는데 오류가 떴어요. 1. 위에 말씀드린대로 한다면 프로그램 실행은 힘든가요? 2. count가 정수형이라서 smallest함수형이 int인가요? 3. while문이 너무 많아서 그러는데 while의 개수는 못 줄이나요?
#include int getDays(int month, int day) { int i, sum = 0; for(i = 1; i < month; i++) { if(i == 2)// 이 프로그램에서는 윤년을 감안하지 않습니다. { sum += 28; } else if(i % 2 == 0) { sum += 30; } else { sum += 31; } } return sum + day; } int main (void) { int month, day; scanf("%d %d", &month, &day); printf("1월 1일부터 해당 날짜까지의 거리는 %d입니다.", getDays(month, day)); return 0; } 이거다했는데 검은화면에서 안됨
항상 좋은강의 잘 보고있습니다! 궁금한게 있는데, 화폐의 개수를 구하는 프로그램에서, 마지막에 최소로 줄수 있는 화폐의 개수는 %d개 입니다. 하고 왜 smallest(number)가 들어가는 건가요? 제 생각엔 count가 들어가야하는거 같은데 해보면 안되네요.. 이해가 잘 되지 않아서 질문드립니다.
정인호 와 저도 이 강의에서 다 이해가는데 그거 하나만 이해가 안가더라구요 제가 생각해본게 전역함수 int smallest(int number)에서 마지막에 return counter; 있는데 이게 의미하는게 ‘전역함수 smallest(number)에서 마지막에 counter를 반환해라’여서 counter의 총 반복수를 의미하여 smallest(number)가 %d가 아닌가 싶네요 그래서 3700원 입력했을 때 1000원 단위 3번의 counter 500원 단위 1번의 counter 100원 단위 2번의 counter으로 총 6개로 나오는거 같아요
16:20 8월 이후는 날짜가 다르다는 분들을 위해
int getDays(int month, int day)
{
int i, sum = 0;
for (i = 1; i < month; i++)
{
if (i == 2)
{
sum += 28;
}
else if (i % 2 == 0 && i < 8)
{
sum += 30;
}
else if (i % 2 == 1 && i > 8)
{
sum += 30;
}
else
{
sum += 31;
}
}
return sum + day;
}
이런 식으로 입력하면 8월 이후에 한달의 날짜가 바뀌는것도 계산할 수 있습니다.
시청자들을 위해^^
이상하다고 생각했는데 댓글보길 잘했네요 감사합니다
왜 영상처럼 하면 오류가 발생하나요?
@@GYEONGSUGIM 그냥 그럴때는 ㄹㅇㅋㅋ 치면 됨
@@GYEONGSUGIM8월은부터는 짝수이면 31일까지 홀수이면 30일까지 있습니다
와 강의가 진짜 깔끔하네요.
혹시 천재 아니신지?
잘보고 열심히 따라가고 있습니다. 타 과에서 컴퓨터 공학과로 편입하는 바람에... 처음 들을땐 어려웠는데 두번 세번 반복해서 들으니 이해가고 c언어가 재미있네요 !! 감사합니다!!
12월 22일에 딱 이 영상을 봤네요 ㅎㅎ 생일축하드려요~~
오늘 생일이신군요 신기합니다. 생일이신 날 많은 동영상에서 이 날짜를 알 수 있었네요. 축하드리고 앞으로도 많은 영상 부탁드려요~
대학교 1학년을 마치고 휴학한 상태입니다.c언어를 배우긴 했었는데, 어렵게 느껴지던 수업이기도 하고, 오래되기도 해서 점점 기억이 안나던 차에 이 영상을 발견해서 다시 공부하고 있습니다. 좋은 영상 감사합니다.
저도 공부중인데 영상에 나온 날짜 계산 프로그램이 조금 틀린 것 같아요... 7월까지는 괜찮지만 8월부터는 짝수달이 31일, 홀수달이 30일이라 저대로 프로그램 작성하시면 안되고 8월달부터 둘로 나눠서 작성해야 할 것 같네요. 선생님이 예시로 돌려보신 날짜인 3월 1일은 8월 전이라 관계가 없고 12월 22일은 어차피 홀수달 2개 짝수달 2개가 지난 후라 날짜가 맞게 나와서 오류를 발견하지 못하신 것 같아요... 그래도 항상 좋은 강의 감사합니다!!
유익하게 보고있습니다 앞으로도 좋은 강의 많이 해주세욥
독학하는데 정말 유용해요 이렇게 무료로 양질의 강의를 올려주셔서 정말로 감사합니다 혼자 두꺼운 전공서적보고 하기 참 암담했는데 ㅎㅎ 계속 달려볼게요!
월단위의 날짜를 수정하고 값이 맞지 않는 부분을 수정해 봤습니다
int getdays(int mon,int day)
{
int i, sum = 0;
for(i = 1;i < mon; i++)
{
if(i == 1 ||i == 3 ||i == 5 ||i == 7 ||i == 8 ||i == 10 ||i == 12)
{
sum += 31;
}
else if(i == 2)
{
sum += 28;
}
else
{
sum += 30;
}
}
sum += day - 1;
return sum;
}
int main(void)
{
int a,b;
int total = 0;
printf("오늘은 몇 월 몇 일인가요 : ");
scanf("%d %d",&a,&b);
total = getdays(a,b);
printf("총 %d일이 지났습니다.",total);
return 0;
}
scanf()함수를 사용할 때 변수 이름 앞에 &를 붙여야 함. 형식 지정자인 %c로 하면 Enter도 하나의 공백 문자로써 입력 받을 수 있음. 자료형은 int,float,double,char와 같은 언어이고 기본 입출력은 scanf,printf와 같은 것들임.전역변수는 main함수 앞에서 선언됨. 함수는 반환형태, 함수 이름, 매개변수 순으로 됨. 반환형이 있다면 유의하며 이후 강의들을 잘 본다. 반환형이 선언되어있다면 void를 쓴다. counter()로 연산가능.
열심히 따라가다가 집중력이 떨어 졌는지.. 컴파일이 안되는 에러가 발생하곤 하는데요..
// 로 한줄한줄주석처리해서 어느부분이 문제인지.. 하나씩 잡아나가다보니
결국에는 완성이 되네요.
이번영상 덕분에 전역변수랑 지역변수의 개념이 살짝 알듯말듯..
조금만더하면 될거 같다는 희망을 갖고 다음영상으로 갑니다. 감사합니다!!
인제 잘 작동됩니당^^ 단 출력^^
8:50 minute [minit] 미니트라고 발음합니다. 미뉴엣이 아닙니다.😁
미뉴엣 미뉴엣 그래서 엄청 신경쓰여요😂
#include
int getDays(int month, int day) // 무슨달 무슨 날인지 입력받
{
int i , sum = 0; // i와 sum을 초기화
for( i= 1; i < month; i++) //i는 1부터 시작해서 month에 도달할때까지 i를 더해나가면서 반복한다
{
if(i == 2) //윤년 감안하지 않음.
{
sum += 28;
}
else if(i % 2 == 0)
{
sum += 30;
}
else
{
sum += 31;
}
}
return sum + day; //sum은 특정한달까지의 날자개수구하는거
} //day는 몇날 몇일이기때문에 그냥 그대로더해줌
int main(void)
{
int month, day;
scanf("%d,%d", &month,&day );
printf("1월 1일부터 해당 날짜까지의 거리는 %d일 입니다.", getDays(month, day));
return 0;
}
횐님들 2월로 치면 작동을안하네요. 뭐가문제인지 ;;; 2월 10일 치면 38일이 나와야하는디
갈수록 어려워지는데요.... 내가 못하는 건가?
저는 강의 스탑시켜놓고 혼자서 만들어본 다음에 들어서 완전 다르게 했네요ㅋㅋㅋ for문으로 할 생각은 못 했어요ㅠㅠ
int getDays(int month, int day)
{
int countDays = 0;
if(month!=1 && month!=2 && month < 9)
{
countDays -= 1 + ((month+1)/2);
}
else if(month >= 9)
{
countDays -= 1 + (month/2);
}
while(month > 1)
{
month -= 1;
countDays += 31;
}
countDays += day;
return countDays;
}
이렇게 해도 8월 전후로 짝/홀수달 날짜수가 바뀌는 거 해결되더라구요!
너무재밋어여^.^!!!!!!!!
정주행중 9강/20강 쉽다~~
유익했어요~~~~
if(month % 2 == 0)이면 30일이라고 하신것 같은데 8월은 31일이에요.
문법공부에서는 중요하진 않지만..
ㅋ
#include
//특정한 금액을 받아서 가장 적은 거스름 화폐의 개수를 구하는 함 수
void smallest(int number) ▶1)
{
int count=0;
while (number>=50000)
{
number-=50000;
count++;
}
while (number>=10000)
{
number-=10000;
count++;
}while (number>=5000)
{
number-=5000;
count++;
}while (number>=1000)
{
number-=1000;
count++;
} ▶2)
}
int main(void)
{
int number;
printf("금액을 입력하세요:");
scanf("%d",&number) ;
printf("최소로 줄 수 있는 화폐의 개수는 %d개 입니다./n",number);
return 0;
}
▶1과 2처럼 시간 더하기 프로그램처럼 전역변수 개념으로 최소 화폐 갯수 구하기 프로그램 만드려고
int smallest(int number)로 바꾸고, return number;
없애는 것은 왜 답이 안 나올까요?
좋은 강의 감사합니다. 혹시 PPT자료 다운가능한가요??
시간날때마다 조금씩 보고있습니다 ㅎㅎ 강의를 보고 D-day 계산기를 한번 만들어 봤는데요. 정확한지는 모르겠네요...
#include
int getDays(int year, int month, int day){
int i, sum = 0;
for(i=0; i
12:44 int smallest(int number) 를 할때 (int number) 이 부분은 혹시 전역 변수와 같은 개념인가요?
3개월이나 지났지만 답변해드리자면 int number는 smallest 함수의 지역변수입니다.
따라서 smallest 함수가 종료되는 순간(리턴 되는 순간) 메모리에서 사라지게 됩니다.
쉽게 이해해보시고 싶으시면 smallest 함수에 month += 1000; 이라는 코드를 추가해보세요.
smallest 함수에서 month에 1000을 더해줬지만 smallest 함수가 끝나는 순간 메모리에서 사라지기 때문에 smallest 함수를 몇 번을 호출을 해봐도 그 이후에 month 값을 출력을 해보시면 원래 처음 입력 받은 month값 그대로인 것을 알 수 있습니다.
// 특정한 금액을 받아서 가장 적은 거스름 화폐의 갯수를 구하는 함수입니다.
개수 -> 갯수
@@nvn9196 갯수
[명사] '개수2(個數)'의 비표준어.
개수가 맞네요 :)
자료구조 관련한 강의도 혹시 올라올까요??
이때 사용하신 피피티 파일 올려주실 수 있으신가요ㅠㅠ?
안녕하세요 강의 잘 보고 있습니다.
지폐의 개수를 단순히 카운트 하는 것 보다, 5만원짜리가 몇개, 1만원짜리가 몇개등 개수를 각각 나타내면 실생활에서자주 쓰이므로 더 좋을것 같았습니다.
그래서 비슷하지만 조건이 더 적은 3자리 숫자에서 각자리 숫자를 합하는 프로그램을 한번 만들어 봤습니다.
예를들어 623이면 6+2+3=11 처럼 나오게 끔요. (이를 응용하면 지폐 카운트로 쉽게 만들 수 있죠.)
여기서 궁금한게 사용자 정의 함수에서는 한번에 1개의 값만 반환 가능한가요?
(예를들면 623에서 6,2,3을 각각의 조건에 따라서 출력하게끔요)
지금은 방법을 몰라서 3개의 함수를 각각 정의시켰는데, 만약 여러개의 값을 반환이 가능하다면 어떻게 하는지 궁금합니다.
#include
// num100은 100의자리 숫자
int num100(int number)
{
int count100=0;
if(number>=100)
{
while(number>=100)
{
number-=100;
count100++;
}
return count100++;
}
else
{ return 0;
}
}
// num10은 10의 자리 숫자
int num10(int number)
{
int count10=0;
if(number>=10)
{
while(number>100)
{
number-=100;
}
while(number>=10)
{
number-=10;
count10++;
}
return count10++;
}
else
{ return 0;
}
}
// num1은 1의자리 숫자
int num1(int number)
{
int count1=0;
if(number>=1)
{
while(number>100)
{
number-=100;
}
while(number>10)
{
number-=10;
}
while(number>=1)
{
number-=1;
count1++;
}
return count1++;
}
else
{ return 0;
}
}
int main (void)
{
int number;
printf("3자리 숫자를 입력하세요 : ");
scanf("%d", &number);
int sum=num100(number) + num10(number) + num1(number);
printf("각자리 숫자의 합은 %d입니다.",sum);
return 0;
}
이거 처음보면 뭔소리지? 알기 힘들어용
#include
int year;
int month;
int sumday;
int day;
int year2;
int month2;
int sumday2;
int day2;
void leapyearcheck()
{
if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0))
{
sumday ++;
sumday += (year * 365);
}
else
{
sumday += (year * 365);
}
}
void leapyearcheck2()
{
year2 = year2;
if ((year2 % 4 == 0) && (year2 % 100 != 0) || (year2 % 400 == 0))
{
sumday2 ++;
sumday2 += (year2 * 365);
}
else
{
sumday2 += (year2 * 365);
}
}
void monthchange()
{
if (month == 1)
{
sumday += (31);
}
else if (month == 2)
{
sumday += (28+31);
}
else if (month == 3)
{
sumday += (31+31+28);
}
else if (month == 4)
{
sumday += (30+31+28+31);
}
else if (month == 5)
{
sumday += (31+31+28+31+30);
}
else if (month == 6)
{
sumday += (30+31+28+31+30+31);
}
else if (month == 7)
{
sumday += (31+31+28+31+30+31+30);
}
else if (month == 8)
{
sumday += (31+31+28+31+30+31+30+31);
}
else if (month == 9)
{
sumday += (30+31+28+31+30+31+30+31+31);
}
else if (month == 10)
{
sumday += (31+31+28+31+30+31+30+31+31+30);
}
else if (month == 11)
{
sumday += (30+31+28+31+30+31+30+31+31+30+31);
}
else if (month == 12)
{
sumday += (31+31+28+31+30+31+30+31+31+30+31+30);
}
}
void monthchange2()
{
if (month2 == 1)
{
sumday2 += (31);
}
else if (month2 == 2)
{
sumday2 += (28+31);
}
else if (month2 == 3)
{
sumday2 += (31+31+28);
}
else if (month2 == 4)
{
sumday2 += (30+31+28+31);
}
else if (month2 == 5)
{
sumday2 += (31+31+28+31+30);
}
else if (month2 == 6)
{
sumday2 += (30+31+28+31+30+31);
}
else if (month2 == 7)
{
sumday2 += (31+31+28+31+30+31+30);
}
else if (month2 == 8)
{
sumday2 += (31+31+28+31+30+31+30+31);
}
else if (month2 == 9)
{
sumday2 += (30+31+28+31+30+31+30+31+31);
}
else if (month2 == 10)
{
sumday2 += (31+31+28+31+30+31+30+31+31+30);
}
else if (month2 == 11)
{
sumday2 += (30+31+28+31+30+31+30+31+31+30+31);
}
else if (month2 == 12)
{
sumday2 += (31+31+28+31+30+31+30+31+31+30+31+30);
}
}
void dayplus()
{
sumday -= day;
}
void dayplus2()
{
sumday2 -= day2;
}
int main(void)
{
printf("[ SYSTEM ] 현재 년도 를 입력해주세요
");
printf("[ ANSWER ] ");
scanf("%d", &year);
getchar();
leapyearcheck();
printf("[ SYSTEM ] 현재 월달 을 입력해주세요.
");
printf("[ ANSWER ] ");
scanf("%d", &month);
getchar();
monthchange();
printf("[ SYSTEM ] 현재 일수 를 입력해주세요.
");
printf("[ ANSWER ] ");
scanf("%d", &day);
getchar();
dayplus();
//printf("%d
", sumday);
printf("[ SYSTEM ] 목표년도를 입력해주세요.
");
printf("[ ANSWER ] ");
scanf("%d", &year2);
getchar();
leapyearcheck2();
printf("[ SYSTEM ] 목표 월달 을 입력해주세요.
");
printf("[ ANSWER ] ");
scanf("%d", &month2);
getchar();
monthchange2();
printf("[ SYSTEM ] 목표 일수 를 입력해주세요.
");
printf("[ ANSWER ] ");
scanf("%d", &day2);
getchar();
dayplus2();
//printf("%d
",sumday2);
printf("[ SYSTEM ] D-DAY %d일 입니다.", (sumday - sumday2) * -1);
return 0;
}
윤년까지 판독하여 d-day를 계산할수있는걸 제가 직접 많은시간 과 시행착오를 거치고 만들었습니다
다만 입력하는것에만 윤년 평년 판독이 가능하고 거슬러 올라가는 과정중 윤년이 포함되서 계산되는것은
구현하지 못했습니다 그것까지할 엄두가 안나네요
엄청 노럭하셨네요.... 대단 하세요!
return을 넣는 이유를 알 수 있을 까요
선생님 안녕하세요! 저는 취미로 선생님 방송을 보며 프로그래밍을 배우는 예비 고2입니당! 그런데 마지막에 날짜를 계산하는 프로그램에서 계속 이상한 값이 나오네요ㅜㅜ 그래서 1시간동안 토씨하나하나 확인했는데 어디가 틀렸는지를 모르겠어요ㅜ
혹시 그냥 제 핑계일수도 있겠지만 컴퓨터 사양에따라 값이 달라지는건 아닌ㄱ...
그럴리가 없겠죠 도대체 어디를 틀린걸까나ㅜㅜㅜㅜ여기서 포기하면 애초에 시작을 안하는게 좋았겠지요?ㅋㅋ 한번 4시간이 걸리든 밤을세든 한번 그 틀린 토씨를 찾아 보도록 하겠습니다~~! 말이 길었네요ㅜ 그냥 하고픈 말은 이런 엄청난 강의 만들어주셔서 감사하고요ㅠ 앞으로도 마지막강의 까지 잘부탁드립니다!!!😙
저도 공부중인데 영상에 나온 프로그램이 조금 틀린 것 같아요... 7월까지는 괜찮지만 8월부터는 짝수달이 31일, 홀수달이 30일이라 저대로 프로그램 작성하시면 안되고 8월달부터 둘로 나눠서 작성해야 할 것 같네요. 선생님이 예시로 돌려보신 날짜인 3월 1일은 8월 전이라 관계가 없고 12월 22일은 어차피 홀수달 2개 짝수달 2개가 지난 후라 날짜가 맞게 나와서 오류를 발견하지 못하신 것 같아요...
화폐 갯수를 가장 적게 구하는 프로그램 만드는데 실행이 안됩니다. int main (void)다음 {}사이에 오류가 있는거 같은데 대체 뭐가 틀렸을까요 ㅠㅠ
int main(void)
{
int number;
printf("금액을 입력하세요 : ");
scanf("%d", &number);
printf("최소로 줄 수 있는 화폐의 갯수는 %d개 입니다.
", smallest(number));
return 0;
}
'24시간 마법진' 이 뭔지 궁금한 1인
여름에 저거 있으면 24시간 모기 방어가 가능한가 ?
for 명령으로 숫자를 나열하는 문젠데욥
1360
259 이런 식으로 나열하는 밥법 쫌 아르키 주세영^^
48
7
for 명령 이거 누가 만들었나영?^^ 도무지 아리까리해서 알 수가 없네영^^
for 명령 숫자 나열하는 법부터 자세히 쫌 아르키 주시믄 좋겠쩌영^^
hour %=24; 는 입력하지 않아도 정상적으로 출력되는데 해당 변수를 입력해주신 이유가 궁금합니다!
25시가 없기때문입니다 예를들어 hour 가 25시 가 되버리면 24시 디지털 시계상에는 1시 라고 되죠
하는도중 오류가 생겨서 질문드립니다......
#include
int smallest(int number)
{
int count = 0;
while(number >= 50000)
{
number -= 50000;
count++;
}
while(number >= 10000)
{
number -= 10000;
count++;
}
while(number >= 5000)
{
number -= 5000;
count++;
}
while(number >= 1000)
{
number -= 1000;
count++;
}
while(number >= 500)
{
number -= 500;
count++;
}
while(number >= 100)
{
number -= 100;
count++;
}
while(number >= 50)
{
number -= 50;
count++;
}
while(number >= 10)
{
number -= 10;
count++;
}
}
int main (void)
{
int number;
printf("금액을 입력하세요 : ");
scanf("%d" , &number);
printf("최소로 줄수있는 화폐의 개수는 %d개 입니다.
" , smallest(number));
return 0;
}
이렇게했는데도 500을 입력하면 1이나와야 하는데 500이나오고 3700을 입력하면 3700이나옵니다...그냥 입력한 수가나와요,,,, 혹시 오류라도 있는건가요?
while 앞에 뛰어쓰기???
hour %= 24;
이 부분을 왜 해줘야 하는 지 모르겠습니다.
안 해줘도 되지 않나요??
더해지는 시간이 24시간이 넘을 수도 있으니까, 24시가 넘어가면 0시부터 다시 들어가야해서 그런거 아닐까요ㅎ
좋은강의 넘넘 감사합니다! hour, minute, minuteAdd 를 전역변수로 쓰셨는데 main함수나 counter 함수 안에서 사용할 수는 없을까요? 만약 가능하다면 어떻게 해야 좋을까요ㅜㅜ C언어를 막 배워나가는 중이라 많이 어렵네요ㅠㅡㅜ
전역변수니까 그냥 평소대로 쓸수있지않을까요.
static으로 되려나...?
string.h 헤더파일을 추가해서 string 문자열 자료형은 사용할 수 없나요? c++ 강좌에서 나온거라 잘 모르겠네요..
근데 매개 변수형? 거기에는 꼭 뭘 써야하는 건가요?
현재 어린(?)나이에 C를 배우고 있는데 학원에서 배웠을때 이해를 못했는데 동빈님 영상 보고 제대로 이해합니다! 그런데 궁금한 점이 있어요. n개의 수를 입력 받아서 그 수의 합을 구하려고 배열을 사용해서 함수를 만드려고 하는데 main 함수 밖에서 함수를 만드니까 for에서 i=1;i
마지막 문제에서 1월1일부터 현재의 날짜까지의 차이를 구하라는 문제는 365에서 반절인 178일날 다음일부터는 반대로 177로 다운되고 12월31일은 364일이 아닌 1일이 되어야 되지 않나요? 그렇게 짜면 프로그램이 많이 복잡해지나요? 그렇게 할려다가 한계에 부딪쳐서 도움을 바라는 마음에 댓글 남겨봅니다 ..
동빈나님 그러면 입출력 헤더파일을 선언하지않고 입출력함수를 직접 만들수 있나요?
왜 마지막 실습(1월 1일부터 현재 날짜까지의 날짜 차이 구하기)에서는 '#define month 12'를 하지 않나요?
month는 12라는 값으로 고정되어있지 않고, 사용자가 입력한 값에 따라 변동되기 때문인 것 같아요~
12월 22일 입력했더니 335나오고 12 31일 입력했더니 335나오던데 왜이런걸까요 또같이 했는데 말이죠
윤년은 계산 안하되 원래 달의 날짜대로 하려면 이렇게 하면 되는건가요?#include int getdays(int month, int day)
{
int i, sum = 0;
for(i = 1; i < month; i++)
{
if(i == 2)
{
sum += 28;
}
else if((i < 8)&&(i % 2 == 1))
{
sum += 31;
}
else if((i < 8)&&(i % 2 == 0))
{
sum += 30;
}
else if((i >= 8)&&(i % 2 == 1))
{
sum += 30;
}
else
{
sum += 31;
}
}
return sum + day;
}
int main(void)
{
int month, day;
printf("1월 1일 부터 거리를 구할 날짜를 입력하세요.(예시 3월 1일= 3 1) : ");
scanf("%d %d", &month,&day);
printf("1월 1일부터 그 날짜까지의 거리는 %d일입니다.", getdays(month,day));
return 0;
}
11:20 컴파일후 실행 하는데 이상한 현상이 발생하네요... 저번에 했던 1000초는 16분 40초 이 프로그램이 뜨고요... 직접 프로그램 열어서 실행시키면 시 입력하고 분 입력하고 더할 분 입력하고 엔터 누르면 그냥 꺼집니다 ㅠㅠ 뭐가 문제일까요? 3번 이상 체크했는데
저도 똑같이 뜨네요ㅠㅠㅠㅠ
그럼 혹시 *를 연속해서 표시하는 함수를 이용한 직사각형을 표시하는 프로그램은 어떻게 짜야하나요..? FOR이랑 뭘 써야하는지 모르겠어요 ㅠㅠ
강의 재밌습니다..근데 캘린더 보면 month가 2의 배수여도 31일인것도 있던데 영상 처럼 해도 정확한건가요?
ㄴㄴ안정확함
헐
@@dongbinna 원리만 배우면 되니까요! 뭐 어때요 ㅎㅎ
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ개웃기노
@@dongbinna ㅋㅋㅋㅋㅋㅋㅋㅋ
계속 시간이나 분을 입력하고 엔터를 누르면 cmd 창이 꺼지는데 어떡하나요,,
저 궁금한게 생겼는데, 정확한 void의 뜻이 뭐죠?? 언제 쓰고 언제 안쓰는지 너무 헷갈려서요 ㅠㅠ..
선생님~ 항상 잘 보고 있어요 :) 그런데 저 마지막 프로그램 1월 1일부터 현재 날짜 차이를 구하는 프로그램이요. 10월은 10월 1일부터 10월 30일까지 모두 274일이라고 뜨는데 왜 그런 건가요? 9월과 11월은 또 정상적으로 작동하네요.
화폐 개수 세는 프로그램에서 전역변수에 int number, count=0를 넣고
int smallest(int number)를 void smallest()로 바꾸고
main함수에서 int number를 삭제 하였는데 오류가 떴어요.
1. 위에 말씀드린대로 한다면 프로그램 실행은 힘든가요?
2. count가 정수형이라서 smallest함수형이 int인가요?
3. while문이 너무 많아서 그러는데 while의 개수는 못 줄이나요?
질문 있습니다. 뭐가 문제인지 모르겠는데요
이렇게 입력하면 금액을 이것저것 입력해도
거슬러 줄수 있는 화폐 개수가 계속 0으로 나오는거죠?
# include
int smallest(int number)
{
int count = 0;
while(number >= 50000)
{
number -= 50000;
count++;
}
while(number >= 10000)
{
number -= 10000;
count++;
}
while(number >= 5000)
{
number -= 5000;
count++;
}
while(number >= 1000)
{
number -= 1000;
count++;
}
while(number >= 500)
{
number -= 500;
count++;
}
while(number >= 100)
{
number -= 100;
count++;
}
while(number >= 50)
{
number -= 50;
count++;
}
while(number >= 10)
{
number -= 10;
count++;
}
return count;
}
int main(void)
{
int number;
printf("금액을 입력하세요 : ");
scanf("d", &number);
printf("최소로 줄 수 있는 화폐의 개수는 %d 개입니다.
", smallest(number));
return 0;
}
scanf("d", &number); 에 d -> %d 로 바꾸니 되네용
hour+=minute/60 이 무슨 소리인가요? 12+=80/60 으로 보는건가요?
분(minute)을 60으로 나눈 '몫'이 시간(hour) 더해지도록 해주는 것입니다. 예를 들어 59분이면 0시간, 60분이면 1시간, 239분이면 3시간, 241분이면 4시간, ... 이런 식입니다.
감사합니다.
12월 22일이 생일이시군요 ㅋ
저도 생일 12월22일인데
똑같네요.
Hour을 왜 24로 나눈 나머지로 계산하는지 모르겠어요 ..
근데 scanf 한 후에 괄호에서 &는 왜 하는건가욤..? 전에 설명 나왔던것같은데 어떤영상인지도 기억 안나고 까먹어서요 ㅜ
쓰레기값이 들어가지않게 주소를 지정해준거라고 생각하면 됩니다
11:46
counter() 라는 함수의 이름은 사용자 멋대로 바꿔도 되는건가요? counter()라고 쓰셨지만 abc()이렇게 써도 괄호 안의 내용만 같다면 상관없나요? 아니면 counter()이라는 이름 자체가 함수의 이름이 돼서 그 함수의 기능을 하는 건가?
바꿔도 상관없습니다
바꿔도 됩니다
이름 지을 때는 나중에 알아보기 쉽게 짓는게 났겠죠?
#include
int getDays(int month, int day)
{
int i, sum = 0;
for(i=1; i < month; i++)
{
if(i == 2)
{
sum += 28; // 윤년 x 가정
}
else if(i % 2 == 0)
{
sum += 30;
}
else
{
sum += 31;
}
}
return sum + day;
}
int main(void)
{
int month, day;
char o;
while(1)
{
printf("현재 날짜는 몇월 몇일입니까? : ");
scanf("%d %d", &month, &day);
printf("1월 1일부터 현재 날짜까지의 차이는 %d일 입니다.
", getDays(month, day) - 1);
getchar();
printf("계산을 계속 진행하시겠습니까? (Y, N)");
scanf("%c", &o);
if(o == 'y' || o == 'Y')
{
continue;
}
else if(o == 'N' || o == 'n')
{
break;
}
}
return 0;
}
실행까지는 됬는데 명령어 프롬포트의 검은화면에서 글자가 안떠요
#include
int getDays(int month, int day)
{
int i, sum = 0;
for(i = 1; i < month; i++)
{
if(i == 2)// 이 프로그램에서는 윤년을 감안하지 않습니다.
{
sum += 28;
}
else if(i % 2 == 0)
{
sum += 30;
}
else
{
sum += 31;
}
}
return sum + day;
}
int main (void)
{
int month, day;
scanf("%d %d", &month, &day);
printf("1월 1일부터 해당 날짜까지의 거리는 %d입니다.", getDays(month, day));
return 0;
}
이거다했는데 검은화면에서 안됨
@@승범-i5h 작성하신거보면 안뜨는게 맞아요
검은 화면 떠있을 때 3월 4일을 입력한다고 치면 그냥 3 4를 입력하면 더ㅐ요
+그리고 메인함수에 사용자정의함수 호출도 안하셨어요
@@승범-i5h scanf문 밑에
getDays();쓰세용
시간 더한기 프로그램 실습을 하고 있는데 컴파일하고 있는 과정에서 counter 함수 아래에 중괄호에서 오류가 뜨네요.. 뭐가 문제인 걸까요?
피라미드가 안만들어지여. 처음엔 잘 작동했는데......^^
마지막에 printf부분은 실행이 안되는데 왜 그럴까요ㅜㅜㅜ
알려주세요 프로그래밍 천재님들ㅜㅜ
#include
int getDays(int month, int day)
{
int i, sum=0;//i와 sum을 초기화
for(i=1; 1
처음에 사용자함수 정의하실때 for 구문에서
"(i=1; i
이현종 헉 그렇군요 감사합니당!!
hour %= 24를 왜 한건지 이해가 잘안되는데 설명해주실 분 안계신가요 ㅜㅜ
아 그런 의미군요! 알려주셔서 정말로 감사합니다 ㅜㅜ 몰라서 몇 일간 그 문자들이 머리에서 떠나지 않더라고요 이런 의미였군여! 정말로 알려주셔서
감사합니다!
화폐 개수 구해주는 프로그램에서 어떻게 개수가 구해지는지 이해가 안가네요.
71000원이면 오만원 1장, 만원 1장 천원 1장
1. 가장 큰단위화폐 오만원을 한번뺄수있으면 뺌 (금액 21000원, count=1)
2. 오만원을 못빼는 경우에는(21000원) 두번째로 큰 단위의 금액을 뺌 (금액 11000원, count=2)
3. 다시 만원으로 뺄수있는 금액(11000원)이므로 한번더 만원으로 총금액을 빼줌(1000원, count=3)
4. 이하 반복, count =4
@@앵두새-d4o -=의 뜻을 몰랐어서 이해가 안갔었네요. 이제 확실히 알았습니다 ^^, 알려주셔서 감사해요
1:22 에 %c를 %d라고 발음하셨네 ㅎ
어렵다 .. ㄷㄷ
이중반복문부터 매우 어려워지는군옄ㅋㅋ 벼락치기 힘드네
항상 좋은강의 잘 보고있습니다! 궁금한게 있는데, 화폐의 개수를 구하는 프로그램에서, 마지막에 최소로 줄수 있는 화폐의 개수는 %d개 입니다. 하고 왜 smallest(number)가 들어가는 건가요? 제 생각엔 count가 들어가야하는거 같은데 해보면 안되네요.. 이해가 잘 되지 않아서 질문드립니다.
정인호 와 저도 이 강의에서 다 이해가는데 그거 하나만 이해가 안가더라구요 제가 생각해본게
전역함수 int smallest(int number)에서 마지막에 return counter; 있는데 이게 의미하는게 ‘전역함수 smallest(number)에서 마지막에 counter를 반환해라’여서 counter의 총 반복수를 의미하여 smallest(number)가 %d가 아닌가 싶네요
그래서 3700원 입력했을 때 1000원 단위 3번의 counter 500원 단위 1번의 counter 100원 단위 2번의 counter으로 총 6개로 나오는거 같아요
int counter() 할때 counter말고 다른거 마음대로 해도 되는건가요?아님 몇개가 정해저 있는건가요?
11:14
똑같이 해서 실행하니깐
이 프로그램은 초를 시분초로 바꿔줌니다
(sec)를 입력하십시오:
이렇게 나오는데 어떻게 해야하나요??
제대로 입력했는지 하나하나 잘 보세요 문제점이 있을 수도 있어요
왜 저는 3700원이 2개로 뜰까요?;;;ㅠㅠ
@@_random-person while (number >= 1000);
11 51
이번 동영상부터 어렵다.... 이해를 못하겠음
#include
int second, minute, hour, addtime;
void timecalculator(void)
{
second += addtime;
minute += second /= 60;
hour += second / 3600;
hour += minute / 60;
second %= 60;
minute %= 60;
}
int main(void)
{
printf("Hour : ");
scanf("%d", &hour);
printf("
Minute : ");
scanf("%d", &minute);
printf("
Second : ");
scanf("%d", &second);
printf("
Addtime(Sec) : ");
scanf("%d", &second);
timecalculator();
printf("
Result is %dHour %dMinute %dSecond", hour, minute, second);
return 0;
}
시간 덧셈 초단위까지...
내가 이해를 못하는걸수도있지만 c언어 처음하는 사람들이 들을 만한 강의는 아닌듯.... 너무 혼자 앞서가심...
false 팰스 break 브리크 minute 미뉴엣 .....
신뢰성이 팍팍 떨어지네요 ㅠㅠ
내용이 나쁘지는 않은데...