1. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

Помогите Исправить Программку Чтобы Она Работала

Тема в разделе "Вопросы новичков и не только", создана пользователем victory, 9 дек 2014.

  1. victory

    victory New Member

    Репутация:
    0
    Регистрация:
    4 ноя 2014
    Сообщения:
    4
    Симпатии:
    0
    #include<iostream>
    #include<stdio.h>
    #include<math.h>
    #include<conio.h>

    using namespace std;

    double sum(double **a,int n,int m)
    {
    double sum=0.0;
    for(int i=0;i<m;i++)
    {
    sum+=a[n];
    }
    return sum;
    }
    int main()
    {;
    int n,m;
    cin>>n>>m;
    double **a;
    a=new double*[10];
    for(int i=0;i<n;i++)
    for(int j=0;j<m;j++)
    {
    cin>>a[j];
    }
    double min=sum(a,n,m);
    for(int i=1;i<n;i++)
    {
    for(int j=1;j<m;j++)
    if(min>sum(a,i,m))
    {
    min=sum(a,i,m);
    }
    cout<<"min="<<endl;
    _getch();
    return 0;
    }







    }
    При компиляции ошибок нет(у меня).Но не работает. ^_^
    Заранее спасибо.
     
  2. Whatka

    Whatka Well-Known Member

    Репутация:
    0
    Регистрация:
    9 окт 2011
    Сообщения:
    428
    Симпатии:
    4
    Есть ошибки.
    Вы создаёте двумерный массив,для него нужно выделять память дважды.
    Если вам интересно я могу рассказать подробнее.

    Ещё вы запрашиваете размерность массива(как я понял) n и m,а выделяете память под 10 элементов.

    Для того чтобы лучше понять,что должен делать код пишите задание.
     
  3. victory

    victory New Member

    Репутация:
    0
    Регистрация:
    4 ноя 2014
    Сообщения:
    4
    Симпатии:
    0
    Хочу,в смысле чтобы объяснили подробнее. ^_^
    Вот задание:
    Описать функцию , которая вычисляет сумму элементов k - го столбца действительной матрицы A = ( a[sub]ij[/sub] ) [sub]mn[/sub] размером m на n . Для данной действительной матрицы A размером m на n , используя функцию суммирования элементов столбца матрицы , найти номер столбца с минимальной суммой элементов .
     
  4. Whatka

    Whatka Well-Known Member

    Репутация:
    0
    Регистрация:
    9 окт 2011
    Сообщения:
    428
    Симпатии:
    4
    Код:
    //для чего были другие библиотеки подключен????
    #include<iostream>
    using namespace std;
    
    double Sum(double **A, int N, int K)//N - строк , K - номер столбца,в которм хотим вычислять
    {
    double sum = 0.0;
    for (int i = 0; i < N; i++)
    sum += A[i][K];
    return sum;
    }
    
    void main()
    {
    int N, M;
    cout << "Put N and M:";
    cin >> N >> M;
    // тут всё понятно,считываем размерность в наши переменные.
    //важно понимать,что матрица NнаM обычно подразумевает N строк и M столбцов 
    
    double **A; // создаём указатель на указатель вещественного типа.
    
    A = new double* [N];//Выделяем память под массив указателей
    /*
    для одномерного массива:
    int *Mas = new int [size]; - значит выделяем size ячеек в памяти размерности int.
    рисунок: 
    [ int ]
    [ int ]
    [ int ]
    [ int ]
    ...
    [ int ]
    size - штук
    каждая ячейка фиксированной длины
    
    у нас:
    N ячеек,но каждая ячейка - это одномерный массив
    [double*]
    [double*]
    ...
    [double*]
    N - штук
    размер каждой ячейки компилятор не знает,мы должны это задать
    */
    for (int i = 0; i < N; i++)
    {
    A[i] = new double[M]; // теперь каждая наша ячейка - это M ячеек фиксированной длины - double
    /*
    [[double] [double] ... [double]] - M штук(столбцов в каждой строке)
    [[double] [double] ... [double]]
    ...		 ...  ...	...
    [[double] [double] ... [double]]
    N -штук (строк в каждом столбце)
    */
    
    for (int j = 0; j < M; j++)
    {
    cout << "Put [" << i << "][" << j << "] element:";
    cin >> A[i][j];
    }
    
    }
    //Индексация в массивах с 0!!
    
    
    double min = 0;//нам нужен индекс,а не само значение.
    for (int i = 1; i < M; i++) // ицкл по каждому столбцу
    {
    if (Sum(A, N, min) > Sum(A, N, i))
    min = i;
    }
    
    for (int i = 0; i < N; i++)
    {
    cout << "\n";
    for (int j = 0; j < M; j++)
    cout << A[i][j] << "\t";
    }
    
    cout << "\n Index of row with min sum = " << min << endl;
    }
    //
     
Загрузка...

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