galichka12
?>

В произвольной матрице - отсортировать по убыванию элементы последовательности, расположенные после второго отрицательного числа. Написать на языке Си

Информатика

Ответы

Оздоевский

Если что-то непонятно или не работает - спрашивайте.

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#define M 4

#define N 4

int main()

{

int A[M][N]; // произвольная матрица

int i, j, indx = -1;

// Автоматически заполняем матрицу ,

// находим индекс второго отрицательного элемента ,

// выводим матрицу на экран

srand((unsigned)time(NULL));

printf("Matrix: \n");

for (i = 0; i < M; i++)

{

 for (j = 0; j < N; j++)

 {

  A[i][j] = (rand() % 201) - 100;

  printf("%5d ", A[i][j]);

  if ((A[i][j] < 0)&&(indx<0))

  {

   indx--;

   if (indx == -3) indx = i * M + j;

  }

 }

 printf("\n");

}

// Сортировка по убыванию элементов, расположенных

// после второго отрицательного числа

for (i = indx + 1; i < M * N - 1; i++)

{

 indx = i;

 for (j = i+1; j < M * N; j++)

  if (A[0][j] > A[0][indx]) indx = j;

 j = A[0][i];

 A[0][i] = A[0][indx];

 A[0][indx] = j;

}

// Вывод результата

printf("\nSort matrix: \n");

for (i = 0; i < M; i++)

{

 for (j = 0; j < N; j++)

  printf("%5d ", A[i][j]);

 printf("\n");

}

return 0;

}

egolopuzenko4253

Я бы посоветовал вместо прямого перевода 2 <-> 10 работать через 16ричную систему счисления. Алгоритмы те же, вычислений меньше, значит меньше и ошибок. А двоичные значения 16 цифр очень легко запомнить.

Гляди, как просто получится

1.

96 = 60h = 0110 0000b

53 = 35h = 0011 0101b

74 = 4Ah = 0100 1010b

80 = 50h = 0101 0000b

122=7Ah=  0111 1010b

 

2.

   1010011b = 0101 0011b = 53h = 5*16+3=83

   10011101b= 1001 1101b = 9Dh = 9*16+13 = 157

   11011111b= 1101 1111b = DFh = 13*16+15= 223

 

3.

  1010011b +   110101b = 0101 0011b + 0011 0101b = 53h + 35h = 88h = 1000 1000b

11011111b + 1111010b = 1101 1111b + 0111 1010b =  DFh+7Ah = 159h= 0001 0101 1001b

 

 

Замечание1. Для решения последнего примера нужно, конечно, знать таблицу сложения 16-ричных цифр.

 

Замечание2 Напомню перевод 10 ->16, повторюсь, алгоритм тот же, что и 10->2

Например

122/16 = 7 (ост 10), значит 122=7Аh

 

Замечание3 И последнее, в практической деятельности 2-ичная система практически не используется, профессионалы, если нужно, работают с 16-ричной(это связано с тем, что байт, так уж случилось, равен 8 бит).

 

Ну, вроде всё.

 

veraplucnika

Я бы посоветовал вместо прямого перевода 2 <-> 10 работать через 16ричную систему счисления. Алгоритмы те же, вычислений меньше, значит меньше и ошибок. А двоичные значения 16 цифр очень легко запомнить.

Гляди, как просто получится

1.

96 = 60h = 0110 0000b

53 = 35h = 0011 0101b

74 = 4Ah = 0100 1010b

80 = 50h = 0101 0000b

122=7Ah=  0111 1010b

 

2.

   1010011b = 0101 0011b = 53h = 5*16+3=83

   10011101b= 1001 1101b = 9Dh = 9*16+13 = 157

   11011111b= 1101 1111b = DFh = 13*16+15= 223

 

3.

  1010011b +   110101b = 0101 0011b + 0011 0101b = 53h + 35h = 88h = 1000 1000b

11011111b + 1111010b = 1101 1111b + 0111 1010b =  DFh+7Ah = 159h= 0001 0101 1001b

 

 

Замечание1. Для решения последнего примера нужно, конечно, знать таблицу сложения 16-ричных цифр.

 

Замечание2 Напомню перевод 10 ->16, повторюсь, алгоритм тот же, что и 10->2

Например

122/16 = 7 (ост 10), значит 122=7Аh

 

Замечание3 И последнее, в практической деятельности 2-ичная система практически не используется, профессионалы, если нужно, работают с 16-ричной(это связано с тем, что байт, так уж случилось, равен 8 бит).

 

Ну, вроде всё.

 

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

В произвольной матрице - отсортировать по убыванию элементы последовательности, расположенные после второго отрицательного числа. Написать на языке Си
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

Coffee3862
bristolhouse20151001
Smirnovav1982422
ekasatkina
arsen-ai-ti
Aksinya1036
ragimovelshad
Kozloff-ra20146795
Savelieva24
mmihail146
marinamarinazmeeva2444
Федорович Шахова241
kabinet17
ea-office
bel1-79