Форум программистов, компьютерный форум CyberForum.ru

Найти столбец где сумма элементов столбца наибольшая выше главной диагонали - C++

Восстановить пароль Регистрация
 
macc
Заблокирован
20.01.2013, 21:31     Найти столбец где сумма элементов столбца наибольшая выше главной диагонали #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include<iostream>
#include<conio.h>
#include<time.h>
using namespace std;
int main()
{
    int i,j,k, **pd;
    printf("razmernosc:\n");
    scanf("%d", &k);
    *p=new int [k,k]
    Віf (p==NULL) {
    printf("\n Allocation Error\n"};
    exit (1);
    for (i=0; i<k; i++)
    {
        for (j=0; j<k; j++)
        {
            scanf("%d",&mas[i][j]);
            printf("%d",mas[i][j]);
        }
        }
     for (j=0; j<k; j++)
     {
         suma[j]=0
         if j>i
         suma[j]+=mas[i][j]
         if (suma[j] < suma[j+1])
      {
    int temp;
    temp = suma[j];
    suma[j] = m[j+1];
    suma[j+1] = temp;
      }
     }
    printf ("%i",suma[j]);
        getch();
    return 0 ;
}
Пожалуста отредактируйте код. Надо мартрицу создать выделетьь память. а потом найти столбец гле сума элементов столбца найбольшая выше главной диагонали.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2013, 21:31     Найти столбец где сумма элементов столбца наибольшая выше главной диагонали
Посмотрите здесь:

C++ Найти минимальный среди элементов, лежащих выше главной диагонали
Найти сумму элементов расположенных выше главной диагонали. C++
Сумма элементов в матрице, выше главной диагонали. C++
C++ Дана квадратная матрица. Найти минимальный из элементов на главной диагонали. Поменять местами с максимальным для столбца n, где n вводится с клави
Верно ли, что среднее арифметическое элементов выше главной диагонали больше среднего арифметического элементов ниже главной диагонали C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
maxii
1 / 1 / 0
Регистрация: 28.12.2011
Сообщений: 223
24.01.2013, 18:25     Найти столбец где сумма элементов столбца наибольшая выше главной диагонали #2
Этот код должен быть приблизительно такой--
It should be look like that__
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include<iostream>
#include<conio.h>
#include<time.h>
int main()
{
int i,j,k, **mas[i][j];
printf("Enter matrix size\n");
scanf("%d", &k);
*mas[i][j]=new int [k*k]
if (p==NULL) {
printf("\n Allocation Error\n"};
exit (1);
for (i=0; i<k; i++)
{
scanf("%d",&mas[i][j]);
}
for (i=0; i<k; i++)
{
printf("%d",&mas[i][j]);
}
suma[j]=0;
for (j=0; j<k; j++)
{
for (i<j+1; i<k; i++)
{
suma[j]+=mas[i][j]
}
}
 
{
int temp = suma[j];
suma[j] = suma[j+1];
suma[j+1] = temp;
}
}
printf ("%i",suma[j]);
getch();
return 0 ;
}
Добавлено через 1 минуту
Сайи-компилятор коудблок показывает такие три ошибки:
Line 18(for (i=0; i<k; i++)
{
printf("%d",&mas[i][j]);--opposite "{"): error: iostream: No such file or directory
Line 17(look at previous ;ine --opposite "for"): error: conio.h: No such file or directory
*mas[i][j]=new int [k*k]---error: 'new' undeclared (first use in this function).

Добавлено через 4 минуты
Я не знаю сколько надо здесь указателей для указание масива, точнее сколько должно быть для выделение памчти. Этот код правильно отображает элементы матрицы. Потом мне надо найти суму каждого столбца выше диагонали-то есть найти масив переменных сума- и не знаю правльно я выбираю их и как эти значения потом сберечь. Что ли в памяти. И потом если сделать две вещи правильно назначить дин. память и найти суму частей столбцов-потом лиш останется пузырковым методом розсортировать до найбольшего стобца над диагоналлю.

Добавлено через 8 минут
Там знак взятия адреса перед принтф точно лишний.
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
24.01.2013, 20:34     Найти столбец где сумма элементов столбца наибольшая выше главной диагонали #3
нужно или так
C++
1
int *p=new int[n*m];
или так
C++
1
2
3
int **p=new int*[n];
for (int i=0; i<n;++i)
        p[i]=new int[m];
Добавлено через 1 минуту
в первом случае для доступа к элементу массива используют
C++
1
p[i*m+j]
, во втором -
C++
1
p[i][j]
Добавлено через 35 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <iomanip>
#include <cmath>
#include <cstdlib>
using namespace std;
int findColumn  (int *a, int nRow, int nCol);
int main()
{
    int n=7;
    int m=7;
    int *p=new int[n*m]();
    for(int i=0; i<n*m; ++i) {
        p[i]=rand()%5-3;
        if (i!=0&&i%m==0 ) cout <<endl;
        cout << setw(4) << p[i];
    }
    cout << endl <<"Col #: " << findColumn(p,n ,m)<<endl;
    delete []p;
    return 0;
}
int findColumn (int *a, int nRow, int nCol)
{
    int sum, col;
    int tempSum=a[1]; //a[0][1]
    for (int j=2; j<nCol; ++j) {
        for(int i=0; i<nRow; ++i )
            if (i<j) sum+=a[i*nCol+j];
        if (sum > tempSum) {
            col=j;
            tempSum=sum;
        }
    }
    return col+1;
};
maxii
1 / 1 / 0
Регистрация: 28.12.2011
Сообщений: 223
24.01.2013, 21:10     Найти столбец где сумма элементов столбца наибольшая выше главной диагонали #4
Вообше Р это должен быть масив мас-это опечатка. Кроме того-m и n это одинаковые числа К-ведь память выделяется для всего масива. И
int **p=new int*[n];
for (int i=0; i<n;++i)
p[i]=new int[m];--я так понимаю это проще вариант при использование и таких деклараций памяти дожно быть две-для И и Жи.
А в теле функции мейн правильно построена структра особенно для поиска сумы столбца выше диагонали и потом сортировки?

Добавлено через 6 минут
Cкажите а где ваш код работает. мне надо чтобы это под турбо-с запустилось, или хотябы всебя в дома посмотреть результат-Codeblock, Dev c++, lcc-32? В онлайн-компиляторе Коудпад как для варианта С так и С++ гдето дол 7-10 ошибок хотя половина их через библиоке в начале. В моем коде как раз выделение марицы не работало, хотя отсутствие ошибок в компиляторе еще не означает что оно будет работать.
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
24.01.2013, 22:15     Найти столбец где сумма элементов столбца наибольшая выше главной диагонали #5
1. Работает любой gcc (Codebloks), вообще любой современный компилятор.
2. Заменить int sum на int sum=0, просто просмотрел.
3. Если не нужно включать элементы главной диагонали, берем массив и посматриваем его начиная с третьего столбца, при этом промежуточной максимальной суммой считаем сумму второго столбца, далее стандартно, как при поиске максимального элемента массива, тут нет сортировки
4. Поменяйте в строке p[i]=rand()%5-3; 5 и 3 на любые другие числа, проверьте результат.
5.
Цитата Сообщение от vua72 Посмотреть сообщение
int **p=new int*[n];
for (int i=0; i<n;++i)
p[i]=new int[m]
Эта конструкция правильная, но тогда вам прийдется переделать определение функции
int findColumn (int **a, int nRow, int nCol), поменять индексацию на a[i][j] и полностью переписать объявление и удаление массива в главной функции, причем удалять вы его будете симметрично определения:
C++
1
2
3
for (int i=0; i<n;++i)
delete p[i];
delete [] p;
Добавлено через 6 минут
в третьей строке - delete [] p[i];
maxii
1 / 1 / 0
Регистрация: 28.12.2011
Сообщений: 223
25.01.2013, 07:04     Найти столбец где сумма элементов столбца наибольшая выше главной диагонали #6
А все таки как без использование функции это делать. И почему вы говорите начиная со третьего столбца. Если второй столбец будет иметь первый элемент очень большой то его сума с одного элемента может быть наиболее большой. Тогда его надо сравнивать с первым столбцом где сума всегда ноль. И тогда цыкл: выч. сумы третьего и сравнение второго и третьего и запись большего в временную переменную. Тогда если мы выч. суму[j] тогда наверное надо записать что if сума j > сумы j-1 тогда темп=сума j если нет до следуещего цикла. Но как правильно обозначить эти элементы выше диагонали чтобы подсчитывалась сума столбца.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.01.2013, 20:02     Найти столбец где сумма элементов столбца наибольшая выше главной диагонали
Еще ссылки по теме:

Определить: сумма элементов выше главной диагонали меньше суммы элементов ниже главной диагонали? C++
Сумма элементов выше главной диагонали C++
C++ Найти сумму элементов матрицы, лежащих выше главной диагонали

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
25.01.2013, 20:02     Найти столбец где сумма элементов столбца наибольшая выше главной диагонали #7
первый (нулевой) столбец на диагонали, его не учитываем, второй - первоначальная сумма, поэтому начинаем с третьего.
не нравится функция - вынесите код, составляющий ее тело в основную программу, поменяйте имена еременныз и удалите return col+1.

Добавлено через 19 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <iomanip>
#include <cmath>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
    int n=7;
    int m=7;
    int *p=new int[n*m]();
    srand(time(0));
    for(int i=0; i<n*m; ++i) {
        p[i]=rand()%6-4;
        if (i!=0&&i%m==0 ) cout <<endl;
        cout << setw(4) << p[i];
    }
    int sum=0;
    int col=1; // здесь самая большая сумма
    int tempSum=p[1]; //a[0][1]
    for (int j=2; j<m; ++j) {
        for(int i=0; i<n; ++i )
            if (i<j) sum+=p[i*m+j];
        if (sum > tempSum) {
            col=j;
            tempSum=sum;
        }
    }
    cout << endl <<"Col #: " << col <<endl;
    delete []p;
    return 0;
}
Yandex
Объявления
25.01.2013, 20:02     Найти столбец где сумма элементов столбца наибольшая выше главной диагонали
Ответ Создать тему
Опции темы

Текущее время: 05:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru