Kamrad.ru

Kamrad.ru (https://kamrad.ru/index.php)
-   Убей в себе ламера (https://kamrad.ru/forumdisplay.php?f=23)
-   -   Помогите плз с простенькой програмкой на C (https://kamrad.ru/showthread.php?t=72386)

WiCKed 11-09-2005 18:05

Помогите плз с простенькой програмкой на C
 
Вот собственно такое задание, сдать нужно завтра, я не успею освоить язык за 1 день, помогите плиз, отцы программизма :)

Дана матрица f(N,N) порядка N (N<=15), то есть N случайное от 1 до 15. Найти в каждой строке наибольший элемент и поменять его местами с элементом главной диагонали. Отпечатать полученную матрицу в общепринятом виде.

Заранее большое спасибо!

Alexvn 11-09-2005 21:16

Code:

#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <alloc.h>
#include <conio.h>

int CreateMatrix (int **, int);
void DestroyMatrix (int **, int);
void ProcessMatrix (int **, int);
void PrintMatrix (int **, int);

int main ()
{
        int **matrix;
        int size = 0;

        printf ("Введите размер матрицы:");
        scanf ("%d", &size);
        if (size <= 0 || size > 15)
        {
                printf ("\nНеверно указан размер матрицы");       
                return 0;
        }


        if (!CreateMatrix (matrix, size))
        {
                printf ("\nОшибка при создании матрицы");       
                goto end;
        }

        ProcessMatrix (matrix, size);

          PrintMatrix (matrix, size);

end:
          DestroyMatrix (matrix, size);

        return 0;
}

int CreateMatrix (int **matrix, int size)
{
        int i = 0;
        int j = 0;

        if ((*matrix = (int*) malloc (sizeof (int*) * size)) != NULL)
          {
                  for (i = 0; i < size; i++)
                {
                          if ((matrix [i] = (int*) malloc (sizeof (int) * size)) == NULL)
                        {
                                return 0;
                        }
                }
               
                for (i = 0; i < size; i++)
                {
                        printf ("\nВведите строку %d: ", i);
                        for (j = 0; j < size; j++)
                        {
                                scanf ("%d", &matrix [i] [j]);
                        }
                  }       

                  return 1;
          }

        return 0;
}

void DestroyMatrix (int **matrix, int size)
{
        if (*matrix)
        {
                for (int i = 0; i < size; i++)
                {
                        if (matrix[i] != NULL)
                        {
                                free ((void*) matrix[i]);
                        }
                }
                free ((void*) *matrix)        ;
        }
}


void PrintMatrix (int **matrix, int size)
{
        printf ("\n\nРезультат:\n");
        for (int i = 0; i < size; i++)
        {
                  for (j = 0; j < size; j++)
                {
                        printf ("%d ", matrix [i] [j]);
                }
                putchar ('\n');
          }       
}

void ProcessMatrix (int **matrix, int size)
{
        int max = 0;
        int maxpos = 0;

        for (int i = 0; i < size; i++)
        {
                max = matrix [i] [0];
                maxpos = 0;
                  for (j = 1; j < size; j++)
                {
                        if (matrix [i] [j] > matrix [i] [j - 1])
                        {
                                max = matrix [i] [j];
                                maxpos = j;
                        }                       
                }
               
                matrix [i] [maxpos] = matrix [i] [i];
                matrix [i] [i] = max;
          }       
}


Alexvn 11-09-2005 21:18

Работу не гарантирую, компиляторов у меня дома нет.

WiCKed 11-09-2005 23:04

Спасибо огромное, щас затестим :)


All times are GMT +3. The time now is 13:12.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
Любое использование материалов сайта
возможно только с разрешения его администрации.