Как отобразить строку, полученную из матрицы? - PullRequest
0 голосов
/ 06 мая 2020

Считается прямоугольной angular матрицей с m строками и n столбцами. Определите и отобразите минимальный элемент матрицы и его позицию, заданную номером строки и номером столбца. Сформируйте строку, содержащую все элементы матрицы, которые делятся на минимальный элемент. Вывести полученную строку. (Если минимальный элемент равен нулю, программа останавливается после его определения и отображения).

Это программа на данный момент:

int main()
{
  int m, n, c, d, mat[100][100], minim;
  printf("Introdu numarul de linii si coloane al matricei\n");
  scanf("%d%d",&m,&n);
  printf("Introdu elementele matricei\n");
  for (c = 0; c < m; c++)
    for(d = 0; d < n; d++)
      scanf("%d", &mat[c][d]);
      printf("\nMatricea este:\n");
for(c = 0; c < m ; c++)
{
    for(d = 0; d < n; d++)
    {
        printf("%d",mat[c][d]);
        printf("\t");
    }
    printf("\n");
}
  minim = mat[0][0];
  for (c = 0; c < m; c++)
    for (d = 0; d < n; d++)
      if (mat[c][d] < minim)
        minim = mat[c][d];
  printf("Elemenul minim al matricei este %d\n", minim);
  return 0;
}

1 Ответ

0 голосов
/ 06 мая 2020

Чтобы проверить, делится ли элемент матрицы на minim, используйте условие:

if ((mat[c][d] % minim) == 0)

Вы можете использовать sprintf для преобразования int в строку, затем используя strcat для объединения строки с другой строкой.

Код для хранения значений в строке (добавьте этот код в свою основную функцию):

     char * str = malloc(10);
     if(!str) {
       return -1;
     }

      int len = 0;
      for (c = 0; c < m; c++)
        for (d = 0; d < n; d++)
          if ((mat[c][d] % minim) == 0) {
            char temp[10];
            len += strlen(str) + 10;
            sprintf(temp, "%d ", mat[c][d]);
            str = realloc(str, len);
            if(!str) {
               return -1;
            }
            strcat(str, temp);
          }

       printf("string: %s\n", str);
       free(str);

Результат теста:

Introdu numarul de linii si coloane al matricei
3 2
Introdu elementele matricei
100 2 500 700 800 900
100 2   
500 700 
800 900 
Elemenul minim al matricei este 2
str : 100 2 500 700 800 900 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...