Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
1 / 1 / 3
Регистрация: 29.11.2010
Сообщений: 23

Ошибка в динамической переменной и массиве

29.11.2010, 17:32. Показов 796. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Написал код выбора ведущего элемента матрицы по столбцу(нахождение мах элемента и перестановка строк). Вот код(на лишние переменные не обращайте внимания):

long double **A= new long double*[razm],**U= new long double*[razm],**L= new long double*[razm],*Y= new long double[razm],*X= new long double[razm],*B= new long double[razm];
long double *max;
long double *P,summ ;
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 max=A[i,i];
        for (ii = 0; ii < n; ii++) {
          if (A[ii,i]>max) {
              max=A[ii,i];
              str=ii;
          }
        }
        
        for (ii = 0; ii < n; ii++) {
 
           P=A[ii,str];
          A[ii,str]=A[ii,i];
          A[ii,i]=P;
        }
Компилится код нормально, но вот при выполнении программы ошибка. результат выдается NAN. Если вместо динамики использую обычные массивы и переменные, то всё четко работает. В чем ошибка???
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.11.2010, 17:32
Ответы с готовыми решениями:

Ошибка с выделением динамической памяти
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; class Vector { private: int *mas; int buf; int...

Ошибка при обращении к динамической глобальной переменной
использую в файле Unit1(Form1) 2 переменные, которые обьявляю как глобальные в начале файла: TStringList *q1 = new TStringList; ...

Удаление динамической переменной
дайте пример создания и удаления динамической переменной класса (например массива char) или посмотрите, что тут не так ...

3
4 / 4 / 1
Регистрация: 03.06.2010
Сообщений: 55
30.11.2010, 11:09
C++
1
2
3
4
5
double**a=new double*[razm];
for(int i=0;i<razm;i++)
{
  *(a+i)=new double [razm];
}
По-моему так (квадратная матрица)
0
1 / 1 / 3
Регистрация: 29.11.2010
Сообщений: 23
30.11.2010, 13:09  [ТС]
Неа, все равно в ответе одни NAN.


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
int n,i,j,k,ii,str,razm;
 
long  double **A= new long  double*[razm],**U= new long  double*[razm],**L= new long  double*[razm],*Y= new long  double[razm],*X= new long  double[razm],*B= new long  double[razm];
float duration;
long double *max;
long double *P,summ ;
 //double A1[10][10]; B[10],U[10][10],L[10][10];
razm=2500;
 
n= (int)(numericUpDown1->Value);
 
  for (i = 0;( i <n) ; i++) {
  *(A+i)=new long double [n];
      L[i] = new long  double[n];
      U[i+1] = new long  double[n];
    L[i][0]= Convert::ToSingle(this->dataGridView1->Rows[i]->Cells[0]->Value);
    for (j = 0; (j < n); j++) {
 
    A[i][j]=Convert::ToSingle(this->dataGridView1->Rows[i]->Cells[j]->Value);
     U[i+1][j]=0;
     L[i][j+1]=0;
    if (i==0) {
        U[j] = new long  double[n];
       U[0][j]=A[0][j];
    }
     }
  }
  B = new long  double[n];
    for (i = 0; i < n; i++) {
       B[i]=Convert::ToSingle(this->dataGridView1->Rows[i]->Cells[n]->Value);
    }
 
 
 
    for (i = 0; i < n; i++) {
 
         max=A[i,i];                                       //начало кода, где подозреваю ошибку
        for (ii = 0; ii < n; ii++) {
          if (A[ii,i]>max) {
              max=A[ii,i];
              str=ii;
          }
        }
        
        for (ii = 0; ii < n; ii++) {
 
           P=A[ii,str];
          A[ii,str]=A[ii,i];
          A[ii,i]=P;   
        }                                    //конец кода, где подозреваю ошибку
Дальше программа считает, выполняет разные операции с матрицей А и если убрать этот фрагмент кода из программы:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
max=A[i,i];
        for (ii = 0; ii < n; ii++) {
          if (A[ii,i]>max) {
              max=A[ii,i];
              str=ii;
          }
        }
        
        for (ii = 0; ii < n; ii++) {
 
           P=A[ii,str];
          A[ii,str]=A[ii,i];
          A[ii,i]=P;
        }
То все работает отлично. Проблема в этом куске кода! Может дело в работе с динамической переменной(Р) всётаки ???
0
4 / 4 / 1
Регистрация: 03.06.2010
Сообщений: 55
01.12.2010, 11:00
Двумерный массив инициализируется циклом. Закрой цикл (12, 15). После этого можно работать с массивом A[][], L[][], U[][]. Еще в 15 строчке непонятно, почему i+1. Возможно, так задумано, я не вникал. Обязательно погугли динамические двумерные массивы в с++.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.12.2010, 11:00
Помогаю со студенческими работами здесь

Присваивание переменной в динамической таблице
&lt;? error_reporting(E_ALL); ?&gt; &lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01//EN&quot; &quot;http://www.w3.org/TR/html4/strict.dtd&quot;&gt; &lt;head&gt; ...

Создание динамической переменной в цикле
Вобщем ситуация такая, мне надо создать динамическую переменную в цикле к примеру: for($z=0; $z&lt;10; $z++){ $a&amp;z = 0; //- это...

Как проверить успешность создания динамической переменной?
ПОдскажите пожалуйста как модно проверять успешность создания новой двумерной динамической переменной?

Присвоение значения динамической переменной из программно-созданного расписания
Добрый день! При создании расписания программно (через функцию), пытаюсь присвоить значение расписания в текущий момент времени...

Утечка памяти при создании динамической переменной класса
Никак не могу исправить проблему утечки памяти при создании динамической переменной класса class Ship { private: int maxHeight; ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru