Video Ngôn Ngữ C - 19 - Cách thoát ra khỏi một vòng lặp? Dùng break

c
video

(Lê Trần Đạt) #1
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int n = 3;
    int i = 0;
    int j = 0;
    while (i < 10) {
        i++;
        while (j < 5) {
            j++;
            if (j == n )
                break;
            printf("i = %d, j = %d\n", i, j);
 
        }
        printf("da thoat khoi vong lap j\n");
    }
    printf("da thoat khoi vong lap i\n");
 
#Đăng ký khóa học C++ cơ bản 2016 ( NEW ) tại [đây](http://bit.ly/dangkymuakhoahoccpp) : 
#Thông tin về khóa học xem tại [đây](http://daynhauhoc.com/t/khoa-hoc-c-co-ban-2016/31306) : 

> -Sự khác biệt giữa 2 khóa học cũ và mới :
> +Khóa học C++ cơ bản 2016 là khóa học mới, được đầu tư nhiều hơn từ nội dung, phương pháp học, cách học hiệu quả. 
+Trong khóa học còn có nhiều kiến thức mới như thực hành trên HackerRank, thực hành trên Codefights và Đạt nghĩ mọi người nên học khóa học mới, bởi vì đây là kiến thức mới, phù hợp với hiện tại..... Mặt khác âm thanh cũng tốt hơn nhiều so với khóa học cũ giúp đỡ việc lắng nghe và hiểu được tốt hơn.
    return 0;
}

#Đăng ký khóa học C++ cơ bản 2016 ( NEW ) tại đây :
#Thông tin về khóa học xem tại đây :

-Sự khác biệt giữa 2 khóa học cũ và mới :
+Khóa học C++ cơ bản 2016 là khóa học mới, được đầu tư nhiều hơn từ nội dung, phương pháp học, cách học hiệu quả.
+Trong khóa học còn có nhiều kiến thức mới như thực hành trên HackerRank, thực hành trên Codefights và Đạt nghĩ mọi người nên học khóa học mới, bởi vì đây là kiến thức mới, phù hợp với hiện tại… Mặt khác âm thanh cũng tốt hơn nhiều so với khóa học cũ giúp đỡ việc lắng nghe và hiểu được tốt hơn.


Tổng hợp các video hướng dẫn lập trình C của Lê Trần Đạt
(Light Way) #2

Bài tập cuối clip đó mn, code mình nó chỉ ra 1 lần lặp khi i=0, còn lại mấy lần lặp i=1,2,3,4,5,6,7,8,9 thì nó lại không ra mặc dù mình đã cho biến i++ rồi! không biết dùng sao cho đúng đây, mn giải thích mình với!

#include <stdio.h>
#include <conio.h>
void main()
{
    int n = 3, i=0, j=0;
    while (i < 10) {
        while (j < 5) {
            if (j == n)
                break;
            printf("i=%d, j=%d \n", i, j);
            j++;
        }
        printf("da thoat ra khoi vong lap j!\n");
        i++;
    }
    printf("da thoat ra khoi vong lap i!\n");
    getch();
}

(Lê Trần Đạt) #3

Là bởi vì j bây giờ lớn hơn 5 rồi, nên không thỏa điều kiện j < 5 nữa. Em phải gán j = 0 lại như bên dưới.

#include <stdio.h>
#include <conio.h>
int main()
{
    int n = 3, i=0, j=0;
    while (i < 10) {
        j=0; // Gán lại j = 0 ở đây
        while (j < 5) {
            if (j == n)
                break;
            printf("i=%d, j=%d \n", i, j);
            j++;
        }
        printf("da thoat ra khoi vong lap j!\n");
        i++;
    }
    printf("da thoat ra khoi vong lap i!\n");
    getch();
}

(Light Way) #4

Đúng rồi ha, j=0 ở đó xong 1 vòng nó mới tăng j lên được, có vậy mà không nghĩ ra, dở thiệt, cám ơn a nhiều! :smile:


(Lê Trần Đạt) #5

Mới học chưa quen thì bị vậy, lâu là em biết liền. Mà em nên tập debug. Anh có hướng dẫn cách debug ở đây


(Space) #6

em thử debug rồi anh .
Nhưng xài Run to cursor là nó chạy lên nhưng tắt ngay lập tức.
anh giải thích giúp em đc ko


(Lê Trần Đạt) #7

Em nói vậy ít thông tin quá, anh không thể trả lời được. Em có thể miêu tả bằng source code, từng bước em làm. Có hình chụp càng tốt.


(Space) #8

bất kể source code gì luôn ấy anh .
helloword từ 1 đến 9 cũng bị.
Em làm theo a nhưng cứ RUN to cursor là nó nhảy chương trình xong tắt ngay lập tưc


(Lê Trần Đạt) #9

Em đừng bấm Run to cursor, bấm vào next line. Run to cursor là nhảy tới vị trí con trỏ chuột, hiện con trỏ chuột đang nằm ở đâu nó nhảy tới đó.


(nhatlonggunz) #10

Anh ơi tại sao i = 5 trở lên vậy, có cách nào đưa nó về 1 không


(Lê Đình Huy) #11

ko hiểu lắm, code của e đâu, quăng lên a xem thử


(nhatlonggunz) #12

đây là hình, i lần lượt = 5, 6 , 7 8


Còn đây là code

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n = 3;
    int i = 0;
    int j = 0;
    while( i < 10) {
        j = 0;
        while( j <5) {
            if(j == n)
                break;
            j++;
            printf("j = %d, i = %d\n", j, i);
        }
        i++;
        printf("Thoat khoi vong lap j\n",i);
    }
    printf("het vong lap");
    return 0;
}

(Phan Tiến Mạnh) #13

code của em đây:

#include <stdio.h>
#include <stdlib.h>

int main()
{
  int i = 0;

  while(i < 5){
          int j = 0;
    while(j < 5){
        j++;
        printf("i = %i,j = %i\n",i,j);
       }
     printf("da thoat ra khoi vong lap j\n");
    i++;
   }
   printf("thoat het!!\n");


  return 0;
}

(Nguyễn Văn Lâm) #14

CODE NÀY CHỈ CÓ CHUẨN :v
kéo lên bình luận thấy đầu tiên gắn i = 0 rồi ( int i = 0; ở code của bạn Neo Light Way)
nhưng sau khi khai báo: while (i < 10 { vẫn phải gắn lại j = 0; LÀ BỞI VÌ: code lúc này ở trong 1 khối lệnh khác khúc đầu gắn là nằm ngoài khối lệnh đang sài (2 khối lệnh này khác nhau. Giải thích vậy cho nó khỏi nhầm lẫn là tại sao phải gắn 2 lần :v)
=> gắn int j = 0; trog khúc while(đk) { lệnh } cho nó an toàn :v
theo tôi nghĩ là như vậy, ai giải thích dc hay hơn hoặc kêu t sai thì cho xin cho ý kiến :3 để rút kinh nghiệm.
p/s: code a đạt ko chạy dc thì phải

// my code:
#include <stdio.h>
#include <stdlib.h>

int main()
{
int n = 3;
    int i = 0;
    while (i < 10) {
			i++;
		int j = 0;
        while (j < 5) {
            j++;
            if (j == n )
                break;
            printf("i = %d, j = %d\n", i, j);
 
        }
        printf("da thoat khoi vong lap j\n");
    }
    printf("da thoat khoi vong lap i\n");


 system("pause");
 return 0;
}


(dokumar_hiroshi) #15

anh đạt ơi cho em hỏi tại sao em làm giống anh thì nó ra kiểu này


(dokumar_hiroshi) #16

mà khi em làm theo kiểu này nó lại ra được


(dokumar_hiroshi) #17

ôi thank cậu nhé tui ngồi nghĩ nãy giờ sao code của anh đạt chạy không được
ai ngơ đâu thiếu j = 0 ở đó


83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?