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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 16.03.2009, 17:10   #1
Pecherni
 
Регистрация: 16.03.2009
Сообщений: 4
По умолчанию Диагональ матрицы

Столкнулся с задачей в которой нужно для заданной матрицы(m на n) сформировать вектор из диагонали
Вот что у меня получилось:
Код:
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
void main ()
{clrscr;
randomize ();
int i,j, m,n,d;
float **matr,**mas;
matr=new float *[n];
matr=new float *[m];
cout << "\n Vvedite chislo strok n="; cin>>n;
cout << "\n Vvedite chislo stolbcov m="; cin>>m;
for (i=0;i<n;i++)
for (j=0; j<m; j++)
matr[i][j]=random (100);
for (i=0;i<n;i++)
{
for (j=0; j<m; j++)
cout<<matr[i][j]<<"\t";
cout<<"\n";
}

 cout<<"\n vektor iz diagonalej";

 delete matr[i];
delete matr[j] ;
delete [] matr;
}
Помогите разобраться.

Последний раз редактировалось MaTBeu; 17.03.2009 в 01:15.
Pecherni вне форума
Старый 16.03.2009, 17:32   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Начнем с того, что матрицу вы создаете неправильно. А точнее, неправильно выделяете память. Ну и освобождаете, соответственно, тоже неверно.
Надо:
Код:
matr = new float*[n];
for(i=0;i<n;i++)
 matr[i] = new float[n];
Далее. Раз есть диагональ, значит матрица квадратная. Поэтому вводить надо только размерность.
В общем, разбирайтесь:

Код:
#include <iostream>
#include <conio.h>
#include <time.h>
using namespace std;

int main(){
srand(time(NULL));
int i,j, n,k;
float **matr,*mas;

cout << "\n Vvedite razmernost: ";
cin>>n;
matr = new float*[n];
for(i=0;i<n;i++)
 matr[i] = new float[n];

for (i=0;i<n;i++)
 {
  for (j=0; j<n; j++)
   {
    matr[i][j]=rand()%100;
    cout.width(5);
    cout<<matr[i][j];
   }
 cout<<endl;
 }

cout<<"\n vektor iz diagonalej";
mas = new float[n];

for(i=0;i<n;i++)
 {
  cout.width(5);
  cout<<matr[i][i];
  mas[i] = matr[i][i];
 }

cout<<"\n Vvedite k: ";
cin>>k;

for(j=0;j<n;j++)
 matr[k][j] += mas[j];

for(i=0;i<n;i++)
 {
  for(j=0;j<n;j++)
   {
    cout.width(5);
    cout<<matr[i][j];
   }
  cout<<endl;
 }

for(i=0;i<n;i++)
 delete[] matr[i];
delete[] matr;
delete mas;

getch();
return 0;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

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

Большое спасибо, я разобрался и исправил все ошибки в коде
Pecherni вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обращение матрицы методом союзной матрицы dofmat Помощь студентам 6 03.10.2011 15:01
Побочная диагональ. Сортировка dido171 Паскаль, Turbo Pascal, PascalABC.NET 1 23.12.2008 13:32
[qBasic]Главная диагональ, прошу помощи toyvo14 Помощь студентам 2 15.12.2008 22:10
Диагональ монитора. Levsha100 Помощь студентам 3 08.12.2008 23:52
Вопрос: Побочная диагональ матрицы в С++ john350 Помощь студентам 4 16.03.2008 22:19