Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.10.2008, 01:48   #1
ReDev1L
 
Регистрация: 18.10.2008
Сообщений: 7
По умолчанию [С++] Сортировка 2ух строк двумерного массива.

Всем привет, нужна помощь, а именно нужно чтоб ктонибудь исправил следующий код или хотябы дал наводку как сделать правильный самому
Перечитал много теории, я уже 7 часов сижу делаю это, си познал чуть ли не за 1 день, читать учебники прошу не отправлять

Код:
#include "stdafx.h"
#include "stdio.h"
#include "math.h"
#include "conio.h"
#include "iostream"

void main()
{
	int i,j;
	int x = 5;
	int y = 5;
	int m = 0;
	int M = 0;
	int mi = 0;
	int Mi = 0;
	int c,t,p;
	int ar[5][5]={
		{1,2,3,4,0}, {1,2,3,0,0}, {1,2,0,0,0}, {1,0,0,0,0}, {0,0,0,0,0}
	};
	for (i = 0; i < x; i++)
	{
		printf("\n");
		for (j = 0; j < y; j++)
			printf("%d", ar[i][j]);
	}
	printf("\n");

//Неработает отсюда

for (i = 0 ; i < x; i++)
	{
		c = 0;
		for (j = 0; j < y; j++)
			if (!ar[i][j])
				c++;
		if (c > M)
		{
			Mi = i;
			M = c;
		}
		if (c < m)
		{
			mi = i;
			m = c;
		}
	}
	for (p = 0; p < y; p++)
	{
		t = ar[Mi][p];
		ar[mi][p] = t;
		ar[Mi][p] = t;
	}
//до сюда

	for (i = 0; i < x; i++)
	{
		printf("\n");
		for (j = 0; j < y; j++)
			printf("%d", ar[Mi][p]); //какой массив выводить [mi] или [Mi]?
	}
	printf("\n");
	for (i = 0; i < x; i++)
	{
		printf("\n");
		for (j = 0; j < y; j++)
			printf("%d", ar[mi][p]);// сделал 2 вывода, чтобы видеть что записывается в массивы.
	}
	getch();
}
Задача:
Составить алгоритм: Поменять в матрице строку с наибольшим количеством нулевых элементов, со строкой с наименьшим количеством нулевых элементов.
ReDev1L вне форума Ответить с цитированием
Старый 19.10.2008, 03:45   #2
ReDev1L
 
Регистрация: 18.10.2008
Сообщений: 7
По умолчанию

Освоил всо).Код с вводом массива с клавы:
Код:
#include "stdafx.h"
#include "stdio.h"
#include "math.h"
#include "conio.h"
#include "iostream"

void vvod (int a[50][50], int x, int y)
{
	int i,j;
	for (i = 0; i < x; i++)
	{
		printf("Enter %d string\n", i+1);
		for (j = 0; j < y; j++)
			scanf("%d", &a[i][j]);
	}
}
void main()
{
	int i,j;
	int x;
	int y;
	int min = x;
	int max = 0;
	int mins = x;
	int maxs = 0;
	int temp[2][50];
	int ar[50][50];
	printf("Enter number of stings and col's, 2 3 etc is array with 2 strings and 3 col's)\n");
	scanf("%d %d", &x, &y);
	vvod (ar, x, y);
	printf("Array before operation:\n");
	for (i = 0; i < x; i++)
	{
		printf("\n");
		for (j = 0; j < y; j++)
			printf("%d", ar[i][j]);
	}
	printf("\n");
	for (i = 0; i < x; i++)
	{
		int countnull = 0;
		for (j = 0; j < y; j++)
		{
			if (ar[i][j] == 0)
			{
				countnull++;
			}
			if (countnull < min)
			{
				mins = i;
				min = countnull;
			}
			if (countnull > max)
			{
				maxs = i;
				max = countnull;
			}
		}
	}
	for (j = 0; j < y; j++)
		{
			temp[1][j] = ar[mins][j];
			temp[2][j] = ar[maxs][j];
			ar[mins][j] = temp[2][j];
			ar[maxs][j] = temp[1][j];
		}
	printf("Array after operation:\n");
	for (i = 0; i < x; i++)
	{
		printf("\n");
		for (j = 0; j < y; j++)
			printf("%d", ar[i][j]);
	}
	getch();

}
Код без ввода с клавы:

Код:
#include "stdafx.h"
#include "stdio.h"
#include "math.h"
#include "conio.h"
#include "iostream"


void main()
{
	int i,j;
	int x = 5;
	int y = 5;
	int min = x;
	int max = 0;
	int mins = x;
	int maxs = 0;

	int	t,p;
	int temp[2][5];
	int ar[5][5]={
		{1,2,3,4,0}, {1,2,3,0,0}, {1,2,0,0,0}, {1,0,0,0,0}, {0,0,0,0,0}
	};
	for (i = 0; i < x; i++)
	{
		printf("\n");
		for (j = 0; j < y; j++)
			printf("%d", ar[i][j]);
	}
	printf("\n");

	for (i = 0; i < x; i++)
	{
		int countnull = 0;
		
		for (j = 0; j < y; j++)
		{
			if (ar[i][j] == 0)
			{
				countnull++;
			}
			if (countnull < min)
			{
				mins = i;
				min = countnull;
			}
			if (countnull > max)
				{
					maxs = i;
					max = countnull;
				}
		}
	
	}
	for (j = 0; j < y; j++)
		{
			temp[1][j] = ar[mins][j];
			temp[2][j] = ar[maxs][j];
			ar[mins][j] = temp[2][j];
			ar[maxs][j] = temp[1][j];
		}
	for (i = 0; i < x; i++)
	{
		printf("\n");
		for (j = 0; j < y; j++)
			printf("%d", ar[i][j]);
	}
	getch();
Код сортировки массива:
Код:
	for (i = 0; i < x; i++)
	{
		int countnull = 0;
		for (j = 0; j < y; j++)
		{
			if (ar[i][j] == 0)
			{
				countnull++;
			}
			if (countnull < min)
			{
				mins = i;
				min = countnull;
			}
			if (countnull > max)
			{
				maxs = i;
				max = countnull;
			}
		}
	}
	for (j = 0; j < y; j++)
	{
		temp[1][j] = ar[mins][j];
		temp[2][j] = ar[maxs][j];
		ar[mins][j] = temp[2][j];
		ar[maxs][j] = temp[1][j];
	}
	printf("Array after operation:\n");
	for (i = 0; i < x; i++)
	{
		printf("\n");
		for (j = 0; j < y; j++)
			printf("%d", ar[i][j]);
	}
ReDev1L вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка двумерного массива Makarov Помощь студентам 8 29.10.2011 11:55
Сортировка двумерного числового массива «спиралью» vicvtor Помощь студентам 2 06.07.2011 09:10
сортировка двумерного массива cornholio Помощь студентам 1 27.11.2007 23:36
Сортировка двумерного массива произвольной длины. Visual Basic Pekc Помощь студентам 0 25.11.2007 19:30
Сортировка массива строк StanPBH Помощь студентам 9 24.04.2007 00:34