Помощь - Поиск - Пользователи - Календарь
Полная версия: Обработка двумерных массивов > Информатика / Программирование
Образовательный студенческий форум > Другие дисциплины > Информатика / Программирование
D&M@N
Сменить знак минимального элемента, если он находится выше главной диагонали.
У меня тут что то нето...но понять не могу

#include <stdio.h>

main()
{ int i, j, n;
int x[10][10];

// Вв/выв исходных данных:
printf("\n Введите размер матрицы n и элементы: \n");
scanf("%d", &n);
for ( i = 0; i < n; i++)
for ( j = 0; j < n; j++)
scanf("%d", &x[i][j]);

printf("Исходная матрица %d*%d \n", n, n);
for ( i = 0; i < n; i++ )
{ for (j = 0; j < n; j++ )
printf("%d\t", x[i][j]);
printf("\n");
}

// Обработка матрицы:
for ( i = 1; i < n; i++)
for ( j = 0; j <= i+1; j++)
if ( x[i][j] < 0 ) x[i][j] = -x[i][j];

printf("Обработанная матрица: \n");
for ( i = 0; i < n; i++ )
{ for (j = 0; j < n; j++ )
printf("%d\t", x[i][j]);
printf("\n");
}
}
граф Монте-Кристо
Вам нужно сменить знак минимального элемента, если он находится выше главной диагонали, а Вы меняете знаки всех отрицательных элементов.
D&M@N
Цитата(граф Монте-Кристо @ 23.12.2009, 14:12) *

Вам нужно сменить знак минимального элемента, если он находится выше главной диагонали, а Вы меняете знаки всех отрицательных элементов.

а как задать этот минимальный элемент? вот именно в этом у меня и возникла трудность
граф Монте-Кристо
Ну,видимо,его нужно найти в матрице.
D&M@N
// if ( x[i][j] < 0 ) x[i][j] = -x[i][j];

вот тут вот как записать наименьший элемент,
каждый раз самому вводить его что ли?
граф Монте-Кристо
Вам нужно найти в таблице минимальный элемент, и если он находится выше главной диагонали, то сменить его знак. В каждой таблице будет какой-то свой минимальный элемент.
D&M@N
но понять не могу как сделать чтобы его программа искала?.
граф Монте-Кристо
Обычный алгоритм. Заводите переменную, скажем, min, и присваиваете ей значение первого элемента таблицы. Потом проходите по всей таблице и проверяете, если очередной элемент меньше или равен min, то присваиваете min значение этого текущего элемента. После обхода всей таблицы в min будет значение минимального элемента.
Можно, чтобы потом не обходить ещё раз всю таблицу, в поиске запоминать координаты минимального элемента, и тогда просто поменять знак у элемента с этими координатами.
D&M@N
пасибо)
D&M@N
#include<stdio.h>
int mas_in(int **A, int n);
int min(int **A, int n);
int mas_out(int **A, int n);

void main(void)
{

int=mas_in(A, n);
int=mas_out(A,n);
}
int mas_in(int **A, int n);
{
int n, i, j;
int x[][50];

printf("\n BBedite razmer n i massiv: \n");
scanf("d", &n);
for (i=0; i<n; i++)
for (j=0; j<n; j++)
scanf ("&d", &x[i][j]);
}
int min(int **A, int n);
{
int m, n, i, j;
int x[][50];
m=x[0][0];
for (i=1; i<n; i++)
for (j=0; j<=i+1; j++)
if (m < x[i][j]) && (i > j) x[i][j] = -x[i][j];
return m;
}


проверьте плиз.....тут наверно с вызовом функции не то что то..
граф Монте-Кристо
int=mas_in(A, n);
int=mas_out(A,n);
Это что такое?
В функциях у Вас n идёт как переменная, которая идёт в функцию,и в то же время Вы объявляете такую же переменную внутри функции. Так нельзя делать.
Где описана функция mas_out?
Что возвращает функция mas_in?
D&M@N
вот сейчас исправил как мог..оцените....но опять пишет ошибку
declaration terminated incorrectly..подскажите что не так?

#include<stdio.h>
int mas_in(int A[][10]);
int min(int A[][10], int n );
int mas_out(int A[][10], int n);

void main(void)
{ int A[10][10],n;

n=mas_in(A);
mas_out(A, n);

}



int mas_in(int x[][10] );
{
int n, i, j;


printf("\n BBedite razmer n i massiv:\n");
scanf("%d", &n);
for (i=0; i<n; i++)
for (j=0; j<n; j++)
scanf ("%d", &x[i][j]);
return n;
}


void min(int x[][10])
{
int m, n, i, j, im=0, jm=1;

m=x[0][1];

for (i=0; i<n-1; i++)
for (j=i+1; j<n; j++)
if (m > x[i][j])
{ m=x[i][j]; im=i, jm=j; }
x[im][jm]*= -1;

void mas_out( A[][10], n);
{
printf("\n obrabotannaya matriza: \n");
for (i=0; i<n; i++)
for (j=0; j<n; j++)
printf ("%d\t", x[i][j]);
printf ("\n") }

}
граф Монте-Кристо
Насколько я помню, в самом начале при объявлении функции в скобках нужно писать только типы передаваемых аргументов.
В функции min нужно поиск делать по всей таблице,а Вы ищете только по половине.Да,к тому же,закрывающую скобку пропустили. И в саму эту функцию передаёте один аргумент, хотя выше описали,что хотите передавать два.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.