![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
D&M@N |
![]()
Сообщение
#1
|
Школьник ![]() Группа: Продвинутые Сообщений: 12 Регистрация: 20.12.2009 Город: Киров Учебное заведение: ВятГУ Вы: студент ![]() |
Сменить знак минимального элемента, если он находится выше главной диагонали.
У меня тут что то нето...но понять не могу #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"); } } |
![]() ![]() |
граф Монте-Кристо |
![]()
Сообщение
#2
|
Доцент ![]() ![]() ![]() ![]() ![]() ![]() Группа: Преподаватели Сообщений: 3 840 Регистрация: 27.9.2007 Из: Старый Оскол Город: Москва Учебное заведение: МФТИ/МАИ Вы: другое ![]() |
Вам нужно сменить знак минимального элемента, если он находится выше главной диагонали, а Вы меняете знаки всех отрицательных элементов.
|
D&M@N |
![]()
Сообщение
#3
|
Школьник ![]() Группа: Продвинутые Сообщений: 12 Регистрация: 20.12.2009 Город: Киров Учебное заведение: ВятГУ Вы: студент ![]() |
|
граф Монте-Кристо |
![]()
Сообщение
#4
|
Доцент ![]() ![]() ![]() ![]() ![]() ![]() Группа: Преподаватели Сообщений: 3 840 Регистрация: 27.9.2007 Из: Старый Оскол Город: Москва Учебное заведение: МФТИ/МАИ Вы: другое ![]() |
Ну,видимо,его нужно найти в матрице.
|
D&M@N |
![]()
Сообщение
#5
|
Школьник ![]() Группа: Продвинутые Сообщений: 12 Регистрация: 20.12.2009 Город: Киров Учебное заведение: ВятГУ Вы: студент ![]() |
// if ( x[i][j] < 0 ) x[i][j] = -x[i][j];
вот тут вот как записать наименьший элемент, каждый раз самому вводить его что ли? |
граф Монте-Кристо |
![]()
Сообщение
#6
|
Доцент ![]() ![]() ![]() ![]() ![]() ![]() Группа: Преподаватели Сообщений: 3 840 Регистрация: 27.9.2007 Из: Старый Оскол Город: Москва Учебное заведение: МФТИ/МАИ Вы: другое ![]() |
Вам нужно найти в таблице минимальный элемент, и если он находится выше главной диагонали, то сменить его знак. В каждой таблице будет какой-то свой минимальный элемент.
|
D&M@N |
![]()
Сообщение
#7
|
Школьник ![]() Группа: Продвинутые Сообщений: 12 Регистрация: 20.12.2009 Город: Киров Учебное заведение: ВятГУ Вы: студент ![]() |
но понять не могу как сделать чтобы его программа искала?.
|
граф Монте-Кристо |
![]()
Сообщение
#8
|
Доцент ![]() ![]() ![]() ![]() ![]() ![]() Группа: Преподаватели Сообщений: 3 840 Регистрация: 27.9.2007 Из: Старый Оскол Город: Москва Учебное заведение: МФТИ/МАИ Вы: другое ![]() |
Обычный алгоритм. Заводите переменную, скажем, min, и присваиваете ей значение первого элемента таблицы. Потом проходите по всей таблице и проверяете, если очередной элемент меньше или равен min, то присваиваете min значение этого текущего элемента. После обхода всей таблицы в min будет значение минимального элемента.
Можно, чтобы потом не обходить ещё раз всю таблицу, в поиске запоминать координаты минимального элемента, и тогда просто поменять знак у элемента с этими координатами. |
D&M@N |
![]()
Сообщение
#9
|
Школьник ![]() Группа: Продвинутые Сообщений: 12 Регистрация: 20.12.2009 Город: Киров Учебное заведение: ВятГУ Вы: студент ![]() |
пасибо)
|
D&M@N |
![]()
Сообщение
#10
|
Школьник ![]() Группа: Продвинутые Сообщений: 12 Регистрация: 20.12.2009 Город: Киров Учебное заведение: ВятГУ Вы: студент ![]() |
#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; } проверьте плиз.....тут наверно с вызовом функции не то что то.. |
граф Монте-Кристо |
![]()
Сообщение
#11
|
Доцент ![]() ![]() ![]() ![]() ![]() ![]() Группа: Преподаватели Сообщений: 3 840 Регистрация: 27.9.2007 Из: Старый Оскол Город: Москва Учебное заведение: МФТИ/МАИ Вы: другое ![]() |
int=mas_in(A, n);
int=mas_out(A,n); Это что такое? В функциях у Вас n идёт как переменная, которая идёт в функцию,и в то же время Вы объявляете такую же переменную внутри функции. Так нельзя делать. Где описана функция mas_out? Что возвращает функция mas_in? |
D&M@N |
![]()
Сообщение
#12
|
Школьник ![]() Группа: Продвинутые Сообщений: 12 Регистрация: 20.12.2009 Город: Киров Учебное заведение: ВятГУ Вы: студент ![]() |
вот сейчас исправил как мог..оцените....но опять пишет ошибку
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") } } |
граф Монте-Кристо |
![]()
Сообщение
#13
|
Доцент ![]() ![]() ![]() ![]() ![]() ![]() Группа: Преподаватели Сообщений: 3 840 Регистрация: 27.9.2007 Из: Старый Оскол Город: Москва Учебное заведение: МФТИ/МАИ Вы: другое ![]() |
Насколько я помню, в самом начале при объявлении функции в скобках нужно писать только типы передаваемых аргументов.
В функции min нужно поиск делать по всей таблице,а Вы ищете только по половине.Да,к тому же,закрывающую скобку пропустили. И в саму эту функцию передаёте один аргумент, хотя выше описали,что хотите передавать два. |
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 25.5.2025, 23:29 |
Зеркало сайта Решебник.Ру - reshebnik.org.ru