Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++] сделатьпрограмму указатели


Автор: maskan 18.1.2011, 20:06
подскажите как из этой программы сделать программу с указателями
Код

#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;
     }

Программа в каждой строке выбирает элемент с наименьшим значением, затем среди этих чисел выбирает наибольшее и выводит индексы элемента с найденным значением.

Автор: Teleport 18.1.2011, 21:19
Подсказываю - для начала нужно прочитать и освоить литературу о работе с указателями. 

Автор: maskan 18.1.2011, 21:24
я читал, я просто не понимая как это применить в этой программе, я весь день сегодня пробовал написать но у меня ничего не получатся

Автор: kemiisto 18.1.2011, 21:29
Цитата(maskan @  18.1.2011,  18:06 Найти цитируемый пост)
подскажите как из этой программы сделать программу с указателями

Добавьте куда угодно строчку, например:
Код

int* ololo;

 smile 

Автор: mes 18.1.2011, 21:45
Цитата(maskan @  18.1.2011,  20:24 Найти цитируемый пост)
я читал, я просто не понимая как это применить в этой программе, я весь день сегодня пробовал написать но у меня ничего не получатся


Цитата(maskan @  18.1.2011,  19:06 Найти цитируемый пост)
    int a[n][m];

Код

int a[n][m];
int * p = a;

Цитата(maskan @  18.1.2011,  19:06 Найти цитируемый пост)
a[i][j];

Код

p+i*4+j;


Автор: maskan 18.1.2011, 21:47
не прокатывает, там сложнее

Добавлено через 12 минут и 18 секунд
ничего не получается

Автор: maskan 18.1.2011, 22:02
Цитата

int a[n][m];
int * p = a;

ошибка вылазиет

Автор: bsa 18.1.2011, 23:25
maskan, конечно вылазит. по стандарту нельзя создавать массивы неопределенного на этапе компиляции размера.

Автор: Alchimik 19.1.2011, 08:34
Я так понимаю вместо этого:
Код

    for (  i=0; i<n; i++) {
        for (j=0; j<m; j++) {
            cin >>a[i][j];
        } 
        cout << endl;
    }

надо написать что то типо этого:
Код

    for ( int (*p)[n]=a; p<(a+m); p++) {
        for (int *j=*p; j<(*p)+n; j++) {
            cin >> *j;
        } 
        cout << endl;
    }

Автор: maskan 19.1.2011, 11:43
кто нибудь может рабочую программу написать с указателями. Я ни как не могу понять как с ними работать

Автор: Alchimik 19.1.2011, 18:44
Наверно как то так:
Код

#include <iostream>
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 ( int (*p)[n]=a; p<(a+m); p++) {
        for (int *j=*p; j<(*p)+n; j++) {
            cin >> *j;
        } 
        cout << endl;
    }
    
    int str_min[n];
    for( i=0; i<n; i++)
    {
        min=**(a+i*n);
        for(int j=0; j<m; j++)
            if( *(*(a+i)+j)<min ) min=*(*(a+i)+j);
        *(str_min+i)=min;
    }

    max=*str_min;
    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 << "Index: " << i_max << "  " << j_max << endl;
    cout << "Value: " << *(*(a+i_max)+j_max) << endl;
    system ("pause");                                  
    return 0;
}

Автор: bsa 19.1.2011, 21:46
Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)