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

Копирование элементов из старой матрицы в новую. Динамическое распределение памяти - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа со scanf() http://www.cyberforum.ru/cpp-beginners/thread1203020.html
Добрый день! Столкнулась с проблемой при работе с функцией scanf(). Особенно не получается, если тип вводимых данных char. Не работают пункты выбора 3 (RekordBase()), 4(NewFileText()), 5(Reload()). выбрасывает из программы при их выборе. я так полагаю проблема в спецификаторы преобразования, но исправить не могу.. помогите исправить ошибки // Defines the entry point for the console...
C++ Чтение из текстового файла Здравствуйте, Уважаемые форумчане. Возникла такая проблема. Надо считать из файла(внешнего) данные тип int и char- это 2 разных файла, в одном только int, в другом char. Я никак не могу это сделать, почему-то программа не находит внешний файл. int d; int i=0; ofstream f; f.open("fail.txt"); for(i=0; i<3; i++) ... http://www.cyberforum.ru/cpp-beginners/thread1203016.html
Быстрая сортировка двумерного массива C++
Возникла проблема с програмой в которой применяется быстрая сортировка двумерного массива. При попытке скомпилировать выдает ошибку: 1>c:\users\serv\documents\visual studio 2012\projects\consoleapplication6\consoleapplication6\исходный код.cpp(21): error C4716: create: должна возвращать значение 1>c:\users\serv\documents\visual studio...
Вывести слова из заданной строки, имеющие больше одной буквы «е» C++
Дана строка. На печать выдать слова, имеющие больше одной буквы «е». С++ Помогите пожалуйста Добавлено через 7 минут help Добавлено через 4 минуты help
C++ Не работает прогр. Ошибки! http://www.cyberforum.ru/cpp-beginners/thread1202956.html
Помогите исправить ошибки.
C++ Поменять местами max и min четных строк матрицы (без функции) Сделать двумерный массив без функции на С++. Дана квадратная матрица. Размерность вводится. Поменять местами max и min четных строк. Вот программа с функцией: #include<stdio.h> #include<iostream.h> #include<conio.h> #define Maxline 100 int a; int *AddressMax,*AddressMin; подробнее

Показать сообщение отдельно
Quest10n
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 2

Копирование элементов из старой матрицы в новую. Динамическое распределение памяти - C++

08.06.2014, 22:19. Просмотров 217. Ответов 2
Метки (Все метки)

Столкнулся с такой задачей : Вводится матрица. Если в матрице наибольший элемент находится над главной диагональю, то программа формирует новую матрицу, удалив из исходной столбец и строку, на пересечении которых находится наибольший элемент.
Распределение памяти - динамическое.

Вот мой код (MVS 2008):
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
// vvod.cpp   ФУНКЦИЯ ВВОДА
 
#include <iostream>
using namespace std;
 
float* vvod(int n)
{   
    float* mas = new float [n];
    for (int i =0 ; i<n; i++)
    {   
        cout<<"Vvedite "<<i+1<<" element"<<endl;
        cin>>*(mas+i);
    }
    return mas;
}
 
float** vvod(int m, int n)
{   
    float** mas = new float* [m];
    for (int i=0;i<m;i++)
    {   
        cout<<i+1<<"stroka"<<endl;
        mas[i]=vvod(n);
    }
    return mas;
}
 
 
//vivod.cpp    ФУНКЦИЯ ВЫВОДА
 
#include <iostream>
using namespace std;
void vivod (float**newMatr, int m, int n)
{
    cout<<endl;
    for (int i=0; i<m; i++)
    {
        for (int j=0; j<n; j++)
            cout<<newMatr[i][j]<<" ";
        cout<<endl;
    }
}
 
// func.cpp ФУНКЦИИ АНАЛИЗА И СОЗДАНИЯ
 
int analizMatr (float**matr,int m,int n,int&x,int&y)
{
    float max=0; 
    for (int i=0; i<m; i++)
    {
        for (int j=0; j<n; j++)
          if (matr[i][j]>max) 
          { max=matr[i][j];
            x=i; y=j;
          }
    }
    if (x>=y) return 0;
    return 1;
}
 
float**formMatr (float**matr, int m, int n,int&a, int&b)
{   int x,y;
    if (analizMatr(matr, m, n, x, y)==0)
        return 0;
    float**newMatr=new float*[n]; 
    a=0;
    for (int i=0; i<m; i++)
    {   b=0; 
        if (i!=x)
        { for (int j=0; j<n; j++)
          { if (j!=y)
            {   newMatr[b]=new float[n];
                newMatr[a][b]=matr[i][j];
              b++;
            }
          } 
        a++;
    
        }
    }
    return newMatr;
}
 
void del(float**matr,int m)
{
    for(int i=0;i<m;i++)
        delete [] matr[i];
    delete [] matr;
}
 
 
// main.cpp 
 
#include <iostream>
#include <conio.h>
using namespace std;
float**vvod(int m,int n);
void vivod (float**newMatr, int m, int n);
int analizMatr (float**matr,int m,int n,int&x,int&y);
float**formMatr (float**matr, int m, int n,int&a, int&b);
void del(float**matr,int m);
int main()
{
 int m,n,z,x,y,b,a;
 do 
 {
  do
  {
   cout<<"Vvedite kol-vo strok m="; cin>>m;
   cout<<endl;
  }while (m<0 || m==0 || m>10);
   do
  {
   cout<<"Vvedite kol-vo stolbcov n="; cin>>n;
   cout<<endl;
  }while (n<0 || n==0 || n>10);
 
  float**matr=vvod(m,n);
  float**newMatr=formMatr(matr,m,n,a,b);
  int q=analizMatr(matr,m,n,x,y);
  cout<<endl<<"q="<<q<<endl<<"x="<<x<<" , y="<<y<<endl
      <<"a="<<a<<" , b="<<b<<endl;
  
  if (newMatr)
     {
         cout<<endl<<"Matrica:"<<endl;
         vivod (matr,m,n);
         cout<<"Novaya matrica:"<<endl;
         vivod (newMatr,a,b);
         del(matr,m);
         del(newMatr,a);
     }
  else {
        cout<<"Matrica ne sozdavalas"<<endl;
        del(matr,m);
       }
 
  cout<<endl<<"Repeat? (0-for exit) "; cin>>z;
 }while (z!=0);
return (0);
}
В общем, сама проблема заключается в формировании новой матрицы (функция formMatr), не понимаю, как сделать правильный код..

Добавлено через 16 минут
UP
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru