Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 11 kết quả

Đề tài: mảng một chiều !

  1. #1
    No Avatar
    kool_boy Khách

    Mặc định mảng một chiều !

    đề bài : nhập vào mảng nguyên thực hiện công việc sau
    - xắp xếp mảng tăng dần hoặc giảm dần
    - nhập số nguyên x chèn x sao cho mảng vẫn giữ tính thứ tự
    mình viết code thế này khi chạy mình nhập vào vd: 1,2,4,5,6 thì vấn cho ra kết quả xắp xếp tăng dần và khi mình chèn thêm x= 3 thì xắp xếp 1,2,3,4,5,6,3450943 không biết sao nữa mọi người chỉ giùm với ?
    Code:
    #include<stdio.h>
    main()
    {
    	int n;
    	printf(" - Nhap n : ");
    	scanf(" %d",&n);
    	int a[n],i,c,j;
    	
    	for(i=0;i<n;i++)///nhap mang 
    	{
    		printf(" - Nhap vao a[%d]=",i);
    		scanf("%d",&a[i]);
    	}
    	
    	printf(" mang nhap vao la : \n");///xuat mang
    	for(i=0;i<n;i++)
    	printf("%d ",a[i]);
    	
    	for(i=0;i<n-1;i++)///tinh toan
    	{
    		for(j=i+1;j<n;j++)
    		{
    			if(a[i]>a[j])
    				{
    					c=a[i];
    					a[i]=a[j];
    					a[j]=c;
    				}
    		}
    	}
    	
    	printf(" mang xap xep theo thu tu tang dan la : \n");///xuât mang
    	for(i=0;i<n;i++)
    		printf("%d ", a[i]);
    		
    	int x;
    	printf(" \n nhap vao so nguyen x : ");
    	scanf("%d",&x);
    	for(i=0;i<n-1;i++)
    	{		
    		if(a[i]<x&&a[i+1]>x)
    			a[i+1]=x;
    	}
    	n++;
    	printf("\n mang sau khi chen x la ");
    	for(i=0;i<n;i++)
    		printf("%d ",a[i]);
    	
    }

  2. #2
    Ngày gia nhập
    10 2008
    Bài viết
    85

    bạn muốn chèn vào vị trí nào cơ. Đây mình code lại cho bạn thêm vào vị trí muốn chèn:

    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. main()
    4. {
    5.     int n;
    6.  
    7.     int a[100],i,c,j;
    8.    printf(" - Nhap n : ");
    9.     scanf(" %d",&n);
    10.  
    11.     for(i=0;i<n;i++)///nhap mang
    12.     {
    13.         printf(" - Nhap vao a[%d]=",i);
    14.         scanf("%d",&a[i]);
    15.     }
    16.  
    17.     printf(" mang nhap vao la : \n");///xuat mang
    18.     for(i=0;i<n;i++)
    19.     printf("%d ",a[i]);
    20.  
    21.     for(i=0;i<n-1;i++)///tinh toan
    22.     {
    23.         for(j=i+1;j<n;j++)
    24.         {
    25.             if(a[i]>a[j])
    26.                 {
    27.                     c=a[i];
    28.                     a[i]=a[j];
    29.                     a[j]=c;
    30.                 }
    31.         }
    32.     }
    33.  
    34.     printf(" mang xap xep theo thu tu tang dan la : \n");///xuât mang
    35.     for(i=0;i<n;i++)
    36.         printf("%d ", a[i]);
    37.        
    38.     int x,k;
    39.     printf(" \n nhap vao so nguyen x : ");
    40.     scanf("%d",&x);
    41.    printf("\nNhap vi tri muon chen: ");
    42.    scanf("%d",&k);
    43.    for(i=n;i>k;i--)
    44.     a[i]=a[i-1];
    45.       a[k]=x;
    46.     printf("\n mang sau khi chen x la ");
    47.     for(i=0;i<n;i++)
    48.         printf("%d ",a[i]);
    49.  
    50.    getch();
    51.  
    52. }

    lần sau bạn đừng khai báo
    C Code:
    1. int a[n]
    nữa nhé ko đúng đâu

  3. #3
    Ngày gia nhập
    09 2007
    Bài viết
    724

    code của bạn nó làm gì chạy được mà ra đúng với sai:
    C Code:
    1. int a[n],i,c,j;
    Lần đầu tiên thấy khai báo mảng kiểu này mà nó chạy

    C Code:
    1. for(i=0;i<n-1;i++)
    2.     {      
    3.         if(a[i]<x&&a[i+1]>x)
    4.             a[i+1]=x;
    5.     }

    Nó sẽ đè bẹp lên giá trị của A[i+1] chứ làm gì mà ra kết quả giống bạn được.
    1,2,3,5,6,3450943

  4. #4
    Ngày gia nhập
    10 2008
    Bài viết
    85

    mình thấy không biết bao nhiêu lần bạn khai báo như thế. trên lớp thầy giáo có dậy thế không

  5. #5
    No Avatar
    kool_boy Khách

    bọn mình học trên Cfree4.0 nghe thầy nói khai báo mảng a[n] khi cho chạy trên chương trình C thì không hiểu nghe nói phải cấp phát động gì đó thì mới chạy được nên tạm thời bọn mình vẫn khai báo mảng như vầy

  6. #6
    Ngày gia nhập
    10 2008
    Bài viết
    85

    Mặc định mảng một chiều !

    làm như bạn thì cần gì cấp phát động nữa

  7. #7
    Ngày gia nhập
    11 2008
    Nơi ở
    Neverland
    Bài viết
    48

    To:minhphuong90 bài này là kool_boy đã sắp xếp mảng theo thứ tự tăng dần rồi . Sau đó mới chèn x vào mà vẫn giữ đúng thứ tự của mảng --> không cần chỉ ra vị trí chèn mà vị trí chèn mình phải tìm dựa vào mảng đã cho . Bạn kool_boy khai báo mảng kiểu int a[n] là sai số phần tử của mảng phải là là hằng hay các hằng định nghĩa bằng macro #define không thể là biến được . Đoạn tìm vị trí và chèn x vào có thể viết đơn giản như sau :
    C++ Code:
    1. i=n - 1;
    2. while (i>=0 && a[i]>x) {
    3.       a[i+1]=a[i];
    4.       i--;
    5. }
    6. a[i+1]=x;//Chèn x vào sau a[i]
    I'm superman

  8. #8
    No Avatar
    kool_boy Khách

    to:minhphuong90
    híc sự thật thì trên lớp thầy dạy bọn mình khai báo như vầy đó. nan thật...!

  9. #9
    Ngày gia nhập
    04 2008
    Nơi ở
    HCMC
    Bài viết
    251

    Thế thì bạn nên tham khảo một số sách viết về C để tham khảo cách khai báo. Trong kho ebook của diễn đàn có rất nhiều
    C++ Code:
    1. for(;;){cout<<"Busy"<<endl;}
    2. system("cls");
    Hãy ủng hộ cho quỹ phát triển cộng đồng C Việt
    http://congdongcviet.com/quyphattrien-congdongcviet.cpp

  10. #10
    Ngày gia nhập
    11 2008
    Bài viết
    116

    rất cám ơn thuật toán của bạn.

Các đề tài tương tự

  1. Trả lời: 2
    Bài viết cuối: 21-04-2013, 09:46 AM
  2. Lỗi: bố cục trang web tự tăng theo chiều ngang khi chiều cao thay đổi
    Gửi bởi tuanngocpt trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 2
    Bài viết cuối: 16-03-2013, 11:25 PM
  3. Trả lời: 1
    Bài viết cuối: 28-04-2012, 09:43 PM
  4. Cách truyền mang 1 chiều cho hàm bài con trỏ và mảng một chiều ai có thể giải thích giúp mình
    Gửi bởi biencute trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 8
    Bài viết cuối: 21-03-2012, 09:00 AM
  5. Lời giải bài tập: Chuỗi Ký tự, mảng số nguyên 1 chiều, mảng 2 chiều, tạo Menu
    Gửi bởi xuanngoc trong diễn đàn Thủ thuật, Tutorials và Mã nguồn C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 15-10-2011, 01:17 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn