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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
maskan
2 / 2 / 0
Регистрация: 15.01.2011
Сообщений: 43
#1

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

18.01.2011, 11:56. Просмотров 558. Ответов 14
Метки нет (Все метки)

подскажите как из этой программы сделать программу с указателями
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++
Недавно начал изучать Си, перешел с Delphi. Много непонятного и пока процесс идет медленно. Накачал литературы, буду изучать) Щас...

Через указатели на указатели посчитать сумму двух чисел и записать в третье - C++
1. Через указатели на указатели посчитать сумму двух чисел и записать в третье. 2. Написать примитивный калькулятор, пользуясь только...

Есть три переменные. Используя указатели на указатели, поменять значение максимальной и минимальной переменной - C++
Мой код. #include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include&lt;iomanip&gt; using namespace std; void min_max(int*pa, int*pb,...

Указатели на указатели с числами. Почему можно присвоить число в 4-ый элемент, если массив из 2 элементов? - C++
Есть массив int **mas; mas=new int*; // выделил место под пять строк, верно ? mas=new int;// выделил для первой строки матрицы два...

Отсортировать массив и вывести на экран (массивы и указатели на указатели) - C++
Даны массивы F-фамилий студентов и S-результаты сессии (5 оценок) , причем s- результат сессии F студента. Отсортировать массив S по...

Указатели на слонов или А зачем нужны указатели? - C++
Знаю что таких вопросов было уйма, но я так и не нашел ответа на свой вопрос. Для чего нужны указатели? Что такое указатели я знаю, это...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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
Ушёл с форума.
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
Ушёл с форума.
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
Ушёл с форума.
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
Ушёл с форума.
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
Ушёл с форума.
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
Ушёл с форума.
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;
.
maskan
2 / 2 / 0
Регистрация: 15.01.2011
Сообщений: 43
18.01.2011, 16:04  [ТС] #15
не то

Добавлено через 1 час 47 минут
"Ваша программа вызвала нарушение доступа (ошибку сегментации)" что это значит?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2011, 16:04
Привет! Вот еще темы с ответами:

Написать программу сортировки через указатели на указатели - C++
Вот моя программа #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;string&gt; using namespace std; //Сортировка &quot;пузырьком&quot;. ...

Используются ли на практике указатели на указатели объектов? - C++
Имеются ввиду указатели именно на объекты, а не динамические массивы. Например такой: Object** obj; А как насчёт такого: Object***...

Указатели и массивы. Указатели и функции - C++
Никак не разберусь с указателями на функцию. Пишу в Visual Studio. Надо написать функцию Compress() с использованием указателей, которая...

Константные указатели и указатели на константу - C++
Чем они, собственно говоря, отличаются? Поясните, пожалуйста. Не знаю, как так получилось, что в разных источниках - разные...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.01.2011, 16:04
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru