• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Нужна Помощь В Решении Задачи, Пожалуйста, Откликнитесь.

  • Автор темы ozolli098
  • Дата начала
O

ozolli098

Задача такова: Найти количество положительных элементов между первым и последним нулевыми значениями каждого столбца целочисленной матрицы А. Результаты записать в одномерный массив S. Для столбцов матрицы, содержащих менее двух нулевых элементов, напечатать сообщения с номерами строк, при этом в результирующий массив записать (-1). Собственно код моей программы прикреплю ниже(P.S. Пишу на Visual studio 2008). Программа не работает, выводит всегда "-1", помогите, пожалуйста, найти ошибку или поправить стратегию моего размышления.
#include "stdafx.h"
#include "conio.h"
#include "iostream"
#include "math.h"
int _tmain(int argc, _TCHAR* argv[])
{int i, j, m, n,g,h,o,u,k; double mas [100][100],s[100];
printf("Vvedi kol-vo strok=");
scanf_s("%ld", &m);
printf("Vvedi kol-vo stolbchov=");
scanf_s("%ld", &n);
for(i = 0; i < m; i++)
for(j = 0; j < n; j++)
{printf("mas[%d,%d]= ",i+1,j+1);
scanf_s("%lf", &mas[j]);
}
for(j=0;j<n;j++)
{bool find; k=0;
for (i=0;i<m;i++)
{if (mas[j]= 0 && !find) find=true;
else if (find && (mas[j]>0)) k++;
else if (find && (mas[j]=0)) break;}
if (k>0) s[j]=k;
else s[j]=-1;
printf("s[%ld]=%lf\n",j+1,s[j]);
}
getch();
return 0;
}
 
R

rrrFer

Код:
for (int j = 0; j < m; ++j) {
int first = -1, last = -1;
for (int i = 0; i < n; ++i) 
if (a[i][j] == 0) {
first = i;
break;
}
for (int i = n - 1; i > 0; --i) 
if (a[i][j] == 0) {
last = i;
break;
}
if (first < 0 ) {
cout << j << " ... ";
s[j] = -1
}
int num = 0;
for (int i = first + 1; i < last; ++i)
num += a[i][j] > 0;
s[j] = num;
}

как то так
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!