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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2009, 16:29   #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 вне форума Ответить с цитированием
Старый 01.06.2009, 18:38   #2
megavolt91
Пользователь
 
Регистрация: 19.05.2009
Сообщений: 24
По умолчанию

Помогите пожалуйста
megavolt91 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


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