Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Sửa lỗi array size too large

  1. #1
    Ngày gia nhập
    05 2010
    Bài viết
    59

    Mặc định Sửa lỗi array size too large

    Đề bài của mình là bài 2 trong pic này. Mình đã code còn mỗi 1 lỗi khi gọi ở hàm main nhưng không sửa được. Mong mọi người giúp đỡ. Thanks

    Code:
    #include<conio.h>
    #include<stdio.h>
    #include<iostream.h>
    #include<string.h>
    class date
    {
    	private:
    		int ngay,thang,nam;
    	public:
    		void nhap()
    		{
    		cin>>ngay>>thang>>nam;
    		}
    		void xuat()
    		{cout<<ngay<<"/"<<thang<<"/"<<nam;}
    		int getnam()
    		{return nam;}
    		int getthang()
    		{return thang;}
    		int getngay()
    		{return ngay;}
    		friend class ban;
    };
    
    class khoa
    {
    	private:
    		char mk[10],tk[50],trk[50];
    		friend class truongdh;
    };
    class ban
    {
    	private:
    		char mb[10],tb[50];
    		date ntl;
    		friend class truongdh;
    		friend void bantl1999(truongdh *T,int n);
    
    };
    class truong
    {
    	protected:
    		char mt[10],tt[50],dc[100];
    	public:
    		void nhap();
    		void xuat();
    };
    class truongdh:public truong
    {
    	private:
    		int sk,sb;
    		khoa dsk[100];
    		ban dsb[100];
    	public:
    		void nhap();
    		void xuat();
    		friend void nhapds(truongdh *,int);
    		friend void sxban(truongdh *,int);
    		friend void sxkhoa(truongdh *,int);
    		friend void bantl1999(truongdh *,int);
    };
    void truong::nhap()
    {
    	cout<<"ma truong:";gets(mt);fflush(stdin);
    	cout<<"ten truong:";gets(tt);fflush(stdin);
    	cout<<"dia chi:";gets(dc);fflush(stdin);
    }
    void truong::xuat()
    {
    	cout<<"ma truong:"<<mt<<endl;
    	cout<<"ten truong:"<<tt<<endl;
    	cout<<"dia chi:"<<dc<<endl;
    }
    void truongdh::nhap()
    {
    	truong::nhap();
    	cout<<"so khoa:";cin>>sk;
    	for(int i=0;i<sk;i++)
    	{
    		cout<<"khoa thu:"<<i+1<<endl;
    		cout<<"\nma khoa:";gets(dsk[i].mk);fflush(stdin);
    		cout<<"\nten khoa:";gets(dsk[i].tk);fflush(stdin);
    		cout<<"\dia chi:";gets(dsk[i].trk);fflush(stdin);
    	}
    	cout<<"so ban:";cin>>sb;
    	for(int j=0;j<sb;j++)
    	{
    		cout<<"ban thu:"<<j+1<<endl;
    		cout<<"\nma ban:";gets(dsb[j].mb);fflush(stdin);
    		cout<<"\nten ban:";gets(dsb[j].tb);fflush(stdin);
    		cout<<"ngay thanh lap:";
    		dsb[j].ntl.nhap();
    	}
    }
    void  truongdh::xuat()
    {
    	truong::xuat();
    	for(int i=0;i<sk;i++)
    	{
    		cout<<"\nma khoa:"<<dsk[i].mk<<endl;
    		cout<<"\nten khoa:"<<dsk[i].tk<<endl;
    		cout<<"\dia chi:"<<dsk[i].trk<<endl;
    	}
    	for(int j=0;j<sb;j++)
    	{
    		cout<<"\nma ban:"<<dsb[j].mb<<endl;
    		cout<<"\nten ban:"<<dsb[j].tb<<endl;
    		cout<<"ngay thanh lap:";
    		dsb[j].ntl.xuat();
    	}
    }
    void nhapds(truongdh *T,int n)
    {
    	for(int i=0;i<n;i++)
    	{
    		cout<<"truong dai hoc thu:"<<i+1<<endl;
    		T[i].nhap();
    	}
    }
    void sxkhoa(truongdh *T,int n)
    {
    	for(int i=0;i<n-1;i++)
    	for(int j=i+1;j<n;j++)
    	if(T[i].sk>T[i].sk)
    	{
    		truongdh tg=T[i];
    		T[i]=T[j];
    		T[j]=tg;
    	}
    }
    void sxban(truongdh *T,int n)
    {
    	for(int i=0;i<n-1;i++)
    	for(int j=i+1;j<n;j++)
    	if(T[i].sb>T[i].sb)
    	{
    		truongdh tg=T[i];
    		T[i]=T[j];
    		T[j]=tg;
    	}
    }
    void bantl1999(truongdh *T,int n)
    {
    	for(int i=0;i<n;i++)
    	if(T[i].dsb[i].ntl.getnam()==1999)
    	{
    		T[i].xuat();
    		cout<<".........."<<endl;
    	}
    }
    void main()
    {
    	clrscr();
    	truongdh T[100];// Array size too large
    	int n;
    	cout<<"nhap n="; cin>>n;
    	cout<<"nhap ds truong dai hoc:"<<endl;
    	nhapds(T,n);
    	sxkhoa(T,n);
    	cout<<"ds khoa sx:"<<endl;
    	for(int i=0;i<n;i++)
    	{
    		T[i].xuat();
    		cout<<"............"<<endl;
    	}
    	sxban(T,n);
    	cout<<"ds ban sx:"<<endl;
    	for(i=0;i<n;i++)
    	{
    		T[i].xuat();
    		cout<<"............"<<endl;
    	}
    	cout<<"ban thanh lap 1999:"<<endl;
    	bantl1999(T,n);
    	getch();
    }
    Attached Thumbnails Attached Thumbnails 20072010460.jpg  

  2. #2
    Ngày gia nhập
    07 2011
    Bài viết
    160

    Cách 1 (recommend): Dùng std::vector thay cho các loại mảng 50-100 phần tử mà bạn khai báo.
    Cách 2 (not recommend, nhưng đơn giản hơn): Đưa khai báo truongdh T[100]; ra bên ngoài hàm main, tức là global variable. Khai báo biến bên trong 1 function thì biến sẽ nằm trên stack, vùng nhớ thường là eo hẹp hơn.

  3. #3
    Ngày gia nhập
    05 2010
    Bài viết
    59

    Thanks bạn. Cách 1 thì minh không hiểu. Cách 2 bạn nói khai báo ra ngoài hàm main nhưng khi gọi các hàm nhapds, sx thì đụng tới T phải làm sao. Mong được sự giúp đỡ

  4. #4
    Ngày gia nhập
    01 2011
    Nơi ở
    -Mountain-
    Bài viết
    768

    Trích dẫn Nguyên bản được gửi bởi canhkho Xem bài viết
    Thanks bạn. Cách 1 thì minh không hiểu. Cách 2 bạn nói khai báo ra ngoài hàm main nhưng khi gọi các hàm nhapds, sx thì đụng tới T phải làm sao. Mong được sự giúp đỡ
    - C1: Vector thực chất cũng tương tự như mảng. Nhưng nó là kiểu dữ liệu mảng động đã được định nghĩa sẵn cho ta sử dụng
    muốn tìm hiểu bạn tìm ở đây: http://www.cplusplus.com/reference/stl/vector/
    C2: Biến toàn cục thì sử dụng như biến cục bộ bình thường cộng thêm một vài chức năng khác nữa
    có nghĩa là nó rộng ra chứ ko hẹp vào
    Hướng dẫn C++: https://www.youtube.com/watch?v=BwLodoQdoY4&list=PL1c9Uxlo-mplJDRGdONNupgo5OCBTyGGn

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

  1. Kỹ thuật C Tính toán size Array trong lập trình C?
    Gửi bởi sp_vn trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 10
    Bài viết cuối: 13-01-2011, 07:37 PM
  2. Sự khác nhau của Heap Size và Array Length của mảng tạo thành Heap
    Gửi bởi cutithongtin trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 05-01-2011, 04:35 PM
  3. Lập trình C++ How to fit QGraphicsScene's size equal QGraphicsView's size when startup app?
    Gửi bởi Tadius trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 12-09-2010, 09:07 AM
  4. Chỉnh Size richtextbox theo Size form
    Gửi bởi nguyenduong127 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 30-08-2009, 04:39 PM
  5. error C2148: total size of array must not exceed 0x7fffffff bytes
    Gửi bởi philong89 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 01-08-2008, 09:43 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