1. Trang chủ
  2. » Công Nghệ Thông Tin

Kỹ thuật sử dụng 1 vòng lặp làm việc thay cho 2 vòng lặp

4 290 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 4
Dung lượng 34 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài viết này giúp cho các bạn hiểu thêm về cách sử dụng vòng lặp và biết thêm 1 thủ thuật trong lập trình. Còn về mặt nguyên lý hoạt động thì 2 cách này có độ phức tạp như nhau nên cách sử dụng 1 vòng lặp thay cho 2 vòng này không làm cho chương trình chạy nhanh hơn thậm chí còn chậm hơn vì cứ mỗi lần lặp nó lại phải thêm 1 lần kiểm tra giữa 2 biến.

Trang 1

Kỹ thuật sử dụng 1 vòng lặp làm việc thay cho 2

vòng lặp

(Code demo bằng C)

Bài toán: In ra màn hình tam giác dấu '*'

Ví dụ:

*

**

***

****

*****

******

Cách giải thường sử dụng:

Sử dụng 2 vòng lặp

• Vòng lặp đầu tiên sẽ cho duyệt qua các dòng

• Vòng lặp thứ 2 sẽ cho in ra các dấu '*' tương ứng trên mỗi dòng (dòng 1 in 1 dấu, dòng 2 in 2 dấu )

Code:

#include <stdio.h>

#include <conio.h>

void main()

{

int i, j, n=10;

clrscr();

for(i=1; i<=n; i++)

{

for(j=1; j<=i; j++)

printf("*");

printf("\n");

Trang 2

getch();

}

Cách giải sử dụng 1 vòng lặp

Sử dụng 1 vòng lặp + 2 biến

• Biến đầu tiên dùng để duyệt các dòng

• Biến thứ hai dùng để in ra các dấu '*' trên mỗi dòng Code:

#include <stdio.h>

#include <conio.h>

void main()

{

int i=1, j=1, n=10;

clrscr();

while (i<=n)

{

printf("*");

j++;

if(j==i+1)

{

j=1;

i++;

printf("\n");

}

}

getch();

Trang 3

Như vậy, chúng ta đã sử dụng 1 vòng lặp thay cho 2 vòng lặp nhưng vẫn có thể giải quyết được bài toán đặt ra

Ghi chú: Về mặc thực tế thì vòng lặp while cũng giống như vòng lặp for nên 2 cách giải

này không phải khác nhau ở chỗ chúng ta sử 2 cấu trúc lệnh khác nhau (Vì chúng ta có

thể thay while(i<=n) bằng for(;i<=n;))

Ví dụ khác: Sắp xếp một mảng theo thứ tự tăng dần

#include <stdio.h>

#include <conio.h>

void main()

{

int arr[10]={1,6,8,4,7,8,3,9,2,5},i=0, j=1, tg, n=10; clrscr();

while (i<n-1)

{

if(arr[i]>arr[j])

{

tg= arr[i];

arr[i]= arr[j];

arr[j]= tg;

}

j++;

if(j==n)

{

i++;

j=i+1;

Trang 4

}

for (i=0 ;i<n ; i++)

{

printf("%d \t",arr[i]);

}

getch();

}

Tóm lại: Bài này giúp cho các bạn hiểu thêm về cách sử dụng vòng lặp và biết thêm 1 thủ thuật trong lập trình Còn về mặt nguyên lý hoạt động thì 2 cách này có độ phức tạp như nhau nên cách sử dụng 1 vòng lặp thay cho 2 vòng này không làm cho chương trình chạy nhanh hơn thậm chí còn chậm hơn vì cứ mỗi lần lặp nó lại phải thêm 1 lần kiểm tra giữa

2 biến

Ngày đăng: 05/05/2016, 10:13

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w