Определить индексы наибольшего, отрицательного, элемента матрицы CC{m, n} и заменить найденный элемент числом 5.60Е+05.
Что не так с программой?
Вот такой код:
#include
#include
#include
#include
main()
{
int CC[20][20];
int n, m;
int i,j;
int max = 0;
float k = 5.60E+05;
int row = 0;
int col = 0;
printf("Vvedite kol-vo strok: ");
scanf("%d", &n);
printf("Vvedite kol-vo stolbcov: ");
scanf("%d", &m);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("Vvedite element matrici[%d][%d]: ",i,j);
scanf("%d", &CC[i][j]);
}
}
printf("massiv\n");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("%4d",CC[i][j]);
}
printf("\n");
}
for(i=0;i<n;i++){
for(j=0;j<m;j++) {
if((CC[i][j]<0)&&(CC[i][j]>max))
{
max=CC[i][j];
CC[i][j]=max;
max=CC[i][j];
CC[i][j]=k
k=CC[i][j];
col=i;
row=j;
}
}
}
printf("Element matrici %4d\n", CC[i][j]);
printf("col %d\n", col);
printf("row %d\n", row);
getch();
}

#include <stdio.h>
#include <stdlib.h>
int print_array(float** A, int n, int m)
{
int i, j;
printf("massiv:\n");
for(i = 0; i < n; i++)
{
for(j = 0; j < m; j++)
printf("%10.2f", A[i][j]);
printf("\n");
}
return 0;
}
int main()
{
float** A;
int n, m;
int r = -1, c;
int i, j;
printf("Vvedite kol-vo strok: ");
scanf("%d", &n);
printf("Vvedite kol-vo stolbcov: ");
scanf("%d", &m);
A = (float**)malloc(n * sizeof(float*));
for(i = 0; i < n; i++)
A[i] = (float*)malloc(m * sizeof(float));
printf("Vvedite elementy matrici:\n");
for(i = 0; i < n; i++)
for(j = 0; j < m; j++)
{
printf("A[%d][%d] = ", i, j);
scanf("%f", &A[i][j]);
if(r == -1 && A[i][j] < 0)
{
r = i;
c = j;
}
}
print_array(A, n, m);
if(r != -1)
{
for(i = 0; i < n; i++)
for(j = 0; j < m; j++)
if(A[i][j] < 0 && A[i][j] > A[r][c])
{
r = i;
c = j;
}
printf("Element matrici = %f\n", A[r][c]);
printf("row = %d\n", r);
printf("col = %d\n", c);
A[r][c] = 5.60e+05;
print_array(A, n, m);
}
else
printf("V massive net otricatelnyh elementov.\n");
for(i = 0; i < n; i++)
free(A[i]);
printf("Press Enter key for continue...");
getchar(); getchar();
return 0;
}
#include "limits.h"
...
int max=INT_MIN;
и вместо
if((CC[i][j]<0)&&(CC[i][j]>max))
{
max=CC[i][j];
CC[i][j]=max;
max=CC[i][j];
CC[i][j]=k
k=CC[i][j];
col=i;
row=j;
надо
if(CC[i][j]<0 && CC[i][j]>max){max=CC[i][j];}
а потом уже в новом цикле по матрице заменить все такие элементы на 5.60Е+05.
А col и row вообще не нужны.
max должен даже изначально быть меньше нуля