Кулер

Свортанил для "общего" кулера переключатель. Огромный и шумит сильно,зато охлаждает хорошо. Теперь буду регулировать им...

Задача

На днях копался в в своих архивах и нашёл такую вот задачку:
Дана целочисленная прямоугольная матрица.
Найти сумму элементов в тех столбцах, которые содержат хотя бы один отрицательный элемент.

Вроде не такая сложная...Составив алгоритм подставил его в уже заранее подготовленный и не раз
использованный шаблон для подобных задач. После недолгой обработки кода всё было готово. Вот что в итоге получилось:

/*
http://rob--live.blogspot.ru
*/
#include
#define NMAX 100
#define MMAX 100

// Определяем новый тип
typedef int matrix[NMAX][MMAX];

void main(void)
{
// Объявление функций
void input(matrix Q, int *N, int *M);
void plus(FILE *ff,matrix Q,int N, int M);

// Обьявление переменных
int i,j,N,M;
matrix Q;
FILE *fp;

// Ввод входных данных
input(Q, &N, &M);

// Вывод входных данных
fp=fopen("Результат.txt","w");
fprintf(fp,"Дана целочисленная прямоугольная матрица. Найти сумму элементов в тех столбцах,\nкоторые содержат хотя бы один отрицательный элемент.\n");
fprintf(fp,"\nВходные данные:\n");
fprintf(fp,"Границы массива: N=%i, M=%i",N,M);
fprintf(fp,"\nСам массив Q:\n");

for(i=0;i {
for(j=0;j fprintf(fp," %i",Q[i][j]);
fprintf(fp,"\n");
}

// Обработка матрицы
plus(fp,Q, N, M);

fclose(fp);
}
/****************************************************************************/
// Функции
inline void input(matrix Q, int *N, int *M)
{
int i,j;
FILE *fp;

fp=fopen("Входные_данные.txt","r");
fscanf(fp,"%i%i",N,M);
for(i=0;i<*N;i++)
for(j=0;j<*M;j++)
fscanf(fp,"%i",&Q[i][j]);

fclose(fp);
}

inline void plus(FILE *ff,matrix Q,int N, int M)
{
int i,j,k,p=0;
long S=0;

for (j=0;j for(i=0;i if(Q[i][j]<0)
{
p++;
for(k=0;k S=S+Q[k][j];
fprintf(ff,"\nСумма элементов столбца %i будет: %i\n",j,S);
S=0;
break;
}

if (p==0)
fprintf(ff,"\nВ матрице нет ни одного отрицательного элемента.");
}