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

Переделать из одномерного массива в матрицу! - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ найти причину вылета программы http://www.cyberforum.ru/cpp-beginners/thread268509.html
Вообщем написал программу, вроде бы все правильно (так говорит компилятор), но программа вылетает с ошибкой "Отправить отчет/Не отправлять", вообщем вы все ее знаете. #include <stdio.h> #include <iostream.h> #include <fstream.h> int n3x3(int nmas) { int np, ns, d; // calculating 3x3 minor
C++ Перевести двоичное число в десятичное у меня есть например ASCII код в двоичной системе какого то символа. как вывести это двоичное число чтоб на экране вывелась буква соответствующая этому двоичному коду? http://www.cyberforum.ru/cpp-beginners/thread268503.html
C++ Время выполнения программы увеличивается, если добавить проверку
я написал программу на перебор цикла из массива. И время её выполнения в данном примере занимает 5секунд, однако, если добавить 15 строку время увеличивается до 30 секунд. Вопрос почему? #include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv) { system("PAUSE"); const int k=10; int mass;long long int r=-11,v=100000000; int s=0; for( int i...
C++ Удаление чисел последовательности, которые стоят на нечетных местах
Задача Del. Дано ряд последовательных натуральных чисел от n до m, из которого удаляют сначала все числа, которые стоят на непарных местах, и так делают до тех пор, пока не останется одно единственное число. Напишите программу, которая найдет это число. Технические условия. Программа Del читает с клавиатуры числа n и m через пропуск (n<m<1000000). Программа выводит на экран единственное...
C++ классы http://www.cyberforum.ru/cpp-beginners/thread268465.html
1.Описать класс с именем NOTE, содержащий следующие поля: фамилия, имя; номер телефона; день рождения (массив из трех чисел). 2.Написать программу, выполняющую следующие действия: ввод с клавиатуры данных в массив, состоящий из восьми элементов типа NOTE; записи должны быть упорядочены по трем первым цифрам номера телефона; вывод на экран информации о человеке, чья фамилия введена с клавиатуры;...
C++ Блокировка приложений. Доброго времени суток. необходим совет. Коротко о задаче .. программа должна просматривать запускаемые процессы и в случаи если они обращаются к определенным библиотекам прекращать их работу. поясню для чего - надо что бы на компьютере не запускались игры, но при этом без проблем работали офисные программы и приложения. Нужен совет по поводу WinAPI ф-ций, какие лучше использовать для сей... подробнее

Показать сообщение отдельно
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
02.04.2011, 00:22     Переделать из одномерного массива в матрицу!
Рассортировать строки динамической матрицы с одинаковым количеством элементов в каждой строке по i-му наименьшему элементу строки, где i – номер строки.

Смотрите у меня получилось сделать для одномерного динамического массива.Т.е вводим массив,он потом сортируется по возрастанию,а потом мы можем попросить вывести любой его i-ый минимальный элемент.Код работает,всё отлично.....Только теперь для матрицы я не могу сделать.Не знаю как.Не выходит.Не понимаю!Но предполагаю что эту прогу для одномерного массива можно как-то перенести на динамическую матрицу. Люди Добрые ,помогите это сделать!Пожалуйста!!!

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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <conio.h>
#include <iostream.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
 
 
 
const Nmax=20;
 
class DinArr
{    
 
     unsigned n;
    int *DA;
 
  public:
  DinArr(int size)
  {
  if (size<1 || size>Nmax) n=Nmax / 2;
    else n=size;
   DA=new int [n];
  }
 
 
 
  void MyDef()
  {     for(int i=0; i<n; i++)
                cin>>DA[i];
  }
 
 
 
 
  void Show(int c=6)
   {  textcolor(c);
   cout<<endl;
      for(int i=0; i<n; i++)
      cprintf("%5d  ",DA[i]);
     cout<<endl;
  }
 
 
 
 
 
 
 void Sort1()
 {  int flag , k=n ;
    do
     { flag=0 ;
       k-- ;
       for( int i=0 ; i<k ; i++ )
         if (DA[i]>DA[i+1])
          {   flag=1 ;
               int t=DA[i] ;
                   DA[i]=DA[i+1] ;
                   DA[i+1]=t ;
          }
    }
    while(flag) ;
  }
 
 
 
 
 
 
 void MyMin()
 { int f  ;
   cout<<endl<<"Vvedite i-nomer min elementa : " ;
   cin>>f ;
   int k=0 , imin=0;
 
   for(int i=0 ; i<n ; i++ )
        { if (  (DA[i])!=(DA[i+1]))
             k++ ;
             if (k<f)
              imin = DA[i+1] ;
              else  break ;
         }
 
cout<<endl<<imin ;
 }
 
 
 
 
 
 
 
 
 
 
 
 
  ~DinArr()
  {
 
  cout<<"\nThe destructor deletes array\n" ;
  getch();
   delete []DA;
  }
 
 
 } ;
 
 
 
 
 
 
 
 
 
 
 
int main(int argc, char* argv[])
{  // randomize;
   // DinArr ObjArr(random(Nmax));   или
   // DinArr ObjArr(6);     или
   unsigned MyN;
   cout<<"size=";
         cin>>MyN;
   DinArr ObjArr(MyN);
   ObjArr.MyDef();
    ObjArr.Show();
     ObjArr.Sort1();
      ObjArr.Show(13);
       ObjArr.MyMin() ;
   getch();
   return 0;}
Добавлено через 2 часа 0 минут
Вот я попробовала сделать для матрицы....работает...но выдает какую-то ересь!Ну посмотрите пожалуйста!!!Хоть кто-нибудь!!!

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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <conio.h>
#include <iostream.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
 
 
 
const Nmax=10;
 
class DinArr
{    
 
    int **M , n , m , *S ;
 
  public:
 
 
  DinArr(int k1=6 , int k2=4)
  {  n=k1 ; m=k2 ;
     //Создание динамической матрицы
     M=new int*[n];
     for(int i=0; i<n ; i++)
    M[i]=new int[m] ;
    //Создание динамического одномерного массива
    S=new int[n] ;
 
  }
 
 
 
  void MyDefMatr()
  {   randomize() ;
      for(int j=0 ; j<m ; j++)
       for(int i=0 ; i<n ; i++)
       M[j][i]=random(10)+5 ;
 
  }
 
 
 
 
 void Sort1()
 {  int flag , k=n ;
    do
     { flag=0 ;
       k-- ;
       for( int i=0 ; i<k ; i++ )
         if (*M[i]>*M[i+1])
          {   flag=1 ;
               int t=*M[i] ;
                   *M[i]=*M[i+1] ;
                   *M[i+1]=t ;
          }
    }
    while(flag) ;
  }
 
 
 
 
 
 
void MySortMatr()
{ for (int j=0; j<m ; j++ )
    Sort1();
  }
 
 
 
 
 
 void MyMin()
 {
  for(int j=0 ; j<n ; j++)
 {
   int k=0 , imin=0;
 
   for(int i=0 ; i<n ; i++ )
        { if (  (*M[i])!=(*M[i+1]))
             k++ ;
             if (k<j)
              imin = *M[i+1] ;
              else  break ;
         }
       S[j]=imin ;
}
 }
 
 
 
 
 
 
 
 
 
void FunPrint ()
      {for(int j=0;j<m;j++)
        { printf("\n");
          for(int i=0; i<n; i++)
            printf("%5d",M[j][i]);
          printf("  => %5d",S[j]);
        }
       printf("\n");
     }
 
 
 
 
 
 
 
 
 
 
 
 ~DinArr()
   {
     cout <<"\n Destructor works for 2 objects: \n Memory for rows";
     for(int j=0;j<m;j++)
        delete[]M[j];
      cout <<" \n Memory for array of pointers ";
     delete []M;
     getch();
   }
 
 
 } ;
 
 
 
 
 
 
 
 
 
 
 
int main(int argc, char* argv[])
{  // randomize;
   // DinArr ObjArr(random(Nmax));   или
   // DinArr ObjArr(6);     или
   unsigned n,m;
   cout<<"n=" ;
         cin>>n;
   cout<<"m=";
         cin>>m;
   DinArr ObjArr(n,m);
   ObjArr.MyDefMatr();
    ObjArr.FunPrint  ();
     ObjArr.MySortMatr();
       ObjArr.FunPrint  ();
    ObjArr.MyMin() ;
      ObjArr.FunPrint  ();
   getch();
   return 0;}
Добавлено через 44 минуты
ВОТ!ТОЛЬКО ТУТ СОРТИРУЕТ ЧЕГО-ТО ТОЛЬКО ПЕРВУЮ СТРОКУ МАТРИЦЫ А ОСТАЛЬНЫЕ НЕТ!!!!!!!

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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <conio.h>
#include <iostream.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
 
 
 
const Nmax=10;
 
class DinArr
{
 
    int **M , n , m , *S ;
 
  public:
 
 
  DinArr(int k1=6 , int k2=4)
  {  n=k1 ; m=k2 ;
     //Создание динамической матрицы
     M=new int*[n];
     for(int i=0; i<n ; i++)
    M[i]=new int[m] ;
    //Создание динамического одномерного массива
    S=new int[n] ;
 
  }
 
 
 
  void MyDefMatr()
  {   randomize() ;
      for(int i=0 ; i<m ; i++)
       for(int j=0 ; j<n ; j++)
       M[i][j]=random(10)+5 ;
 
  }
 
 
 
 
 void Sort1(int* a)
 {  int flag , k=n ;
    do
     { flag=0 ;
       k-- ;
       for( int j=0 ; j<k ; j++ )
         if (a[j]>a[j+1])
          {   flag=1 ;
               int t=a[j] ;
                   a[j]=a[j+1] ;
                   a[j+1]=t ;
          }
    }
    while(flag) ;
  }
 
 
 
 
 
 
void MySortMatr()
{ for (int i=0; i<m ; i++ )
    Sort1(*M);
  }
 
 
 
 
 
 void MyMin()
 {
  for(int i=0 ; i<m ; i++)
 {
   int k=0 , imin=0;
 
   for(int j=0 ; j<n ; j++ )
        { if (  (M[i][j])!=(M[i][j+1]))
             k++ ;
             if (k<j)
              imin = M[i][j+1];
              else  break ;
         }
       S[i]=imin ;
}
 }
 
 
 
void MyPrint()
{ for(int i=0;i<m;i++)
        { printf("\n");
          for(int j=0; j<n; j++)
            printf("%5d",M[i][j]);
                }
       printf("\n");
     }
 
 
 
 
 
 
 
 
void FunPrint ()
      { for(int i=0;i<m;i++)
        { printf("\n");
          for(int j=0; j<n; j++)
            printf("%5d",M[i][j]);
            printf("  => %5d",S[i]);
                }
       printf("\n");
     }
 
 
 
 
 
 
 
 
 
 
 
 
 ~DinArr()
   {
     cout <<"\n Destructor works for 2 objects: \n Memory for rows";
     for(int i=0;i<m;i++)
        delete[]M[i];
      cout <<" \n Memory for array of pointers ";
     delete []M;
     getch();
   }
 
 
 } ;
 
 
 
 
 
 
 
 
 
 
 
int main(int argc, char* argv[])
{  // randomize;
   // DinArr ObjArr(random(Nmax));   или
   // DinArr ObjArr(6);     или
   unsigned n,m;
   cout<<"n=" ;
         cin>>n;
   cout<<"m=";
         cin>>m;
   DinArr ObjArr(n,m);
   ObjArr.MyDefMatr();
    ObjArr.MyPrint ();
     ObjArr.MySortMatr();
       ObjArr.MyPrint  ();
    ObjArr.MyMin() ;
      ObjArr.FunPrint  ();
   getch();
   return 0;}
Добавлено через 1 час 7 минут
ВОТ!!!!!!!!!ОН СОРТИРУЕТ МАТРИЦУ!!!!!!!!!!!!!!!!.....только почему небольших размеров..ну это ладно.....НО ФУНКЦИЯ void MyMin() НЕ РАБОТАЕТ!!!ПОЧЕМУ?????.....Ну посмотрите,НУ ПОЖАЛУЙСТА!!!!!


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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <conio.h>
#include <iostream.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
 
 
const Nmax=10;
 
class DinArr
{
 
    int **M , n , m , *S ;
 
  public:
 
 
  DinArr(int k1 , int k2)
  {  n=k1 ; m=k2 ;
     //Создание динамической матрицы
     M=new int*[n];
     for(int i=0; i<n ; i++)
    M[i]=new int[m] ;
    //Создание динамического одномерного массива
    S=new int[n] ;
 
  }
 
 
 
  void MyDefMatr()
  {   randomize() ;
      for(int i=0 ; i<m ; i++)
       for(int j=0 ; j<n ; j++)
       M[i][j]=random(20) ;
 
  }
 
 
 
 
 
 
void MySortMatr()
{
 
 
for (int i=0; i<m ; i++ )
   {
 
 
   int flag , k=n ;
    do
     {
 
      flag=0 ;
       k-- ;
       for( int j=0 ; j<k ; j++ )
         if (M[i][j]>M[i][j+1])
          {   flag=1 ;
               int t=M[i][j] ;
                   M[i][j]=M[i][j+1] ;
                   M[i][j+1]=t ;
          }
    }
    while(flag) ;
  }
   }
  
 
 
 
 
 
 void MyMin()
 {
  for(int i=0 ; i<m ; i++)
 {
   int k=0 , imin=0;
 
   for(int j=0 ; j<n ; j++ )
        { if (  (M[i][j])!=(M[i][j+1]))
             k++ ;
             if (k<j)
              imin = M[i][j+1];
              else  break ;
         }
       S[i]=imin ;
}
 }
 
 
 
void MyPrint()
{ for(int i=0;i<m;i++)
        { printf("\n");
          for(int j=0; j<n; j++)
            printf("%5d",M[i][j]);
                }
       printf("\n");
     }
 
 
 
 
 
 
 
 
void FunPrint ()
      { for(int i=0;i<m;i++)
        { printf("\n");
          for(int j=0; j<n; j++)
            printf("%5d",M[i][j]);
            printf("  => %5d",S[i]);
                }
       printf("\n");
     }
 
 
 
 
 
 
 
 
 
 
 
 
 
 } ;
 
 
 
 
 
 
 
 
 
 
 
int main(int argc, char* argv[])
{  // randomize;
   // DinArr ObjArr(random(Nmax));   или
   // DinArr ObjArr(6);     или
   unsigned n,m;
   cout<<"n=" ;
         cin>>n;
   cout<<"m=";
         cin>>m;
   DinArr ObjArr(n,m);
   ObjArr.MyDefMatr();
    ObjArr.MyPrint ();
     ObjArr.MySortMatr();
       ObjArr.MyPrint  ();
    ObjArr.MyMin() ;
      ObjArr.FunPrint  ();
   getch();
   return 0;}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru