Код: Выделить всё
void add(matrix a, matrix b, matrix c, int m, int n)
{
for(int i = 0; i < m; i++)
{
count++; //for 'for' i -------(a)
for(int j = 0; j < n; j++)
{
count++; //for 'for' j -------(b)
c[i][j] = a[i][j] + b[i][j];
count++; //for assignment ------(c)
}
count++; //for last time of 'for' j ------(d)
}
count++; //for lastime of 'for' i ---------(e)
}
Каждый раз, когда каждый цикл for запускает его, следующие выражения должны выполнять 2 счетчика операций для i < m; i++, когда выполняется только 1 операция i < m.
Код: Выделить всё
for(int i = 0; i < m; i++)
for(int j = 0; j < n; j++)
В этой строке счетчик операций должен быть равен 2: 1 операция сложения и 1 операция присваивания.
Код: Выделить всё
c[i][j] = a[i][j] + b[i][j];
Из-за вопросов я не знаю, почему он увеличил счетчик в (d) и (e).
Код: Выделить всё
//Simplified program with counting only
line void add (matrix a, matrix b, matrix c, int m, int n)
{
for(int i = 0; i < m; i++)
{
for(int j = 0; j < m; j++)
count += 2;
count += 2;
}
count++;
}
Подробнее здесь: https://stackoverflow.com/questions/273 ... -this-code
Мобильная версия