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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
MegaVolt91
0 / 0 / 0
Регистрация: 14.05.2009
Сообщений: 29
#1

Есть код нужно исправить ошибки - C++

29.05.2009, 16:28. Просмотров 646. Ответов 4
Метки нет (Все метки)

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

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#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));
    }
}
Оно ничему не выводит. А нужно вывести номер столбца, у которого сумма элементов, расположенных ниже главной диагонали наименьшая. Помогите пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2009, 16:28     Есть код нужно исправить ошибки
Посмотрите здесь:

Нужно исправить 2 ошибки в коде C++
Проверьте игру(нужно исправить ошибки) C++
C++ Не компилируется программа. Нужно исправить ошибки.
C++ Есть готовый код C++ (Code Composer Studio). Копирование матрицы. Как исправить ошибки?
нужно исправить ошибки в коде C++
Нужно исправить ошибки в программе C++
Нужно исправить ошибки C++
Нужно исправить ошибки) C++
Нужно исправить ошибки C++
Нужно исправить ошибки в программе конструкторе C++
C++ нужно исправить ошибки)
нужно исправить 2 ошибки в готовой программе C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MegaVolt91
0 / 0 / 0
Регистрация: 14.05.2009
Сообщений: 29
01.06.2009, 18:37  [ТС]     Есть код нужно исправить ошибки #2
Помогите пожалуйста
MegaVolt91
0 / 0 / 0
Регистрация: 14.05.2009
Сообщений: 29
14.06.2009, 21:19  [ТС]     Есть код нужно исправить ошибки #3
Ну пожалуйста
Search..
14.06.2009, 22:28
  #4

Не по теме:

Интересно, какой стиль ты используешь в написании своего кода

FunDuck
688 / 379 / 4
Регистрация: 22.01.2009
Сообщений: 1,135
15.06.2009, 02:08     Есть код нужно исправить ошибки #5
Цитата Сообщение от MegaVolt91 Посмотреть сообщение
Помогите пожалуйста
Найди 10 отличий...
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
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
#include <malloc.h>
using namespace std;
 
int main(){
    float **arr;
    float *min, *max;
    int N, M;
    cout << "Vvedite razmernost'...\nN:";
    cin >> N;
    cout << "M:";
    cin >> M;
    min = (float*) malloc(M*sizeof(float));
    max = (float*) malloc(M*sizeof(float));
    memset(min, 0, _msize(min));
    memset(max, 0, _msize(max));
    arr = (float**) malloc(N*sizeof(float));
    for (int i = 0; i < N; i++){
        arr[i] = (float*)malloc(M*sizeof(float));
    }
    cout << "Vvedite massiv...\n";
    for (int i = 0; i < N; i++){
        for (int j = 0; j < M; j++){
            cin >> arr[i][j];
        }
    }
    for (int i = 0; i < M; i++){
        for (int j = 0; j < N; j++){
            if (j > i){
                min[i] += arr[j][i];
            }else if(j < i){
                max[i] += arr[j][i];
            }
        }
    }
    int _min = 0, _max = 1;
    for (int i = 1; i < M; i++){
        _min = (min[i] < min[_min] && i != M - 1)? i : _min;
        _max = (max[i] > max[_max] && i != 0)? i : _max;
    }
    cout << "Max summ:" << _max << "\nMin summ:" << _min << '\n';
    for(int i = 0; i < N; i++){
        for (int j = 0; j < M; j++){
            cout << arr[i][j] << ' ';
        }
        cout << '\n';
    }
    free(min);
    free(max);
    return 0;
}
Yandex
Объявления
15.06.2009, 02:08     Есть код нужно исправить ошибки
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru