Follow us on...
Follow us on Twitter Follow us on Facebook Watch us on YouTube

Smartphone WIKO của Pháp chính thức xuất hiện tại Việt Nam

Tìm HD - Phần mềm tìm và xem phim HD miễn phí

Cuộc thi khoảnh khắc tuyệt vời cùng Vn-Zoom.com

Chiêm ngưỡng BaoMoi đẹp "tuyệt diệu" trên Windows Phone

Tuyển thành viên nhóm Reviews diễn đàn

VN-Zoom & ASUS đón siêu phẩm,tăng tốc chuẩn bị ASUS Expo 2014
kết quả từ 1 tới 9 trên 9
  1. #1
    daikaphi's Avatar
    daikaphi vẫn chưa có mặt trong diễn đàn Gà Con
    Tham gia
    Oct 2007
    Bài
    3
    Cảm ơn
    2
    Điểm: 1/1 bài viết
    VR power
    0

    Default Cấp phát mảng động 2 chiều và nhập xuất

    Em mới bước vào giới lập trình mà thấy cho bài khó quá đi.
    ++Đề : Nhập xuất ma trận vuông 2 chiều.
    a) Sắp xếp mảng theo thứ tự tăng dần từ trái sang phải, từ trên xuống dưới
    b) Tìm ma trận chuyển vị của ma trận đã nhập.
    Lưu ý: Cấp phát động ma trận vuông

    Plz help me các pro ơi. Thx nhiều

  2. #2
    anhtai116's Avatar
    anhtai116 vẫn chưa có mặt trong diễn đàn Búa Đá
    Tham gia
    Feb 2010
    Bài
    66
    Cảm ơn
    7
    Điểm
    25/13 bài viết
    VR power
    0

    Talking

    gửi bạn 1 bài ma trận để tham khảo.Sau đó áp dụng vào bài của bạn
    Code:
    #include<iostream.h>
    #include<conio.h>
    void main()
    {
    	clrscr();
    	int n,i,j,m,t,a[100][100];
    	cout<<"bai tap ma tran vuong";
    	cout<<"/n/n/n ban muon nhap...hang....cot:";
    	cin>>n>>m;
    
    
    	if(n!=m)
    	{
    		cout<<"\n\nday khong phai la ma tran vuong \n\n";
    		cout<<"m va n phai bang nhau";
    
    	}
    	else
    	{
    	cout<<"\n\nban muon nhap"<<n<<"dong"<<m<<"cot.";
    	cout<<"\n\n hay nhap so lieu vao";
    	for(i=0;i<n;i++)
    	{
    		for(j=0;j<m;j++)
    		{
    			cout<<"["<<i+1<<"]"<<"["<<j+1<<"]";
    			cin>>a[i][j];
    		}
    	}
    	}
    
    //// tong moi dong tang tu tren xuong
    
    	int sum=0;
    	for(j=0;j<m;j++)
    	{
    		for(i=0;i<n;i++)
    		{
    			if(a[i][j]<a[i+1][j])
    			{
    				t=1;
    				a[i][j]=a[i+1][j];
    				sum+=a[i][j];
    
    			}
    			else
    			{
    				break;
    			}
    		}
    		if(t==1)
    		{
    			cout<<"tong cua moi dong tang tu tren xuong cua cot"<<j<<" la:"<<sum;
    		}
    	}
    
    // xet cac so tang tu tren xuong duoi,tu trai qua phai
    
    	//tu tren xuong duoi
    
    	for(j=0;j<m;j++)
    	{
    		for(i=0;i<n;i++)
    		{
    			if(a[i][j]<a[i+1][j])
    			{
    				t=1;
    				a[i][j]=a[i+1][j];
    
    			}
    			else
    			{
    				break;
    			}
    		}
    		if(t==1)
    		{
    			cout<<"\n cac so trong cot"<<j<<"tand dan tu tren xuong";
    		}
    	}
    
    	//tu trai qua phai
    
    		for(i=0;i<n;i++)
    	       {
    			for(j=0;j<n;j++)
    			{
    				if(a[i][j]<a[i][j+1])
    				{
    					t=1;
    					a[i][j]=a[i][j+1];
    
    				}
    				else
    				{
    					break;
    				}
    			}
    			if(t==1)
    			{
    				cout<<"\n  cac so trong hang"<<i<<"tang dan tu trai qua phai";
    			}
    	}
    
    	// hinh chu Z
    
    	int z,tz;
    
    	for(j=1;j<m;j++)
    	{
    		i=1;
    		if(a[i][j]<a[i][j+1])
    		{
    			z=1;
    			a[i][j]=a[i][j+1];
    		}
    		else
    		{
    			z=0;
    		}
    	}
    	if(z==0)
    	{
    
    		tz=1;
    	}
    	if(z==1)
    	{
    		for(j=1;j<m;j++)
    		{
    			i=n;
    			if(a[i][j]<a[i][j+1])
    			{
    				z=1;
    				a[i][j]=a[i][j+1];
    			}
    			else
    			{
    				break;
    			}
    		}
    	}
    	if(z==0)
    	{
    
    		tz=1;
    	}
    	if(z==1)
    	{
    
    
    			for(i=1;i<n;i++)
    			{
    				for(j=m;;j--)
    				{
    					if(a[i][j]<a[i+1][j-1])
    					{
    						z=1;
    						a[i][j]=a[i+1][j-1];
    					}
    					else
    					{
    
    						z=0;
    					}
    				}
    			}
    
    		if(z==0)
    		{
    			tz=1;
    		}
    	}
    	if(tz==1)
    	{
    		cout<<"\n\n\n cac phan tu tren chu Z khong tang dan";
    	}
    	else
    	{
    		cout<<"\n\n\n cac phan tu tren chu Z tang dan";
    	}
    
    
    	// hinh chu N
    	int hn,tn;
    	for(i=1;i<n;i++)
    	{
    		j=1;
    		if(a[i][j]<a[i+1][j])
    		{
    			hn=1;
    			a[i][j]=a[i+1][j];
    		}
    		else
    		{
    			hn=0;
    		}
    	}
    	if(hn==0)
    	{
    		tn=1;
    	}
    	if(hn==1)
    	{
    		for(i=1;i<n;i++)
    		{
    			j=m;
    			if(a[i][j]<a[i+1][j])
    			{
    				hn=1;
    				a[i][j]=a[i+1][j];
    			}
    			else
    			{
    				hn=0;
    			}
    		}
    		if(hn==0)
    		{
    			tn=1;
    		}
    		if(hn==1)
    		{
    			for(i=1;i<n;i++)
    			{
    				for(j=1;j<m;j++)
    				{
    					if(a[i][j]<a[i+1][j+1])
    					{
    						hn=1;
    						a[i][j]=a[i+1][j+1];
    					}
    					else
    					{
    						hn=0;
    					}
    				}
    			}
    
    			if(hn==0)
    			{
    				tn=1;
    			}
    		}
            }
    		if(tn==1)
    		{
    			cout<<"\n\n\n cac phan tu tren chu N khong tang dan";
    		}
    		else
    		{
    			cout<<"\n\n\n cac phan tu tren chu N tang dan";
    		}
    
    
    	//hinh chu U
    
    		int u,tu;
    	for(i=1;i<n;i++)
    	{
    		j=1;
    		if(a[i][j]<a[i+1][j])
    		{
    			u=1;
    			a[i][j]=a[i+1][j];
    		}
    		else
    		{
    			u=0;
    		}
    	}
    	if(u==0)
    	{
    		tu=1;
    	}
    	if(u==1)
    	{
    		for(i=1;i<n;i++)
    		{
    			j=m;
    			if(a[i][j]<a[i+1][j])
    			{
    				u=1;
    				a[i][j]=a[i+1][j];
    			}
    			else
    			{
    				u=0;
    			}
    		}
    		if(u==0)
    		{
    			tu=1;
    		}
    		if(u==1)
    		{
    			for(j=1;j<m;j++)
    			{
    				i=n;
    				if(a[i][j]<a[i][j+1])
    				{
    					u=1;
    					a[i][j]=a[i][j+1];
    				}
    				else
    				{
    					u=0;
    				}
    			}
    			if(u==0)
    			{
    				tu=1;
    			}
    		}
    	}
    	if(tu==1)
    	{
    		cout<<" \n\n\ncac phan tu khong tang dan tren chu U";
    	}
    	else
    	{
    		cout<<"\n\n\n cac phan tu tang dan tren chu U";
    	}
    
    	// hinh chu H
    
    		int h,th;
    	for(i=1;i<n;i++)
    	{
    		j=1;
    		if(a[i][j]<a[i+1][j])
    		{
    			h=1;
    			a[i][j]=a[i+1][j];
    		}
    		else
    		{
    			h=0;
    		}
    	}
    	if(h==0)
    	{
    		th=1;
    	}
    	if(h==1)
    	{
    		for(i=1;i<n;i++)
    		{
    			j=m;
    			if(a[i][j]<a[i+1][j])
    			{
    				h=1;
    				a[i][j]=a[i+1][j];
    			}
    			else
    			{
    				h=0;
    			}
    		}
    		if(h==0)
    		{
    			th=1;
    		}
    		if(h==1)
    		{
    			for(j=1;j<m;j++)
    			{
    				i=n/2;
    				if(a[i][j]<a[i][j+1])
    				{
    					h=1;
    					a[i][j]=a[i][j+1];
    				}
    				else
    				{
    					h=0;
    				}
    			}
    			if(h==0)
    			{
    				th=1;
    			}
    		}
    	}
    	if(th==1)
    	{
    		cout<<" \n\n\ncac phan tu khong tang dan tren chu H";
    	}
    	else
    	{
    		cout<<"\n\n\n cac phan tu tang dan tren chu H";
    	}
    	getch();
    }

  3. #3
    daikaphi's Avatar
    daikaphi vẫn chưa có mặt trong diễn đàn Gà Con
    Tham gia
    Oct 2007
    Bài
    3
    Cảm ơn
    2
    Điểm: 1/1 bài viết
    VR power
    0

    Default

    thx bạn, nhưng mình cần code của nhập xuất ma trận đc cấp phát động

  4. Có 1 thành viên cảm ơn daikaphi cho bài viết này:
    yyoko3254 (24-03-2010)

  5. #4
    hoangedward's Avatar
    hoangedward vẫn chưa có mặt trong diễn đàn Rìu Vàng
    Tham gia
    Jul 2008
    Đến từ
    Bình Dương
    Bài
    750
    Cảm ơn
    702
    Điểm
    757/256 bài viết
    VR power
    0

    Default

    mình gửi bạn thao tác cấp phát động cho 1 mảng 2 chiều nhé:
    PHP Code:
    //Dung Con Tro Cap 2 Cap Phat Dong 1 Array 2 Chieu
            
    int **a;
            
    a=new int*[m];
            for(
    int k=1k<=mk++)
                *(
    a+k)=new int [n]; 
    PHP Code:
    //Huy Cap Phat Dong
            
    for(i=1i<=mi++)
                
    delete [] a[i];
            
    delete [] a
    còn các thao tác nhập xuất thì bình thường thôi ha!

    Mọi chi tiết vui lòng liên hệ:
    E-mail: edwardthienhoang@gmail.com
    Y!M: edward_thien
    Skype: hoangle.se

  6. Có 3 thành viên cảm ơn hoangedward cho bài viết này:
    maithao11090 (27-03-2010), ngo_tri_dat (06-03-2012), yyoko3254 (24-03-2010)

  7. #5
    daikaphi's Avatar
    daikaphi vẫn chưa có mặt trong diễn đàn Gà Con
    Tham gia
    Oct 2007
    Bài
    3
    Cảm ơn
    2
    Điểm: 1/1 bài viết
    VR power
    0

    Default

    thx bạn. Mình test thử. Mà m + n ở đây là gì vậy bạn. Số dòng và cột hử?

    ---------- Bài viết đã được nhập tự động bởi hệ thống ----------

    PHP Code:
    int n,i;
    printf("nhap so phan tu cua mang:");
    scanf("%d",&n);
    a=(int*)malloc(n*sizeof(int));
                
    for(
    i=0;i<n;i++)
    {
        for(
    int j=0;j<n;j++)    
        {    
        
    printf("nhap phan tu a[%d][%d]:",i,j);
        
    scanf("%d",&a[i][j]);
        }
    }
    for(
    i=0;i<n;i++)
    {
        for(
    int j=0;j<n;j++)
        {
            
    printf("%d",a[i][j]);
        }
        
    printf("\n");
    }

    free(a); 
    return 
    0
    với code như thế này mình viết trong hàm main luôn thì mảng 1 chiều chạy đc nhưng 2 chiều ko đc. Xuất hiện eror: invalid types `int[int]' for array subscript.
    Mong mọi người giúp đỡ
    Thay đổi nội dung bởi daikaphi; 24-03-2010 lúc 23:55. Lý do: Hệ thống nhập bài tự động

  8. #6
    hoangedward's Avatar
    hoangedward vẫn chưa có mặt trong diễn đàn Rìu Vàng
    Tham gia
    Jul 2008
    Đến từ
    Bình Dương
    Bài
    750
    Cảm ơn
    702
    Điểm
    757/256 bài viết
    VR power
    0

    Default

    Trích daikaphi View Post
    thx bạn. Mình test thử. Mà m + n ở đây là gì vậy bạn. Số dòng và cột hử?

    ---------- Bài viết đã được nhập tự động bởi hệ thống ----------

    PHP Code:
    int n,i;
    printf("nhap so phan tu cua mang:");
    scanf("%d",&n);
    a=(int*)malloc(n*sizeof(int));
                
    for(
    i=0;i<n;i++)
    {
        for(
    int j=0;j<n;j++)    
        {    
        
    printf("nhap phan tu a[%d][%d]:",i,j);
        
    scanf("%d",&a[i][j]);
        }
    }
    for(
    i=0;i<n;i++)
    {
        for(
    int j=0;j<n;j++)
        {
            
    printf("%d",a[i][j]);
        }
        
    printf("\n");
    }

    free(a); 
    return 
    0
    với code như thế này mình viết trong hàm main luôn thì mảng 1 chiều chạy đc nhưng 2 chiều ko đc. Xuất hiện eror: invalid types `int[int]' for array subscript.
    Mong mọi người giúp đỡ
    bạn xem thử 1 bài đọc file ma trận dùng CPĐ xem nha! mình thấy bài của bạn ko ổn đó
    PHP Code:
    #include <iostream.h>
    #include <conio.h>
    #include <stdio.h>

    void docmatran(FILE *fint mint n)
    {
        
    char duongdan[40];
        
    cout<<"\n Nhap Duong Dan: ";
        
    gets(duongdan);
        if((
    f=fopen(duongdan,"rt"))!=NULL)
        {
            
    fscanf(f,"%d %d", &m, &n);
            
    cout<<""<<m<<"  "<<n<<"\n\n";
            
    //Dung Con Tro Cap 2 Cap Phat Dong 1 Array 2 Chieu
            
    int **a;
            
    a=new int*[m];
            for(
    int k=1k<=mk++)
                *(
    a+k)=new int [n];
            for(
    int i=1i<=mi++)
            {
                for(
    int j=1j<=nj++)
                {
                    
    fscanf(f,"%d",a[i]+j);
                    
    cout<<a[i][j]<<"  ";
                }
                
    cout<<"\n";
            }
            
    getch();
            
    //Huy Cap Phat Dong
            
    for(i=1i<=mi++)
                
    delete [] a[i];
            
    delete [] a;
        }
        
    cout<<"\n Khong Mo Duoc File";
        
    getch();
        
    fclose (f);
    }

    void main()
    {
        
    clrscr();
        
    FILE *f;
        
    int mn;
        
    docmatran(fmn);


    Mọi chi tiết vui lòng liên hệ:
    E-mail: edwardthienhoang@gmail.com
    Y!M: edward_thien
    Skype: hoangle.se

  9. Có 1 thành viên cảm ơn hoangedward cho bài viết này:
    maithao11090 (27-03-2010)

  10. #7
    raveufo's Avatar
    raveufo vẫn chưa có mặt trong diễn đàn Rìu Bạc Đôi
    Tham gia
    Dec 2007
    Đến từ
    Unknown
    Bài
    463
    Cảm ơn
    1
    Điểm
    194/135 bài viết
    VR power
    0

    Default

    Mình nhận thấy rằng các bạn khi lập trình với con trỏ đã bỏ qua một bước rất quan trọng: khi cấp phát phải kiểm tra xem việc cấp phát đã thành công hay chưa? Việc kiểm tra này khá quan trọng và nó sẽ giúp bạn tránh được những lỗi "khó chịu".
    Ví dụ:
    int **a = NULL;
    a = new int*[n];
    if(a == NULL) return;
    for(int i = 0; i < n; i++)
    {
    *(a + i) = new int[n];
    if(*(a + i) == NULL) return;
    }

    Sau này khi làm việc với các ngôn ngữ lập trình cấp cao hơn, việc bắt lỗi và thông báo lỗi là cực kì cần thiết cho việc sữa chữa, bảo trì phần mềm.
    o0o Một chương trình không có lỗi thì không thể gọi là chương trình o0o

  11. Có 1 thành viên cảm ơn raveufo cho bài viết này:
    maithao11090 (27-03-2010)

  12. #8
    maithao11090's Avatar
    maithao11090 vẫn chưa có mặt trong diễn đàn Gà Con
    Tham gia
    Mar 2010
    Bài
    8
    Cảm ơn
    29
    Điểm
    0/0 bài viết
    VR power
    0

    Default

    Trích raveufo View Post
    Mình nhận thấy rằng các bạn khi lập trình với con trỏ đã bỏ qua một bước rất quan trọng: khi cấp phát phải kiểm tra xem việc cấp phát đã thành công hay chưa? Việc kiểm tra này khá quan trọng và nó sẽ giúp bạn tránh được những lỗi "khó chịu".
    Ví dụ:
    int **a = NULL;
    a = new int*[n];
    if(a == NULL) return;
    for(int i = 0; i < n; i++)
    {
    *(a + i) = new int[n];
    if(*(a + i) == NULL) return;
    }

    Sau này khi làm việc với các ngôn ngữ lập trình cấp cao hơn, việc bắt lỗi và thông báo lỗi là cực kì cần thiết cho việc sữa chữa, bảo trì phần mềm.
    một ý kiến rất hay! cám ơn bạn!

  13. #9
    dinho1701's Avatar
    dinho1701 vẫn chưa có mặt trong diễn đàn Búa Đá
    Tham gia
    Sep 2011
    Bài
    59
    Cảm ơn
    46
    Điểm
    14/11 bài viết
    VR power
    0

    Default

    int **ptr;
    int *ptr1;
    ptr=&ptr1;
    ptr1=new int[n*n];
    if(ptr1==NULL) return;
    Trích raveufo View Post
    Mình nhận thấy rằng các bạn khi lập trình với con trỏ đã bỏ qua một bước rất quan trọng: khi cấp phát phải kiểm tra xem việc cấp phát đã thành công hay chưa? Việc kiểm tra này khá quan trọng và nó sẽ giúp bạn tránh được những lỗi "khó chịu".
    Ví dụ:
    int **a = NULL;
    a = new int*[n];
    if(a == NULL) return;
    for(int i = 0; i < n; i++)
    {
    *(a + i) = new int[n];
    if(*(a + i) == NULL) return;
    }

    Sau này khi làm việc với các ngôn ngữ lập trình cấp cao hơn, việc bắt lỗi và thông báo lỗi là cực kì cần thiết cho việc sữa chữa, bảo trì phần mềm.

 

 

Quyền sử dụng

  • 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ể tự sửa bài viết của mình
  •