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


Автор: npocTo 13.5.2009, 21:00
Задача состоит в том:
Найти наибольший и наименьший  элемент матрицы B(N x M) и поменять их местами.После чего вывести на экран матрицу.
Огромное спасибо за помосчь
Попытался набросать программу
Код

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main()
int matr [n] [m];
int i
for (i=0; i<n; i++)
cin>>n;
max=n[0]; m max=0;
min=n[0]; m min=0;
for (i=1; i<n; i++) 
{if (n>max) {max=A; m max=i;}
{if (n<min) {min=A; m min=i;}
Z=max; max=min; min=z; 
n[m max] = n[m min];
n[m min] = max;
getch();




Автор: Chazer 13.5.2009, 21:33
Код

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
int main(){
    const int n=5, m=4;
    int matr[n][m];

    srand(time(NULL));//инициализация генератора случ.чисел

    //заполнение матрицы
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
            matr[i][j]=rand()%100;

    //выводим матрицу
    for(int i=0;i<n;i++){
                for(int j=0;j<m;j++)
            cout<<matr[i][j]<<'\t';
        cout<<endl;
    }

    int MaxX=0,MaxY=0,MinX=0,MinY=0;//координаты min и max

    //поиск min и max
    for(int i=0;i<n;i++)
                for(int j=0;j<m;j++){
            if(matr[i][j]<matr[MinX][MinY]){
                MinX=i;
                MinY=j;
            }
            if(matr[i][j]>matr[MaxX][MaxY]){
                                MaxX=i;
                                MaxY=j;
            }
        }

    //меняем местами max и min
    int tmp=matr[MaxX][MaxY];
    matr[MaxX][MaxY]=matr[MinX][MinY];
    matr[MinX][MinY]=tmp;

    cout<<"===================================="<<endl;

     //выводим матрицу
        for(int i=0;i<n;i++){
                for(int j=0;j<m;j++)
                        cout<<matr[i][j]<<'\t';
                cout<<endl;
        }
}

З.Ы. писал под gcc на linux, возможно нужно будет что-то поправить для совместимости с Borland 3.1, но думаю, алгоритм понятен.

Автор: npocTo 13.5.2009, 22:14
с программой разобрался,все находит и меняет. Но рисует какие то отвлеченные цифры напр матрица 2 x 2, рисует -32455; -22 ит.д.

Автор: Chazer 13.5.2009, 22:25
Знач, где-то выходишь за пределы матрицы. Кинь код.

Автор: npocTo 13.5.2009, 22:29
Код

#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
//using namespace std
int main()
{int n,m,max,min,maxi,maxj,mini,minj,i,j;
int matr[4][4];
cout<<"\n Kolu4ecTBo cTpoK u CToL6coB:";
cin>>n>>m;
cout<<"\n";
//int i,j;
int **a=new int *[n];
for(i=0;i<n;i++)
a[i]=new int[m];
cout<<"Vvedite elementbI:";
for(i=0;i<n;i++)
for (j=0;j<m;j++)
cin>>a[i][j];
max=a[1][1];           //max
maxi = 1;
maxj = 1;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{ if (a[i][j]>max)
{
max=a[i][j];
maxi = i;
maxj = j;
}
}
cout<<"Max:"<<max;
min=a[1][1];              //min
mini = 1;
minj = 1;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{ if (a[i][j]<min)
{
min=a[i][j];
mini = i;
minj = j;
}
}
for(i=0;i<n;i++){
for(j=0;j<m;j++)
cout<<matr[i][j]<<'\t';
cout<<endl;
}
cout<<"Min:"<<min;
max = a[mini][minj];           //меняем местами
a[mini][minj] = a[maxi][maxj];
a[maxi][maxj] = max;
getch();
return 0;
}


Я впихнул перед заменой шоб попробовать что будет выводить

Автор: Chazer 13.5.2009, 23:01
Line 48: зачем ты выводишь matr[i][j], если у тебя a[i][j]? А в matr не проинициализированные значения, поэтому у тя -32455; -22 и т.д.

Автор: npocTo 13.5.2009, 23:10
 при замене matr[i][j], на a[i][j] все стало норм. показывать
Спасибо за помосчъ

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