Помощь по Си

avatar TimeToFuture

692

22

TimeToFuture

Пользователь

Регистрация: 07.03.2014

Сообщения: 1260

Рейтинг: 440

TimeToFuture

Регистрация: 07.03.2014

Сообщения: 1260

Рейтинг: 440

#include
#include
#include
#define N 3
int main()
{
int i,j;//счетсчики
int **mas,max;//статический массив и мах
printf("Vvedite elementi matrici \n");
mas=(int**)malloc(N*sizeof(int*));// выделяется динамическая старинным сишным способом, под массив int указалетей(число строк). получается массив указателей
for(i=0;i mas=(int*)malloc(N*sizeof(int));// а тут выделяется динамическая память под строки в массиве int, на которые указывают вышестоящие указатели. проще говоря у тебя есть массив *int и матрица int. все это делается для удобства написания mas[j]
for (i=0;i {
for(j=0;j {
scanf_s("%d",&mas[j]);// ввод матрицы размера N на N
}
}
printf("Vvedite matricu razmera N\n");
for (i=0;i {
for(j=0;j {
printf("%4d", mas[j]);// вывод вывод матрицы которую только что ввел
}
printf("\n");// переход на новую строку
}
max=mas[1][N-1]; // максимум присваивается последнему элементу 2й строки.

for(i=0;i {
if(mas[1]>max)
max=mas[1];
// ищем какой-то максимум в массиве

}
printf("The maximum element of the matrix by secondary diagonal=%i\n",max);//выводим максимум
for(int i=0;i free(mas);// освобождаем место от динамической матрицы
free(mas);
getch();
return 0;
}
-------------------------
Есть такой код,как сделать, что бы искало максимум только по верхнетреугольной матрицу, т.е. вверху от главной диагонали?

Simbelmynë

Пользователь

Регистрация: 10.10.2014

Сообщения: 36880

Рейтинг: 30873

Simbelmynë

Регистрация: 10.10.2014

Сообщения: 36880

Рейтинг: 30873

Похоже на эльфийский.... Не могу прочитать :(

TimeToFuture

Пользователь

Регистрация: 07.03.2014

Сообщения: 1260

Рейтинг: 440

TimeToFuture

Регистрация: 07.03.2014

Сообщения: 1260

Рейтинг: 440

Simbelmynë сказал(а):
Похоже на эльфийский.... Не могу прочитать :(
Нажмите, чтобы раскрыть...

Си же, 2 курс

iliiliilya123

Пользователь

Регистрация: 01.05.2013

Сообщения: 45

Рейтинг: 8

iliiliilya123

Регистрация: 01.05.2013

Сообщения: 45

Рейтинг: 8

if (i>=j) - только верхний треугольник

TimeToFuture

Пользователь

Регистрация: 07.03.2014

Сообщения: 1260

Рейтинг: 440

TimeToFuture

Регистрация: 07.03.2014

Сообщения: 1260

Рейтинг: 440

iliiliilya123 сказал(а):
if (i>=j) - только верхний треугольник
Нажмите, чтобы раскрыть...

почему так, что-то я не пойму.

S0_HardCore

Пользователь

Регистрация: 01.07.2014

Сообщения: 3462

Рейтинг: 2905

S0_HardCore

Регистрация: 01.07.2014

Сообщения: 3462

Рейтинг: 2905

Ничего не понял.
Вот, допустим, матрица:
1 2 3
4 5 6
7 8 9

Что тебе нужно найти ?

TimeToFuture

Пользователь

Регистрация: 07.03.2014

Сообщения: 1260

Рейтинг: 440

TimeToFuture

Регистрация: 07.03.2014

Сообщения: 1260

Рейтинг: 440

S0_HardCore сказал(а):
Ничего не понял.
Вот, допустим, матрица:
1 2 3
4 5 6
7 8 9

Что тебе нужно найти ?
Нажмите, чтобы раскрыть...

наибольшое число среди, 2 3 6, т.е. все значение что сверху от главной диагонали, главная диагональ это 1 5 9

psy4stra

Пользователь

Регистрация: 13.05.2013

Сообщения: 57

Рейтинг: 17

psy4stra

Регистрация: 13.05.2013

Сообщения: 57

Рейтинг: 17

TimeToFuture сказал(а):
наибольшое число среди, 2 3 6
Нажмите, чтобы раскрыть...


а что там искать, 6 же наибольшое число :uiu:

TimeToFuture

Пользователь

Регистрация: 07.03.2014

Сообщения: 1260

Рейтинг: 440

TimeToFuture

Регистрация: 07.03.2014

Сообщения: 1260

Рейтинг: 440

psy4stra сказал(а):
а что там искать, 6 же наибольшое число :uiu:
Нажмите, чтобы раскрыть...

Дак как сделать что бы прога это искала?

Archer9518

Пользователь

Регистрация: 27.02.2013

Сообщения: 248

Рейтинг: 140

Archer9518

Регистрация: 27.02.2013

Сообщения: 248

Рейтинг: 140

блин сам изучаю си и пипец как он мне не нравится( но я делаю проги в виндовс форме а не в консоли

TimeToFuture

Пользователь

Регистрация: 07.03.2014

Сообщения: 1260

Рейтинг: 440

TimeToFuture

Регистрация: 07.03.2014

Сообщения: 1260

Рейтинг: 440

Archer9518 сказал(а):
блин сам изучаю си и пипец как он мне не нравится( но я делаю проги в виндовс форме а не в консоли
Нажмите, чтобы раскрыть...

ну я через майкрософт студию, а ты?

iliiliilya123

Пользователь

Регистрация: 01.05.2013

Сообщения: 45

Рейтинг: 8

iliiliilya123

Регистрация: 01.05.2013

Сообщения: 45

Рейтинг: 8

TimeToFuture сказал(а):
почему так, что-то я не пойму.
Нажмите, чтобы раскрыть...

Если i>j, тогда координата по х больше координаты по у, значит вниз не пойдет. Просто добавь эту проверку при нахождении максимума. Можешь посмотреть руками раз, что бы понять

S0_HardCore

Пользователь

Регистрация: 01.07.2014

Сообщения: 3462

Рейтинг: 2905

S0_HardCore

Регистрация: 01.07.2014

Сообщения: 3462

Рейтинг: 2905

Лень придумывать алгоритм, может тебе подойдет такой вариант:
int B[3];
max=B[0] = A[1][0];
B[1] = A[2][0];
B[2] = A[2][1];
for(i=0;i<3;i++)
if(max>A) max=A;

TimeToFuture

Пользователь

Регистрация: 07.03.2014

Сообщения: 1260

Рейтинг: 440

TimeToFuture

Регистрация: 07.03.2014

Сообщения: 1260

Рейтинг: 440

S0_HardCore сказал(а):
Лень придумывать алгоритм, может тебе подойдет такой вариант:
int B[3];
max=B[0] = A[1][0];
B[1] = A[2][0];
B[2] = A[2][1];
for(i=0;i<3;i++)
if(max>A) max=A;
Нажмите, чтобы раскрыть...

Окей, щас попробую

empty_aim

Пользователь

Регистрация: 03.01.2013

Сообщения: 422

Рейтинг: 126

empty_aim

Регистрация: 03.01.2013

Сообщения: 422

Рейтинг: 126

TimeToFuture сказал(а):
Си же, 2 курс
Нажмите, чтобы раскрыть...

2 курс? Мы в первом семестре с сентября начали его изучать

Archer9518

Пользователь

Регистрация: 27.02.2013

Сообщения: 248

Рейтинг: 140

Archer9518

Регистрация: 27.02.2013

Сообщения: 248

Рейтинг: 140

TimeToFuture сказал(а):
ну я через майкрософт студию, а ты?
Нажмите, чтобы раскрыть...

то же майкрософт ток не консольный вариант

empty_aim

Пользователь

Регистрация: 03.01.2013

Сообщения: 422

Рейтинг: 126

empty_aim

Регистрация: 03.01.2013

Сообщения: 422

Рейтинг: 126

TimeToFuture сказал(а):


int **mas,max;//статический массив и мах

Нажмите, чтобы раскрыть...

это как раз динамический массив, статический будет, если ты задашь mas[M][N], где они константами будут

TimeToFuture

Пользователь

Регистрация: 07.03.2014

Сообщения: 1260

Рейтинг: 440

TimeToFuture

Регистрация: 07.03.2014

Сообщения: 1260

Рейтинг: 440

empty_aim сказал(а):
2 курс? Мы в первом семестре с сентября начали его изучать
Нажмите, чтобы раскрыть...

кафедра математики, больше упор на матан и алгебру

TimeToFuture

Пользователь

Регистрация: 07.03.2014

Сообщения: 1260

Рейтинг: 440

TimeToFuture

Регистрация: 07.03.2014

Сообщения: 1260

Рейтинг: 440

empty_aim сказал(а):
это как раз динамический массив, статический будет, если ты задашь mas[M][N], где они константами будут
Нажмите, чтобы раскрыть...

это я уже понял

empty_aim

Пользователь

Регистрация: 03.01.2013

Сообщения: 422

Рейтинг: 126

empty_aim

Регистрация: 03.01.2013

Сообщения: 422

Рейтинг: 126

TimeToFuture сказал(а):
кафедра математики, больше упор на матан и алгебру
Нажмите, чтобы раскрыть...

Ну у нас тоже кафедра прикладной математики

empty_aim

Пользователь

Регистрация: 03.01.2013

Сообщения: 422

Рейтинг: 126

empty_aim

Регистрация: 03.01.2013

Сообщения: 422

Рейтинг: 126

максимум нужен для каждой строки или общий?

TimeToFuture

Пользователь

Регистрация: 07.03.2014

Сообщения: 1260

Рейтинг: 440

TimeToFuture

Регистрация: 07.03.2014

Сообщения: 1260

Рейтинг: 440

empty_aim сказал(а):
максимум нужен для каждой строки или общий?
Нажмите, чтобы раскрыть...

я написал, что для верхнетриугольной матрицы, это все числа что сверху от главной диагонали

empty_aim

Пользователь

Регистрация: 03.01.2013

Сообщения: 422

Рейтинг: 126

empty_aim

Регистрация: 03.01.2013

Сообщения: 422

Рейтинг: 126

int max=mas[0][1];

for (int i=0;i
for(int j=0;j




if (i



if (mass[j]>max)






max=mass[j];

только под себя исправь , смысл такой