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

Тема в разделе "C/C++/C#", создана пользователем ozolli098, 12 ноя 2013.

  1. ozolli098

    ozolli098 New Member

    Регистрация:
    12 ноя 2013
    Сообщения:
    3
    Симпатии:
    0
    Задача такова: Найти количество положительных элементов между первым и последним нулевыми значениями каждого столбца целочисленной матрицы А. Результаты записать в одномерный массив 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;
    }
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    Код (Text):
    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;
    }
    http://codepad.org/j2M0VcnB
    как то так
     
  3. ozolli098

    ozolli098 New Member

    Регистрация:
    12 ноя 2013
    Сообщения:
    3
    Симпатии:
    0
    Спасибо!
     
Загрузка...

Поделиться этой страницей