Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2009, 20:26   #1
megavolt91
Пользователь
 
Регистрация: 19.05.2009
Сообщений: 24
По умолчанию C++. Есть код нужно исправить ошибки

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

Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream.h>
void main()
{
void print (double **, int );
double **pd, s1, s2, k1, k2;
int n, i, j, j1, j2;
cout << " \n Bведите любое число: ";
cin >> s1;                	// Обход сбоев системы
do
{ fflush (stdin) ;
while (cout << "\n Bведить размерность квадратной "
   << " матрицы: ",!scanf (" %d ",  &n) ) 	/*   cіn >> n ; */
{ fflush ( stdin) ; 	// Очистить системный буфер при ошибке ввода
continue;      			// Повторить ввод
}
if (! (pd = (double **)malloc(sizeof (double *)*n)))
{ cout << "\ n 	недостаточно свободной памяти \n";     continue;
}
for (i = 0; i < n; i ++)
if (! (*(pd+i) = (double *)malloc(sizeof (double)*n)))
{ cout << "\n Недостаточно свободной памяти \n"
  <<  "	Сократите размерность матрицы";
pd = NULL;    break;   	// Обнулeние указателя pd для ввода нового n.
}
} while (!pd);
cout << " Bведить пострково матрицу: \n";
for (i = 0; i<n; i++)      	// Bвод матрицы
for( j = 0; j<n; j ++)
cin >> *(*(pd+i)+j);
cout << " Bведена матрица: \n";
print (pd,n);
s1 =* (*pd+1);        	// Для поиска столбца с элементами выше диагонали
s2=* (* (pd+ n-1)+ n-2) ;	// Для поиска столбца с элементами ниже диагонали
j1 = 1; j2 = n-2;    		// Номера столбцов для замены элементов
for( j=0; j<n; j++)
{
k1= k2 = 0.;    // Обнуляем сумму для элементов выше и ниже диагонали
for (i = 0; i<n; i++)
if (i < j )  k1+= *(*(pd+i)+j);       // Элемент выше диагонали
else
if(i>j) k2+= *(*(pd+i)+j);            // Элемент ниже диагонали
if(s1 < k1) {s1=k1; j1=j;}            // Оценка суммы выше диагонали
if(s2>k2 && j< n-1) {s2=k2; j2=j; }   // Оценка суммы ниже диагонали
}
// Обнуляемо элементы
for (i = 0; i<n; i++)
{ if (i < j1) *(*(pd+i)+j1)=0;
if (i > j2) *(*(pd+i)+j2)=0;
}
cout << "\n Преобразованная матрица:\n";
print(pd, n);
for (i=0; i < n; i ++)         		// "Увольняем память
free (* (pd+i)) ; free (pd) ; getch ();
}
void print(double **pd, int n)
{  for(int i=0;i<n;i++)          		// Вывод матрицы
{ cout << endl;
for(int j = 0; j<n; j ++)
printf ("%8.21f",*(*(pd+i)+j));
	}
}
Оно ничему не выводит. А нужно вывести номер столбца, у которого сумма элементов, расположенных ниже главной диагонали наименьшая. Помогите пожалуйста
megavolt91 вне форума Ответить с цитированием
Старый 02.06.2009, 12:20   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Правильно, не выводит. Добавьте:
Код:
cout<<endl<<"Первый номер: "<<j1<<endl;
cout<<"Второй номер: "<<j2<<endl;
и все
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 02.06.2009, 17:51   #3
megavolt91
Пользователь
 
Регистрация: 19.05.2009
Сообщений: 24
По умолчанию

А нужно вывести номер столбца, у которого сумма элементов, расположенных ниже главной диагонали наименьшая
megavolt91 вне форума Ответить с цитированием
Старый 02.06.2009, 18:04   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Что вы записываете в переменные j1 и j2?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 02.06.2009, 23:11   #5
megavolt91
Пользователь
 
Регистрация: 19.05.2009
Сообщений: 24
По умолчанию

Это не мой код я плохо ориентируюсь
megavolt91 вне форума Ответить с цитированием
Старый 02.06.2009, 23:17   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Это не мой код я плохо ориентируюсь
То есть вы нашли где-то неверный код, кинули сюда и хотите, чтобы вам его исправили? И это еще и притом, что он плохо структурирован и его трудно читать.
А вы не думали написать код самостоятельно?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 06.06.2009, 19:27   #7
megavolt91
Пользователь
 
Регистрация: 19.05.2009
Сообщений: 24
По умолчанию

Пробовал, не получается
megavolt91 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++. Есть код нужно исправить ошибки megavolt91 Помощь студентам 1 01.06.2009 18:38
C++... Необходимо исправить 4 ошибки... hen Помощь студентам 4 17.04.2009 04:28
Есть код программы на с++. Нужно обьяснение Alex1991 Помощь студентам 1 16.03.2009 14:37
помогите исправить ошибки kermit Помощь студентам 1 21.06.2008 10:44
Помогите исправить ошибки ...С++ Настенька Помощь студентам 1 25.03.2007 23:30