Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Trang 1 của 2 12 CuốiCuối
Kết quả 1 đến 10 của 12
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Mã:
    #include <stdio.h>#include <conio.h>void display_array(int *a, int n, int step){    int i;    printf("
    step %d: ", step);    for(i = 0; i < n; i++)        printf("%6.0d", a[i]);  }void insertion_sort(int* a, int n){    int step = 1;    display_array(a, n, step++);    int insert = 0;    int i, j;    for(i = 0; i < n - 1; i++)    {        int insert = i;        for(j = i + 1; j < n; j++)        {            if(a[j] < a[insert])            {                insert = j;            }        }        if(insert > i)        {            int temp = a[i];            a[i] = a[insert];            a[insert] = temp;                   }        display_array(a, n, step++);    }}int main(){       int a[8] = {8, 7, 6, 5, 4, 3, 2, 1};    insertion_sort(a, 8);    while(1)    {        if(kbhit())        {            if(getch() == 27) // Press ESC to exit program                return 0;        }    }    return 0;}

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi namdq2k
    Mã:
    #include <stdio.h>
    #include <conio.h>
    void display_array(int *a, int n, int step)
    {
    	int i;
    	printf("
    step %d: ", step);
    	for(i = 0; i < n; i++)
    		printf("%6.0d", a[i]);	
    }
    void insertion_sort(int* a, int n)
    {
    	int step = 1;
    	display_array(a, n, step++);
    	int insert = 0;
    	int i, j;
    	for(i = 0; i < n - 1; i++)
    	{
    		int insert = i;
    		for(j = i + 1; j < n; j++)
    		{
    			if(a[j] < a[insert])
    			{
    				insert = j;
    			}
    		}
    		if(insert > i)
    		{
    			int temp = a[i];
    			a[i] = a[insert];
    			a[insert] = temp;			
    		}
    		display_array(a, n, step++);
    	}
    }
    int main()
    {	
    	int a[8] = {8, 7, 6, 5, 4, 3, 2, 1};
    	insertion_sort(a, 8);
    	while(1)
    	{
    		if(kbhit())
    		{
    			if(getch() == 27) // Press ESC to exit program
    				return 0;
    		}
    	}
    	return 0;
    }
    cho mình hỏi thêm. Nếu mảng a[] ko phải tự cho mà là được lấy từ 1 file có dãy số bất kỳ thì làm sao?

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi truonghau
    cho mình hỏi thêm. Nếu mảng a[] ko phải tự cho mà là được lấy từ 1 file có dãy số bất kỳ thì làm sao?
    thì viết một cái hàm nhập vào mảng a, ở đây mình chỉ demo thôi.
    Bạn có thể gọi hàm insertion_sort với tham số truyền vào là một mảng tùy ý (dãy kiểu int, nếu dãy kiểu khác thì bạn thay định nghĩa hàm bẳng kiểu mong muốn)nào đó, với độ dài của mảng.
    Có nhất thiết phải truyền mỗi mảng a vào đâu.

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi namdq2k
    thì viết một cái hàm nhập vào mảng a, ở đây mình chỉ demo thôi.
    Bạn có thể gọi hàm insertion_sort với tham số truyền vào là một mảng tùy ý (dãy kiểu int, nếu dãy kiểu khác thì bạn thay định nghĩa hàm bẳng kiểu mong muốn)nào đó, với độ dài của mảng.
    Có nhất thiết phải truyền mỗi mảng a vào đâu.
    bạn có thể nói rõ và cụ thể hơn ko?Tại mình mới học à nên còn nhiều chổ ko biết. Mong bạn chỉ bảo.

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Mã:
    #include <stdio.h>#include <conio.h> void display_array(int *a, int n, int step){    int i;    printf("
    step %d: ", step);    for(i = 0; i < n; i++)        printf("%6.0d", a[i]);  }void insertion_sort(int* a, int n){    int step = 1;    display_array(a, n, step++);    int insert = 0;    int i, j;    for(i = 0; i < n - 1; i++)    {        int insert = i;        for(j = i + 1; j < n; j++)        {            if(a[j] < a[insert])            {                insert = j;            }        }        if(insert > i)        {            int temp = a[i];            a[i] = a[insert];            a[insert] = temp;                   }        display_array(a, n, step++);    }}int main(){       int a[8] = {8, 7, 6, 5, 4, 3, 2, 1};    int b[9];    int i;     printf("Sort the array A:
    ");    insertion_sort(a, 8);     printf("
    
     B array: 
    ");    for(i = 0; i < 9; i++)    {        printf("b[%d] = ", i);        scanf("%d", &b[i]);    }    printf("Sort the array B:
    ");    insertion_sort(b, 9);    while(1)    {        if(kbhit())        {            if(getch() == 27) // Press ESC to exit program                break;        }    }    return 0;}
    bạn nhìn cái demo này là hiểu thôi [IMG]images/smilies/smile.png[/IMG]


    __________________________________________________ ________
    Bạn namdq2k lần sau thêm highlight cho code được rõ ràng nhé.

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi namdq2k
    Mã:
    #include <stdio.h>
    #include <conio.h>
    
    void display_array(int *a, int n, int step)
    {
    	int i;
    	printf("
    step %d: ", step);
    	for(i = 0; i < n; i++)
    		printf("%6.0d", a[i]);	
    }
    void insertion_sort(int* a, int n)
    {
    	int step = 1;
    	display_array(a, n, step++);
    	int insert = 0;
    	int i, j;
    	for(i = 0; i < n - 1; i++)
    	{
    		int insert = i;
    		for(j = i + 1; j < n; j++)
    		{
    			if(a[j] < a[insert])
    			{
    				insert = j;
    			}
    		}
    		if(insert > i)
    		{
    			int temp = a[i];
    			a[i] = a[insert];
    			a[insert] = temp;			
    		}
    		display_array(a, n, step++);
    	}
    }
    int main()
    {	
    	int a[8] = {8, 7, 6, 5, 4, 3, 2, 1};
    	int b[9];
    	int i;
    
    	printf("Sort the array A:
    ");
    	insertion_sort(a, 8);
    
    	printf("
    
     B array: 
    ");
    	for(i = 0; i < 9; i++)
    	{
    		printf("b[%d] = ", i);
    		scanf("%d", &b[i]);
    	}
    	printf("Sort the array B:
    ");
    	insertion_sort(b, 9);
    	while(1)
    	{
    		if(kbhit())
    		{
    			if(getch() == 27) // Press ESC to exit program
    				break;
    		}
    	}
    	return 0;
    }
    bạn nhìn cái demo này là hiểu thôi [IMG]images/smilies/smile.png[/IMG]
    vậy nếu vậy thì mình cho mảng a[] = cái file dãy số hả bạn?Mình dốt lắm. Mong bạn chỉ nhìu tthêm
    hay insertion_sort(a,fmp)?

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi truonghau
    vậy nếu vậy thì mình cho mảng a[] = cái file dãy số hả bạn?Mình dốt lắm. Mong bạn chỉ nhìu tthêm
    hay insertion_sort(a,fmp)?
    [IMG]images/smilies/Cry.gif[/IMG]
    a[] là một kiểu array.
    file là nơi lưu trữ dữ liệu.
    Bạn phải biết file đó nó lưu trữ dữ liệu ra làm sao? Tùy vào từng dạng lưu trữ dữ liệu như thế nào thì bạn đọc file đó ra và lưu trữ dữ liệu vào đâu đó để xử lý.

    Nếu file đó là một mảng các phần tử số int thì nó phải có độ dài của mảng, giá trị của từng phần tử của mảng.
    Bạn đọc file đó ra, tạo một mảng có độ dài trong file đã ghi và nhập vào từng phần tử của mảng.

  8. #8
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi namdq2k
    [IMG]images/smilies/Cry.gif[/IMG]
    a[] là một kiểu array.
    file là nơi lưu trữ dữ liệu.
    Bạn phải biết file đó nó lưu trữ dữ liệu ra làm sao? Tùy vào từng dạng lưu trữ dữ liệu như thế nào thì bạn đọc file đó ra và lưu trữ dữ liệu vào đâu đó để xử lý.

    Nếu file đó là một mảng các phần tử số int thì nó phải có độ dài của mảng, giá trị của từng phần tử của mảng.
    Bạn đọc file đó ra, tạo một mảng có độ dài trong file đã ghi và nhập vào từng phần tử của mảng.
    Mã:
    #include <stdio.h>
    #include <conio.h>
    void display_array(int *a, int n, int step)
    {
    	int i;
    	printf("
    step %d: ", step);
    	for(i = 0; i < n; i++)
    		printf("%6.0d", a[i]);	
    }
    void insertion_sort(int* a, int n)
    {
    	int step = 1;
    	display_array(a, n, step++);
    	int insert = 0;
    	int i, j;
    	for(i = 0; i < n - 1; i++)
    	{
    		int insert = i;
    		for(j = i + 1; j < n; j++)
    		{
    			if(a[j] < a[insert])
    			{
    				insert = j;
    			}
    		}
    		if(insert > i)
    		{
    			int temp = a[i];
    			a[i] = a[insert];
    			a[insert] = temp;			
    		}
    		display_array(a, n, step++);
    	}
    }
    int main()
    {	
     FILE *fp, *fpam;
        int tmp, i,n;
        fp   = fopen("daysosi.dat", "r");
        fpam = fopen("xong.dat, "w");//lưu file khi đã sắp sếp
        for(i = 0; i < n-1; i++)
        {
            fscanf(fp,"%d",&tmp);
            if(tmp < 0) fprintf(fpam,"%3d",tmp);
        }
    
    		insertion_sort(a, tmp);
    	while(1)
    	{
    		if(kbhit())
    		{
    			if(getch() == 27) // Press ESC to exit program
    				return 0;
    		}
    	}
        fclose(fp);
        fclose(fpam);
        getche();
        return 0;
    
    }
    phải vậy ko?

  9. #9
    Trích dẫn Gửi bởi truonghau
    Mã:
    #include <stdio.h>
    #include <conio.h>
    void display_array(int *a, int n, int step)
    {
    	int i;
    	printf("
    step %d: ", step);
    	for(i = 0; i < n; i++)
    		printf("%6.0d", a[i]);	
    }
    void insertion_sort(int* a, int n)
    {
    	int step = 1;
    	display_array(a, n, step++);
    	int insert = 0;
    	int i, j;
    	for(i = 0; i < n - 1; i++)
    	{
    		int insert = i;
    		for(j = i + 1; j < n; j++)
    		{
    			if(a[j] < a[insert])
    			{
    				insert = j;
    			}
    		}
    		if(insert > i)
    		{
    			int temp = a[i];
    			a[i] = a[insert];
    			a[insert] = temp;			
    		}
    		display_array(a, n, step++);
    	}
    }
    int main()
    {	
     FILE *fp, *fpam;
        int tmp, i,n;
        fp   = fopen("daysosi.dat", "r");
        fpam = fopen("xong.dat, "w");//lưu file khi đã sắp sếp
        for(i = 0; i < n-1; i++)
        {
            fscanf(fp,"%d",&tmp);
            if(tmp < 0) fprintf(fpam,"%3d",tmp);
        }
    
    		insertion_sort(a, tmp);
    	while(1)
    	{
    		if(kbhit())
    		{
    			if(getch() == 27) // Press ESC to exit program
    				return 0;
    		}
    	}
        fclose(fp);
        fclose(fpam);
        getche();
        return 0;
    
    }
    phải vậy ko?
    Thì bạn thử nó có đúng hay không thôi. Nó hiển thị hết lên mà. Bỏ cái getche() đi [IMG]images/smilies/biggrin.png[/IMG]
    Bấm esc là nó thoát rùi [IMG]images/smilies/smile.png[/IMG]

  10. #10
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi namdq2k
    Thì bạn thử nó có đúng hay không thôi. Nó hiển thị hết lên mà. Bỏ cái getche() đi [IMG]images/smilies/biggrin.png[/IMG]
    Bấm esc là nó thoát rùi [IMG]images/smilies/smile.png[/IMG]
    để mình về test thử. Có gì tối mình lên post. Ma tối bạn có online ko?Giúp mình đi nha.Mai kiểm tra 15p oài

 

 
Trang 1 của 2 12 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •