![]() |
![]() |
#1 |
Камрад
Join Date: фев 2002
Location: Санкт-Петербург
Сообщений: 661
|
Помогите плз с простенькой програмкой на C
Вот собственно такое задание, сдать нужно завтра, я не успею освоить язык за 1 день, помогите плиз, отцы программизма
![]() Дана матрица f(N,N) порядка N (N<=15), то есть N случайное от 1 до 15. Найти в каждой строке наибольший элемент и поменять его местами с элементом главной диагонали. Отпечатать полученную матрицу в общепринятом виде. Заранее большое спасибо! |
![]() |
Дневник [Ответить с цитированием] |
![]() |
#2 |
Администратор
Буржуин проклятый Join Date: мая 2000
Location: Париж, Франция
Сообщений: 10,913
|
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; } } |
![]() |
Дневник [Ответить с цитированием] |
![]() |
#3 |
Администратор
Буржуин проклятый Join Date: мая 2000
Location: Париж, Франция
Сообщений: 10,913
|
Работу не гарантирую, компиляторов у меня дома нет.
|
![]() |
Дневник [Ответить с цитированием] |
![]() |
#4 |
Камрад
Join Date: фев 2002
Location: Санкт-Петербург
Сообщений: 661
|
Спасибо огромное, щас затестим
![]() |
![]() |
Дневник [Ответить с цитированием] |
![]() |
|
|