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

 
0
 
C++
ava
maxi2 | 24.01.2013, 19:20
#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 ;
}


Добавлено позднее:
Сайи-компилятор коудблок показывает такие три ошибки:
Цитата
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 минуты
Я не знаю сколько надо здесь указателей для указание масива, точнее сколько должно быть для выделение памчти. Этот код правильно отображает элементы матрицы. Потом мне надо найти суму каждого столбца выше диагонали-то есть найти масив переменных сума- и не знаю правльно я выбираю их и как эти значения потом сберечь. Что ли в памяти. И потом если сделать две вещи правильно назначить дин. память и найти суму частей столбцов-потом лиш останется пузырковым методом розсортировать до найбольшего стобца над диагоналлю.

Модератор: Не забываем пользоваться кнопочкой "Код"
Ответы (3)
ava
feodorv | 24.01.2013, 21:25 #
Цитата (maxi2 @  24.1.2013,  19:20 findReferencedText)
error: iostream: No such file or directory

Цитата (maxi2 @  24.1.2013,  19:20 findReferencedText)
error: 'new' undeclared

Позвольте спросить, а на каком языке программирования Вы пишете?
ava
feodorv | 24.01.2013, 21:45 #
Цитата (maxi2 @  24.1.2013,  19:20 findReferencedText)
Этот код правильно отображает элементы матрицы.

Ох. Я сомневаюсь, что он хоть что-то способен отображать...
Цитата (maxi2 @  24.1.2013,  19:20 findReferencedText)
if (p==NULL) {

printf("\n Allocation Error\n"};

exit (1);

В printf'е отсутствует закрывающая скобка. exit(1) вызывается вне зависимости от того, равен p NULL'у или нет, вызывается просто по ходу дела, следовательно, весь код, тот что ниже exit'а, вообще не выполняется.


Куча ошибок, которые не то что не позволят правильно отобразить элементы матрицы, но и вообще скомпириваться. Например:
Цитата (maxi2 @  24.1.2013,  19:20 findReferencedText)
int i,j,k, **mas[i][j];

Объявлен массив указателей на указатели (а не двумерный массив) совершенно неизвестного размера. Чему равны j и i в момент объявления, неизвестно.


Цитата (maxi2 @  24.1.2013,  19:20 findReferencedText)
*mas[i][j]=new int [k*k]

Где точка с запятой?
Вы полагаете, что память под двумерный массив можно вот так запросто заказать?


Цитата (maxi2 @  24.1.2013,  19:20 findReferencedText)
for (i=0; i<k; i++)

{

scanf("%d",&mas[i][j]);

}

Это присвоение значений одному столбцу (чей индекс тоже неизвестен, так как неизвестно значение переменной j), а не всей матрице. Далее идёт вывод одного этого столбца.


И вот вопрос: при таком коде зачем утверждать, что код правильно отображает элементы матрицы?
ava
IValdemar | 25.01.2013, 17:25 #
Цитата (feodorv @  24.1.2013,  21:45 findReferencedText)
Цитата(maxi2 @  24.1.2013,  19:20 Найти цитируемый пост)

int i,j,k, **mas[i][j];



Объявлен массив указателей на указатели (а не двумерный массив) совершенно неизвестного размера. Чему равны j и i в момент объявления, неизвестно.


Это разве не двумерный массив указателей на указатели? Т.е массив указателей на указатели на указатели.  smile 

Цитата (maxi2 @  24.1.2013,  18:20 findReferencedText)
*mas[i][j]=new int [k*k]

Я не могу понять смысла этой строчки, но память под матрицу вы так точно не выделите. Если уж решили возиться с динамическим выделением, тогда следует в цикле выделять память под каждый столбец.

k=size;
mas = new int[k]; //mas имеет тип **int, т.е. массив указателей на указатели. В этой строке мы выделяем память под указатели
for(int i=0;i!=size;i++)
  mas[i] = new int[k]; // mas[i] имеет тип int*, т.е. указатель на массив int. Теперь выделяем память каждой строке(или столбцу, как удобнее воспринимать).


А вообще судя по коду он откуда-то списан, или набросан без всякого понимания происходящего. Если не стоит задача использовать динамическую память, то лучше использовать массивы с переменными или фиксированными размерами.

int size = 10;
int mas[size][size];

В этом коде объявлена матрица 10*10, и не нужно никакого выделения и последующего очищения памяти.

Добавлено позднее:
Цитата (feodorv @ 24.1.2013,  21:25)
Цитата (maxi2 @  24.1.2013,  19:20 \\"findReferencedText\\")
error: iostream: No such file or directory


Цитата (maxi2 @  24.1.2013,  19:20 \"findReferencedText\")
error: 'new' undeclared


Позвольте спросить, а на каком языке программирования Вы пишете?

Очень похоже что на Си  :-D

Добавлено позднее:
Цитата (maxi2 @  24.1.2013,  18:20 findReferencedText)
int i,j,k, **mas[i][j];

Вот здесь надо определиться.
либо так

int mas[i][j]; //Предполагается, что значения i,j уже известны.

или так

int **mas;

Но тогда все выделять надо вручную и удалять тоже.
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
advanced
Отправить