....
for(int i = 0; i < n; [COLOR="Red"]i++[/COLOR])
....
for(int j = 0; j < m; [COLOR="Red"]j++[/COLOR])
...
найти минимум среди максимальных элементов столбцов матрицы c++
не работает по столбикам вылетает ошибка:confused:
Цитата:
int min = a[0][0];
for(int i = 0; i < n; ++i)
{
int max = a[0][j];
for(int j = 0; j < m; ++j)
if(a[j] > max)
max = a[j];
if(min < max)
min = max;
}
cout<<min;
for(int i = 0; i < n; ++i)
{
int max = a[0][j];
for(int j = 0; j < m; ++j)
if(a[j] > max)
max = a[j];
if(min < max)
min = max;
}
cout<<min;
Цитата: ssovec
дана матрица а[x][y]; найти минимум среди максимальных элементов столбцов
не работает по столбикам вылетает ошибка:confused:
не работает по столбикам вылетает ошибка:confused:
Вы написали полный бред:
1)давайте придерживаться общих стандартов
Код:
2)
Код:
int max = a[0][COLOR="Red"][j][/COLOR];
Здесь у вас j не определена, поэтому ошибка инициализации переменной
Код:
for(int j = 0; j < m;j++)
а здесь уже инициализирована
Код:
....
int max=0;
for(int j = 0; j < m; j++)
{
max = a[0][j];
for(int i = 0; i < n; i++)
{
if(a[j] > max)
max = a[j];
......
}
....
}
int max=0;
for(int j = 0; j < m; j++)
{
max = a[0][j];
for(int i = 0; i < n; i++)
{
if(a[j] > max)
max = a[j];
......
}
....
}
так наверно правильней, тем более, что объявление переменных в циклах не есть хорошо
Код:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main()
{
clrscr;
printf("nachalo massiva\n");
const x=3,y=3;
int i,j;
int a[x][y];
a[0][0]=1; a[0][1]=-3; a[0][2]=-2;
a[1][0]=0; a[1][1]=5;a[1][2]=4;
a[2][0]=2; a[2][1]=3; a[2][2]=2;
for (i=0;i<x;i++)
{
printf("\n");
for (j=0;j<y;j++)
printf("%i",a[j],"\n"); printf("\n");
}
printf("\end massiv\n");
int min,max;
min=a[0][0];//нахождение минимума среди максимумов в столбах
for (j=0;j<y;j++)
{
max=a[0][j];
for (i=0;i<x;i++)
{
if (a[j]>max)
max=a[j];
if (min<max)
min=max;
}
}
printf("%i",min,");
getch();
}
#include<conio.h>
#include<stdlib.h>
void main()
{
clrscr;
printf("nachalo massiva\n");
const x=3,y=3;
int i,j;
int a[x][y];
a[0][0]=1; a[0][1]=-3; a[0][2]=-2;
a[1][0]=0; a[1][1]=5;a[1][2]=4;
a[2][0]=2; a[2][1]=3; a[2][2]=2;
for (i=0;i<x;i++)
{
printf("\n");
for (j=0;j<y;j++)
printf("%i",a[j],"\n"); printf("\n");
}
printf("\end massiv\n");
int min,max;
min=a[0][0];//нахождение минимума среди максимумов в столбах
for (j=0;j<y;j++)
{
max=a[0][j];
for (i=0;i<x;i++)
{
if (a[j]>max)
max=a[j];
if (min<max)
min=max;
}
}
printf("%i",min,");
getch();
}
Цитата: ssovec
вот специально в си перевел выдаёт 5 а должно выдавать 2 с индексом а[2][0] компилятор не ругается
Косяк в алгоритме самом, у вас он работает так:
1) 1 столбец максимальный =2, 2>1 минимальный=2
2) 2 столбец максимальный =5, 5>2 минимальный=5
3) 3 столбец максимальный =4, 4>5 минимальный=5
я бы советовал сделать еще 1 массив для максимальных, в нем искать минимальный, я бы сделал так:
Код:
#include<iostream>
#include<ctime>
using namespace std;
int main(int argc, char* argv[])
{
srand((unsigned)time(NULL));
int row=rand()%5+2;
int column=rand()%5+2;
int **arr=new int*[row];
for(int idx=0;idx<row;idx++)
arr[idx]=new int[column];
for(int idx=0;idx<row;idx++)
for(int jdx=0;jdx<column;jdx++)
arr[idx][jdx]=rand()%10;
cout<<"Matrix:"<<endl;
for(int idx=0;idx<row;idx++)
{
for(int jdx=0;jdx<column;jdx++)
cout<<arr[idx][jdx]<<"\t";
cout<<endl;
}
int *mas=new int[column];
int count=0, temp=0;
cout<<"\nMaximums:"<<endl;
for(int jdx=0;jdx<column;jdx++)
{
temp=arr[0][jdx];
for(int idx=0;idx<row;idx++)
if(arr[idx][jdx]>temp)temp=arr[idx][jdx];
mas[count]=temp;
count++;
}
temp=mas[0];
for(int idx=0;idx<column;idx++)
{
cout<<mas[idx]<<"\t";
if(mas[idx]<temp)temp=mas[idx];
}
cout<<"\nMinimum of column maximum = "<<temp;
for(int idx=0;idx<row;idx++)
delete arr[idx];
delete []arr;
delete []mas;
cout<<endl;
system("pause");
return 0;
}
#include<ctime>
using namespace std;
int main(int argc, char* argv[])
{
srand((unsigned)time(NULL));
int row=rand()%5+2;
int column=rand()%5+2;
int **arr=new int*[row];
for(int idx=0;idx<row;idx++)
arr[idx]=new int[column];
for(int idx=0;idx<row;idx++)
for(int jdx=0;jdx<column;jdx++)
arr[idx][jdx]=rand()%10;
cout<<"Matrix:"<<endl;
for(int idx=0;idx<row;idx++)
{
for(int jdx=0;jdx<column;jdx++)
cout<<arr[idx][jdx]<<"\t";
cout<<endl;
}
int *mas=new int[column];
int count=0, temp=0;
cout<<"\nMaximums:"<<endl;
for(int jdx=0;jdx<column;jdx++)
{
temp=arr[0][jdx];
for(int idx=0;idx<row;idx++)
if(arr[idx][jdx]>temp)temp=arr[idx][jdx];
mas[count]=temp;
count++;
}
temp=mas[0];
for(int idx=0;idx<column;idx++)
{
cout<<mas[idx]<<"\t";
if(mas[idx]<temp)temp=mas[idx];
}
cout<<"\nMinimum of column maximum = "<<temp;
for(int idx=0;idx<row;idx++)
delete arr[idx];
delete []arr;
delete []mas;
cout<<endl;
system("pause");
return 0;
}
Код:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main()
{
clrscr;//видимо borland 3.0
printf("nachalo massiva\n");
const [COLOR="Red"]int[/COLOR] x=3,y=3;//тип то указывать надо
[COLOR="Red"]int i=0,j=0;[/COLOR]//желательно чтобы переменные равнялись чему-нибудь
//а можно и лучше так int a[x][y]={1,-3,-2,0,5,4,2,3,2};
int a[x][y];
a[0][0]=1; a[0][1]=-3; a[0][2]=-2;
a[1][0]=0; a[1][1]=5;a[1][2]=4;
a[2][0]=2; a[2][1]=3; a[2][2]=2;
for (i=0;i<x;i++)
{
printf("\n");
for (j=0;j<y;j++)
printf("%i",a[j],"\n"); printf("\n");
}
printf("end massiv\n");
[COLOR="Red"]int min=0,max=0;[/COLOR]
//поменять чуть-чуть и все работает :)
[COLOR="SeaGreen"]for (j=0;j<y;j++)
{
max=a[0][j];
for (i=0;i<x;i++)
if (a[j]>max)max=a[j];
if(j==0)min=max;//если это 1 макс вообще, запоминаем его для сравнения
else if(min>max)min=max;
}[/COLOR]
[COLOR="Red"]printf("%i",min);[/COLOR]//тут ошибка была
getch();
}
#include<conio.h>
#include<stdlib.h>
void main()
{
clrscr;//видимо borland 3.0
printf("nachalo massiva\n");
const [COLOR="Red"]int[/COLOR] x=3,y=3;//тип то указывать надо
[COLOR="Red"]int i=0,j=0;[/COLOR]//желательно чтобы переменные равнялись чему-нибудь
//а можно и лучше так int a[x][y]={1,-3,-2,0,5,4,2,3,2};
int a[x][y];
a[0][0]=1; a[0][1]=-3; a[0][2]=-2;
a[1][0]=0; a[1][1]=5;a[1][2]=4;
a[2][0]=2; a[2][1]=3; a[2][2]=2;
for (i=0;i<x;i++)
{
printf("\n");
for (j=0;j<y;j++)
printf("%i",a[j],"\n"); printf("\n");
}
printf("end massiv\n");
[COLOR="Red"]int min=0,max=0;[/COLOR]
//поменять чуть-чуть и все работает :)
[COLOR="SeaGreen"]for (j=0;j<y;j++)
{
max=a[0][j];
for (i=0;i<x;i++)
if (a[j]>max)max=a[j];
if(j==0)min=max;//если это 1 макс вообще, запоминаем его для сравнения
else if(min>max)min=max;
}[/COLOR]
[COLOR="Red"]printf("%i",min);[/COLOR]//тут ошибка была
getch();
}