Kamrad.ru

Go Back   Kamrad.ru > Авторские форумы > Убей в себе ламера

Reply
 
Thread Tools Display Modes
Old 11-09-2005, 18:05   #1
WiCKed
Камрад
 
WiCKed's Avatar
 
Join Date: фев 2002
Location: Санкт-Петербург
Сообщений: 661
Помогите плз с простенькой програмкой на C

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

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

Заранее большое спасибо!
WiCKed is offline   Дневник [Ответить с цитированием]
Old 11-09-2005, 21:16   #2
Alexvn
Администратор
Буржуин проклятый
 
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;
  	}	
}
Alexvn is offline   Дневник [Ответить с цитированием]
Old 11-09-2005, 21:18   #3
Alexvn
Администратор
Буржуин проклятый
 
Join Date: мая 2000
Location: Париж, Франция
Сообщений: 10,913
Работу не гарантирую, компиляторов у меня дома нет.
Alexvn is offline   Дневник [Ответить с цитированием]
Old 11-09-2005, 23:04   #4
WiCKed
Камрад
 
WiCKed's Avatar
 
Join Date: фев 2002
Location: Санкт-Петербург
Сообщений: 661
Спасибо огромное, щас затестим
WiCKed is offline   Дневник [Ответить с цитированием]
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +3. The time now is 02:32.


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