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

указатели - C++

Восстановить пароль Регистрация
 
maskan
2 / 2 / 0
Регистрация: 15.01.2011
Сообщений: 43
18.01.2011, 11:56     указатели #1
подскажите как из этой программы сделать программу с указателями
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
#include <iostream.h>
using namespace std;
 
int main()
{
    const int m=4, n=4;
    int min,max,i_max,j_max,i,j;
        int a[n][m];
    cout << "Matrix:\n";
    for ( i=0; i<n; i++) {
        for ( j=0; j<m; j++) {
            cin>>a[i][j];
                      } cout <<endl;}
        int str_min[n];
              for( i=0;i<n;i++)
        {
                min=a[i][0];
                for(int j=0;j<m;j++)
                        if(a[i][j]<min)
                                min=a[i][j];
                str_min[i]=min;
        }
        max=str_min[0];
        for( i=0;i<n;i++)
                if(str_min[i]>max)
                        max=str_min[i];   
        for( i=0;i<n;i++)
                for( j=0;j<m;j++)
                        if (a[i][j]==max){
                                i_max=i;
                                j_max=j; }
      for ( i=0; i<n; i++) {
        for ( j=0; j<m; j++) 
           cout<<a[i][j]<<" ";
                        cout << endl; }
                                                  cout << endl; 
  cout<< "ind"<< i_max<< j_max<< "/n";
 cout<<"Element"<<a[i_max][j_max];
       system ("pause");                                  
        return 0;
     }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2011, 11:56     указатели
Посмотрите здесь:

C++ Указатели
Указатели C++
Указатели C++
Указатели C++
C++ указатели
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
18.01.2011, 12:29     указатели #2
Кажется так:
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
#include <iostream.h>
using namespace std;
int main()
{
 const int m=4, n=4;
 int min,max,i_max,j_max,i;
 int a[n][m];
 int *p1, *end1;
 int str_min[n];
 int *p2, *end2;
 cout << "Matrix:\n";
 for ( i=0; i<n; ++i)
 {
  for (p1=a[i][0], end1=p1+m-1; p1<=end1; ++p1)
  {
   cin>>*p1;
  }
  cout <<endl;
 } 
 for(p2=str_min[0], i=0;i<n;++i,++p2)
 {
  min=a[i][0];
  end1=a[i][0]+m-1;
  for(p1=a[i][0]; p1<=end1; ++p1)
  {
   if (*p1<min)
   {
     min=*p1;
   }
   *p2=min;
  }
 } 
 max=str_min[0];
 for(p2=str_min[0], end2=p2+n-1; p2<=end2; ++p2)
 {
  if(*p2>max)
  {
   max=*p2;
  }
 }
 for( i=0;i<n;i++)
 {
   for(p1=a[j][0], end1=p1+m-1; p1<=end1; ++p1)
   {
    if (*p1==max)
    {
     i_max=i;
     j_max=*p1-a[j][0];
   }
  }
 }
 for ( i=0; i<n; i++)
 {
   for (p1=a[j][0], end1=p1+m-1; p1<=end1; ++p1)
   {
     cout<<*p1<<" ";
   }
   cout << endl;
  }   
  cout << endl;
 }
 cout<< "ind"<< i_max<< j_max<< "\n";
 cout<<"Element"<<a[i_max][j_max];
 system ("pause");                                  
 return 0;
}
.
maskan
2 / 2 / 0
Регистрация: 15.01.2011
Сообщений: 43
18.01.2011, 13:07  [ТС]     указатели #3
а попроще никак нельзя
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
18.01.2011, 13:16     указатели #4
А твой вариант разве проще? Я только заменил индексацию массивов на арифметику указателей. Причём, в двумерном массиве часть индексации всё равно осталась.

Добавлено через 3 минуты
Пость простейшую прогу по линейным массивам, я тебе к ней переделаю арифметику указателей. Читай, сравнивай, думай, почему арифметика указателей в данном случае такая, потом пость следующую прогу, она может быть чуть сложнее. Так нет же, ты умудрился начать с минимакса на плоскости.
maskan
2 / 2 / 0
Регистрация: 15.01.2011
Сообщений: 43
18.01.2011, 13:25  [ТС]     указатели #5
Цитата Сообщение от taras atavin Посмотреть сообщение
for(p1=a[j][0], end1=p1+m-1; p1<=end1; ++p1)
здесь ошибка 43 D:\ïðîãè\óêàçàò.cpp `j' undeclared (first use this function) не могу понять какая.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
18.01.2011, 13:29     указатели #6
Цитата Сообщение от maskan Посмотреть сообщение
C++
1
a[j][0]
очепятка, должно быть
C++
1
a[i][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
#include <iostream.h>
using namespace std;
int main()
{
 const int m=4, n=4;
 int min,max,i_max,j_max,i;
 int a[n][m];
 int *p1, *end1;
 int str_min[n];
 int *p2, *end2;
 cout << "Matrix:\n";
 for ( i=0; i<n; ++i)
 {
  for (p1=a[i][0], end1=p1+m-1; p1<=end1; ++p1)
  {
   cin>>*p1;
  }
  cout <<endl;
 } 
 for(p2=str_min[0], i=0;i<n;++i,++p2)
 {
  min=a[i][0];
  end1=a[i][0]+m-1;
  for(p1=a[i][0]; p1<=end1; ++p1)
  {
   if (*p1<min)
   {
     min=*p1;
   }
   *p2=min;
  }
 } 
 max=str_min[0];
 for(p2=str_min[0], end2=p2+n-1; p2<=end2; ++p2)
 {
  if(*p2>max)
  {
   max=*p2;
  }
 }
 for( i=0;i<n;i++)
 {
   for(p1=a[i][0], end1=p1+m-1; p1<=end1; ++p1)
   {
    if (*p1==max)
    {
     i_max=i;
     j_max=*p1-a[j][0];
   }
  }
 }
 for ( i=0; i<n; i++)
 {
   for (p1=a[i][0], end1=p1+m-1; p1<=end1; ++p1)
   {
     cout<<*p1<<" ";
   }
   cout << endl;
  }   
  cout << endl;
 }
 cout<< "ind"<< i_max<< j_max<< "\n";
 cout<<"Element"<<a[i_max][j_max];
 system ("pause");                                  
 return 0;
}.
maskan
2 / 2 / 0
Регистрация: 15.01.2011
Сообщений: 43
18.01.2011, 13:34  [ТС]     указатели #7
исправил, ошибок нет, но прога не работат.Но все равно спасибо. попытаюсь исправить
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
18.01.2011, 13:35     указатели #8
Я мог и операторные скобки переврать.
maskan
2 / 2 / 0
Регистрация: 15.01.2011
Сообщений: 43
18.01.2011, 13:40  [ТС]     указатели #9
с одной ты переврал, но не в этом дело, ошибок нет, прост прога не работат. запускается и винда выдает сообщение что прога неправильно работает.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
18.01.2011, 13:43     указатели #10
Что именно она пишет?
maskan
2 / 2 / 0
Регистрация: 15.01.2011
Сообщений: 43
18.01.2011, 13:46  [ТС]     указатели #11
прекращена работа программы
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
18.01.2011, 13:55     указатели #12
Выполнила недопустимую операцию и будет закрыта? Отлаживать умеешь? Ремируй всё, потом по одной строчке разремируй.

Добавлено через 3 минуты
Ещё один глюк в строке № 48:
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
#include <iostream.h>
using namespace std;
int main()
{
 const int m=4, n=4;
 int min,max,i_max,j_max,i;
 int a[n][m];
 int *p1, *end1;
 int str_min[n];
 int *p2, *end2;
 cout << "Matrix:\n";
 for ( i=0; i<n; ++i)
 {
  for (p1=a[i][0], end1=p1+m-1; p1<=end1; ++p1)
  {
   cin>>*p1;
  }
  cout <<endl;
 } 
 for(p2=str_min[0], i=0;i<n;++i,++p2)
 {
  min=a[i][0];
  end1=a[i][0]+m-1;
  for(p1=a[i][0]; p1<=end1; ++p1)
  {
   if (*p1<min)
   {
     min=*p1;
   }
   *p2=min;
  }
 } 
 max=str_min[0];
 for(p2=str_min[0], end2=p2+n-1; p2<=end2; ++p2)
 {
  if(*p2>max)
  {
   max=*p2;
  }
 }
 for( i=0;i<n;i++)
 {
   for(p1=a[j][0], end1=p1+m-1; p1<=end1; ++p1)
   {
    if (*p1==max)
    {
     i_max=i;
     j_max=p1-a[j][0];
   }
  }
 }
 for ( i=0; i<n; i++)
 {
  for (p1=a[i][0], end1=p1+m-1; p1<=end1; ++p1)
  {
    cout<<*p1<<" ";
  }
  cout << endl;
 }
 cout << endl;
 cout<< "ind"<< i_max<< j_max<< "\n";
 cout<<"Element"<<a[i_max][j_max];
 system ("pause");                                  
 return 0;
}
.
maskan
2 / 2 / 0
Регистрация: 15.01.2011
Сообщений: 43
18.01.2011, 13:56  [ТС]     указатели #13
Цитата Сообщение от taras atavin Посмотреть сообщение
Выполнила недопустимую операцию и будет закрыта?
вообщето нет

Цитата Сообщение от taras atavin Посмотреть сообщение
Отлаживать умеешь?
да
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
18.01.2011, 14:00     указатели #14
Подозреваю, что у тебя теперь окно будет закрываться по
Цитата Сообщение от taras atavin Посмотреть сообщение
C++
1
return 0;
. Попробуй вместо
Цитата Сообщение от taras atavin Посмотреть сообщение
system ("pause");
воткнуть
C++
1
cin>>c;
, а выше добавить
C++
1
char c;
.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2011, 16:04     указатели
Еще ссылки по теме:

C++ Указатели
Указатели С++ C++
C++ Указатели

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

Или воспользуйтесь поиском по форуму:
maskan
2 / 2 / 0
Регистрация: 15.01.2011
Сообщений: 43
18.01.2011, 16:04  [ТС]     указатели #15
не то

Добавлено через 1 час 47 минут
"Ваша программа вызвала нарушение доступа (ошибку сегментации)" что это значит?
Yandex
Объявления
18.01.2011, 16:04     указатели
Ответ Создать тему
Опции темы

Текущее время: 11:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru