[스무디] C언어 19. 반복문 while

Поделиться
HTML-код
  • Опубликовано: 22 дек 2024

Комментарии • 43

  • @최고야당신
    @최고야당신 4 года назад +1

    100을 입력할 때까지 입력 값을 출력하는 건 어떻게 하나요?

  • @user-st6po4js7n
    @user-st6po4js7n 8 лет назад +1

    실례지만 글꼴 뭐로 하셨는지 알 수 있을까요?

  • @operauniverse8905
    @operauniverse8905 9 лет назад +1

    선생님,
    #include
    int main (void)
    {
    int a=0;
    while (a==0)
    printf("a
    ");
    printf("b
    ");
    return 0;
    } 이렇게 프로그래밍하면 실행때 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa반복이고
    {printf("a
    ");
    printf("b
    ");} 이렇게 블록으로 지정하면 ababababababababababab뜨던데 블록으로 설정한게 차이가 큰가요??

    • @스무디TV
      @스무디TV  9 лет назад

      +만수르 while 다음에 한 문장만 반복됩니다. while다음에 문장이 printf("a
      ");이므로 printf("a
      ");만 반복됩니다.
      while 다음에 {printf("a
      "); printf("b
      ");} 있으면 {printf("a
      "); printf("b
      ");} 가 한 문장이라서 {printf("a
      "); printf("b
      ");} 가 반복됩니다.

    • @operauniverse8905
      @operauniverse8905 9 лет назад

      세세한 설명 감사합니다.

  • @현욱-c3g
    @현욱-c3g 6 лет назад +6

    자랑 좀 하겠습니다
    #include
    int main(void)
    {
    int password = 1234;
    int input = 0;
    int inputCounter = 1; // 입력 횟수 카운터
    printf("Enter your Password
    ");
    while (input != password) {
    if(inputCounter > 10 ) { //입력 횟수가 10번 이상이 되면 프로그램 종료
    printf("You entered wrong Password more than 10 times. Program will be Terminated.");
    return 0;
    }
    if(inputCounter != 1) //비밀번호가 틀렸을 때 재입력 요구.
    printf("Wrong Password. please retype. ");
    scanf("%d", &input);
    inputCounter++;
    } // while loop end
    printf("PassWord Correct.");
    return 0;
    }
    비밀번호 입력창 만들어봤어요 ㅎ

    • @현성빈-q1e
      @현성빈-q1e 6 лет назад +1

      조금 더 간략히 축소하자면#include int main()
      {
      int a = 0;
      while (a != 1125) {
      printf("비밀번호를 입력하시오
      ");
      scanf("%d", &a);
      if (a!=1125)
      printf("떙, 다시입력바랍니다.
      ");
      }
      printf("딩동댕
      ");
      return 0;
      }

  • @user-np7di6wu1q
    @user-np7di6wu1q 6 лет назад

    a = a + 1;은 while 문의 '실행' 부분 에 포함되는 것 인가요?
    또 a = a+1 위치를
    #include
    int main(void)
    {
    int a = 0;
    while (a < 10) {
    printf("hello
    ");
    }
    a = a + 1;
    return 0;
    }
    이렇게 변경하면 어떻게되나요?

  • @dydgmldydgh
    @dydgmldydgh 9 лет назад +1

    a = a+1; 으로 말고 a ++; 로도 할수 잇지않나염???

    • @스무디TV
      @스무디TV  9 лет назад +2

      이구용호 아직 ++를 설명하기 전이라서 그렇습니다.그리고 a=a+1;과 동일한 표현은 a++;가 아닌 ++a; 입니다.

  • @m4ndeokyi
    @m4ndeokyi 7 лет назад

    #include
    int main(void)
    {
    int PIN = 1234;
    int input;
    int wrong = 0;
    printf ("비밀번호를 입력하시오
    ");
    while (input != PIN) {
    scanf("%d", &input);
    wrong = wrong + 1;
    if (wrong = 10) {
    printf("10번 틀렸습니다. 5번 더 틀리면 끄겠습니다.
    ");
    }
    else if (wrong = 15) {
    return 0;
    }
    else {
    printf("틀렸습니다. 다시 시도하십시오.
    ");
    }
    }
    printf("비밀번호를 맞추셨습니다.");
    }
    왜 여기서 한번 틀려도 "10번 틀렸습니다. 5번 더 틀리면 끄겠습니다" 가 나오고 15번 틀려도 안 꺼지나요?

    • @gunmukkang7574
      @gunmukkang7574 7 лет назад

      #include int main(void)
      {
      int PIN = 1234;
      int input;
      int wrong = 0;
      printf ("enter the password
      ");
      while (input != PIN) {
      scanf("%d", &input);
      wrong = (wrong + 1); if (wrong == 10)
      printf("You are wrong for 10 times, 5 more, this will end.
      ");
      if (wrong == 15) {
      printf("Program has ended.");
      return 0;
      }
      }
      printf("You got the password.");
      }...영어라서 죄송해요 이렇게 하니까 되네요!

  • @SK-je1wh
    @SK-je1wh 8 лет назад

    한 번 if문하고 섞어 봤는데 왜 숫자말고 문자나 공백 입력시에 저 if문이 무한루프되는 이유가 뭔지 설명좀해주세요
    그리고 공백하나당 단위가 한개인것처럼 되는 이유도..
    #include
    int main(void)
    {
    int password = 1234;
    int input = 0;
    printf("비밀번호를 입력하세요.(공백X 숫자만 가능)
    ");
    while (input != password) {
    scanf("%d", &input);
    if (input != password){
    printf("틀리셨습니다. 다른 비밀번호를 입력해주세요.
    ");
    }
    printf("비밀번호를 맞췄습니다.
    ");
    return 0;
    }

    • @MN-do7hk
      @MN-do7hk 7 лет назад

      제가 직접 해보니까 공백 하나당 경고문이 하나씩 더 추가되네요. 아마 공백 후에 오는 것들이 각각 인풋값으로 입력되어서 그 인풋값 하나당 경고문이 하나씩 뜨는게 아닐까 추측해봅니다.

  • @JJddff22
    @JJddff22 9 лет назад

    #include
    int main(void)
    {
    int a = 0;
    printf("Please typing your cord : ");
    scanf("%d", &a);
    if (a == 0)
    printf("Please Log on Different ID
    ");
    else if (a == 7){
    printf("This account is Moderator!!
    ");
    printf("Please Log on Different ID
    ");
    }
    else {
    printf("welcome cord %d user!!
    ", a);
    printf("welcome to this server
    ");
    }
    printf("Thanks for using this Launcher
    ");
    return 0;
    }
    여기서 0이랑 7숫자를 입력하면 please typing your cord로 이동시키고 싶은데
    어디어 while을 넣어야될까요?

    • @스무디TV
      @스무디TV  9 лет назад

      +젝플뉨 while로 하시려면, 이렇게 하시면 됩니다.
      #include
      int main(void)
      {
      int a = 0;
      while ( a == 0 || a == 7) {
      printf("Please typing your cord : ");
      scanf("%d", &a);
      if (a == 0)
      printf("Please Log on Different ID
      ");
      else if (a == 7){
      printf("This account is Moderator!!
      ");
      printf("Please Log on Different ID
      ");
      }
      else {
      printf("welcome cord %d user!!
      ", a);
      printf("welcome to this server
      ");
      }
      }
      printf("Thanks for using this Launcher
      ");
      return 0;
      }

    • @JJddff22
      @JJddff22 9 лет назад

      #include
      int main(void)
      {
      int id = 1;
      int pw = 2;
      int input = 0;

      printf("ID를 입력하세요:");
      while (input != id) {
      scanf("%d", &input);
      if (input != id)
      printf("ID가 올바르지 않습니다!
      다시 입력해주세요:");
      if (input == id)
      printf("ID가 올바릅니다! 비밀번호를 입력해주세요!
      ");
      }
      printf("비밀번호:");
      while (input != pw) {
      scanf("%d", &input);
      if (input != pw)
      printf("비밀번호가 올바르지 않습니다!
      다시 입력해주세요:");
      if (input == pw)
      printf("비밀번호가 올바릅니다!
      ");
      }
      printf("해제완료
      ");
      printf("Please typing your cord : ");
      scanf("%d", &input);
      if (input == 0)
      printf("Please Log on Different ID
      ");
      else if (input == 7){
      printf("This account is Moderator!!
      ");
      printf("Please Log on Different ID
      ");
      }
      else {
      printf("welcome cord %d user!!
      ", input);
      printf("welcome to this server
      ");
      }
      printf("Thanks for using this Launcher
      ");
      return 0;
      }
      이런 형식으로 소스를 짤려고 하는데
      int a = 0; 부분을 따로 넣지않고
      input으로 통일 시켯는데 아무렇게나
      예를들어 weawfdsf를 쳤을때
      정수가 아니니까 다른 아이디로 로그인하라고 떠야되는데, 2user로 로그인되요
      어디 부분에서 문제가 있는걸까요

    • @스무디TV
      @스무디TV  9 лет назад

      +젝플뉨 %d는 숫자만 받아들일 수 있습니다.

    • @JJddff22
      @JJddff22 9 лет назад

      +스무디 TV 정수가 아닌 다른 숫자면 다른 아이디로 로그인하라는 문구가 떠야되는데
      2라고뜨는버그가..ㅠ

  • @JJddff22
    @JJddff22 9 лет назад +1

    원래 이거 while 문 안에 if문 못넣나요?

    • @스무디TV
      @스무디TV  9 лет назад

      +젝플뉨 가능 합니다.
      요류가 발생한 소스코드를 올려주시면 무엇이 문제인지 알려드립니다.

  • @smirnoff_the_best_vodka
    @smirnoff_the_best_vodka 8 лет назад

    c언어 문법 재생목록에 메세지 박스 띄우는 법 강의 있나요?

    • @스무디TV
      @스무디TV  8 лет назад

      +키툴디 표준C언어에서는 메세지박스 못띄웁니다.
      Win32API 프로그래밍 재생목록을 보세요. 메세지 박스는 Win32API쪽입니다.

  • @데스크솔
    @데스크솔 9 лет назад +3

    저도 만들어봤어요..
    강의 정말 잼나요~ ^^ 감사합니다.
    #include
    int main (void)
    {
    int password = 11584;
    int input = 0;
    printf("크랙 실행: ");
    scanf("%d", &input);
    while (input != password){
    input = input + 1;
    printf("%d
    ", input);
    }
    printf("인증 성공
    ");
    printf("비밀번호는 %d", input);
    return 0;
    }

  • @Beaker88
    @Beaker88 8 лет назад +1

    스무디님 제가 스무디님이 짜신걸 보고 이렇게 똑같이 따라했습니다.
    #include
    int main(void)
    {
    int password = 1234;
    int input = 0;
    while (input != password){
    scanf("%d", &input);
    }
    printf("비밀번호를 찾았습니다.
    ");
    return 0;
    }
    그런데 실행을 시켰는데 몇분을 기다려도 아무것도 안뜨더라구요..
    컴파일에도 아무 문제가 없었는데 제가 무엇을 잘 못 한건가요?

    • @스무디TV
      @스무디TV  8 лет назад +1

      +정혜선 실행하면 scanf("%d", &input); 부분에서 사용자 입력을 기다릴테니, 화면에는 아무것도 안뜨는게 맞습니다.

  • @runicks3078
    @runicks3078 8 лет назад

    중괄호 쓸때
    while(a

    • @MN-do7hk
      @MN-do7hk 7 лет назад

      그냥 취향임

  • @홍세민-b3e
    @홍세민-b3e 8 лет назад

    뭐가 문제일까요?
    int mian (void)
    {
    int quition = 6;
    int anwser = 0;
    printf("숫자로 하는 up down 게임");
    printf("첫번째 숫자는 10안에 있습니다");
    printf("
    그럼 시작!!!");
    while (answer != 6){
    sacanf("%d",&answer);
    if(answer=6)
    printf ("우와 맟추셧어요");
    else
    printf("정답이 아닙니다 다시해보세요");
    }
    return 0 ;}

    • @shooting_star2774
      @shooting_star2774 7 лет назад

      홍세민 늦었지만 if문에 = 아니라 ==이고 그리고 sacanf가 아니라 scanf입니다 ㅎㅎ

  • @hymnforthewk618
    @hymnforthewk618 4 года назад

    감사합니다

  • @김도현-z3m5h
    @김도현-z3m5h 9 лет назад

    #include int main(void)
    {
    int i = 0, n = 0;
    while(n

    • @스무디TV
      @스무디TV  9 лет назад

      +김도현 무엇이 목적인가요?
      일단, 무한 루프가 발생합니다.
      그리고, i = i+ ++i;는 미정의 동작을 발생시킵니다.

    • @김도현-z3m5h
      @김도현-z3m5h 9 лет назад

      스무디 TV 1~100을 더했을때 나오는 값을 하나씩 출력하여 1~100을 더했을때 나오는 값을 보려는 것이었는데... 아예 출력이 니오지 않네요 아버지 말씀으론 Sum인가? 그걸 설정해야 한다는데... 뭔지 모르겠네요

    • @스무디TV
      @스무디TV  9 лет назад

      김도현 1~100 의 수를 모두 더한다는 것은, 이런거죠.
      1 + 2 + 3 + 4 + 5 + ... + 98 + 99 + 100
      그런데 님이 원하는 것은 한번에 더하는것이 아니고, 한번 반복 할 때마다 더하기를 한번 씩 하는 것이죠?
      더하기를 하나하나씩 하는 겁니다.
      맨처음 더하기는 1 + 2
      두번째 더하기는 + 3
      세번째 더하기는 + 4
      ...
      이런 식으로 한다고 생각 할 수 있습니다.
      그런데, + 3은 3과 무엇을 더해야 할까요?
      이전에 더한 값인 1+2의 값과 더해야 하죠.
      그렇다고 1+2+3 이라고 써버리면, 한번 반복에 더하기를 한번씩 하는 것은 아니게 되죠.
      그러면 어떻게 해야하나면, 이전 반복에서 더한 1+2를 다른 곳에 저장해 놓는 겁니다.
      즉, 더하기를 하나 하나씩 할 때
      a = 1 + 2
      b = a + 3
      c = d + 4
      ....
      이런 식으로 계속 할 수 있지요.
      그런데 잘 보면, 변수a라는 공간은 a + 3 계산을 한 이후에 더이상 사용되지 않습니다.
      그래서 b,c,d,e,f,..같이 새로운 공간을 만들고 그 공간에 값을 써넣는 대신, a에 값을 써 넣을 수 있습니다. a에 새로운 값을 덮어 쓰는 것이지요. 덮어쓰여지는 예전 값은 어떻게 되냐고요? 더이상 사용되지 않으니까 신경 쓰지 않아도 되는 겁니다.
      즉,
      a = 1 + 2
      a = a + 3
      a = a + 4
      ...
      이렇게 할 수 있습니다.
      그런데 반복문이란 것은, "같은 작업을" 반복하도록 만들어야 합니다.
      맨 앞의 a = 1 + 2는 1에 숫자를 더하고, 나머지 부분은 a에 숫자를 더하고 있습니다. a = 1 + 2부분도 a에 2를 더하도록 바꾸려면
      a = 1
      a = a + 2
      와 같이 바꾸면 됩니다.
      a = 1 + 2 부분에서 1+2의 값을 넣기 전에, a에는 버려도 되는 쓰레기 값이 들어 있기에 우리가 마음대로 덮어써도 되는 겁니다. 즉, 1을 넣어도 되는 겁니다.
      그래서 a에 1을 넣고. a=1
      1대신 a를 써도 되는 겁니다. a = a + 2
      이렇게 하면,
      a = 1
      a = a + 2
      a = a + 3
      a = a + 4
      ...
      이렇게 되지요.
      그리고, a= 같이 변수a에 값을 넣는 부분은 같지만, 어느부분은 a+2이고 a+3이고 a+4이고 이렇게 작업이 다르면 반복문으로 만들 수 없습니다.
      어떤 것은 a에 2를 더하고, 어떤 것은 3을 더하고 4를 더하고.. 이렇게 더하는 숫자가 변하는 것이 문제인 것입니다. 이렇게 변하는 수를 변수에 넣으면 문제가 해결 됩니다.
      즉,
      a = a + b
      a = a + b
      a = a + b
      a = a + b
      와 같이 바꾸면, 매번 하는 작업이 a = a + b로 일정하게 됩니다.
      물론 b의 값이 변하도록 직접 설정 하는 것도 잊지 말아야 합니다.
      더해야 할 값이 맨처음 2가 되고, 그 다음 2에서 3으로 3에서 4로.. 이렇게 1씩 증가 하고 있습니다.
      따라서 더해야 할 값을 담는 변수 b의 값을 매번 1씩 증가시켜야 합니다.
      b = b + 1 과 같이 작성하면 b의 값이 1 증가하지요.
      맨 처음에는 더해야 할 값이 2니까, b=2 로 설정하는 것도 잊으면 안되지요.
      여기까지 따라 오셨다면
      a = 1
      b = 2
      a = a + b
      b = b + 1
      a = a + b
      b = b + 1
      a = a + b
      b = b + 1
      a = a + b
      b = b + 1
      ...
      과 같이 하면 된다는 것을 아셨을 겁니다.
      이제, 매번 반복해야 하는 부분이 a = a + b;
      b = b + 1; 로 "같은 작업"이 되었습니다.
      따라서
      a = 1;
      b = 2
      while ( 조건 ) {
      a = a + b;
      b = b + 1;
      }
      과 같이 만들면 되는 겁니다.
      마지막으로, "조건"을 결정해야 합니다.
      언제까지 반복을 할지 정해야 하지요.
      1 + 2 + 3 + 4 + ... + 98 + 99 + 100
      이렇게, 맨 마지막에 100을 더하고 끝나야 하지요?
      a = 1
      b = 2
      a = a + b
      b = b + 1
      a = a + b
      b = b + 1
      ...
      a = a + b

    • @스무디TV
      @스무디TV  9 лет назад

      김도현 다른 예로 구구단이 있는데, 제 다른 영상에서 설명하고 있습니다.

    • @김도현-z3m5h
      @김도현-z3m5h 9 лет назад

      스무디 TV 늦었지만 이해되었습니다! 감사합니다

  • @김영종-n9e
    @김영종-n9e 7 лет назад +1

    손꾸락 실화입니까

  • @sjk4192
    @sjk4192 7 лет назад

    최고!

  • @JJddff22
    @JJddff22 9 лет назад

    우와 감사함다