Tại sao chương trình bị chạy vô hạn?

#include <iostream>
using namespace std;
#include <time.h>
#include <stdlib.h>
/* đề: dùng con trỏ cấp hai để xử lí mảng 2 chiều:
          - khai báo, cấp phát con trỏ cấp 2
          -nhập dữ liệu cho mảng 2 chiều
          -xuất dữ liệu mảng 2 chiều
          -xuất đường chéo chính
          -xuất đường chéo phụ
          -tính tổng giá trị mảng 2 chiều*/
void khaibao(int **&M,int n);
void nhapmang(int **&M,int n);
void xuatmang(int **M,int n);
void cheochinh(int **M,int n);
void cheophu(int **M,int n);
int tong(int **M,int n);
int main(int argc, char** argv) {
	int n; srand(time(NULL));
	cout<<"Moi nhap n: "; cin>>n;
	int **M=new int*[n];
	khaibao(M,n);
	nhapmang(M,n);
	xuatmang(M,n);
	cheochinh(M,n);
	cheophu(M,n);
	cout<<"Tong cac gia tri mang= "<<tong(M,n);
	return 0;
}
void khaibao(int **&M,int n)
{
	for(int i=0;i<n;i++)
	{
		*(M+i)=new int[n];
	}
}
void nhapmang(int **&M,int n)
{
    for(int i=0;i<n;i++)
    {
    	for(int j=0;j<n;j++)
    	{
    		*(*(M+i)+j)=rand()%101;
		}
	}
}
void xuatmang(int **M,int n)
{
	cout<<"MANG SAU KHI NHAP LA: \n";
	for(int i=0;i<n;i++)
    {
    	for(int j=0;j<n;j++)
    	{
    		cout<<*(*(M+i)+j)<<"\t";
		} cout<<endl;
	}
}
void cheochinh(int **M,int n)
{
	cout<<"DUONG CHEO CHINH LA: \n";
	for(int i=0;i<n;i++)
    {
    	for(int j=0;j<n;j++)
    	{
    		if(i=j)
    		{
    			cout<<*(*(M+i)+j)<<"\t";
			}
		}
	}
}
void cheophu(int **M,int n)
{
	cout<<"DUONG CHEO PHU LA: \n";
	for(int i=0;i<n;i++)
    {
    	for(int j=0;j<n;j++)
    	{
    		if(j=(n-i-1))
    		{
    			cout<<*(*(M+i)+j)<<"\t";
			}
		}
	}
}
int tong(int **M,int n)
{
	int sum=0;
	for(int i=0;i<n;i++)
    {
    	for(int j=0;j<n;j++)
    	{
    		sum+=*(*(M+i)+j);
		}
	} 
	return sum;
}

Cậu vui lòng thực hiện các điều sau nhé:

  • Viết tiếng Việt có dấu trên tiêu đề
  • Dùng Markdown format lại code
  • Nêu rõ code này được viết để làm gì (hay ghi đề bài của cậu).
  • Nêu rõ cậu đã test với input nào, cậu kỳ vọng gì, nhưng nhận được output như thế nào.

Vui lòng cải thiện chất lượng post trước nhé! :smile:
Tớ sẽ cho cậu 24h để cải thiện post của cậu. Sau thời gian này, topic sẽ bị đóng.

4 Likes

Xong rồi ạk, check hộ em vs

Chương trình có in ra gì không? Bạn có xác định phần bạn cho là lặp vô hạn nằm ở hàm nào không?

3 Likes

So sánh thì dùng == chứ không dùng = nha bạn :penguin:. = dùng để gán giá trị, khi dùng sẽ trả về giá trị được gán.

The assignment operators return the value of the object specified by the left operand after the assignment. The resultant type is the type of the left operand. The result of an assignment expression is always an l-value. These operators have right-to-left associativity. The left operand must be a modifiable l-value.
https://docs.microsoft.com/en-us/cpp/cpp/assignment-operators?view=msvc-160#result-of-assignment-operators

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?