Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 10.03.2013
Сообщений: 18
1

тем кто шарит в сортировках массивах

10.03.2013, 22:08. Показов 437. Ответов 6
Метки нет (Все метки)

Вобщем сама сортировка есть, но нужно еще куда то влепить счетчик сравнений (тот, что сейчас стоит srav1 не правильно считает)
Код
// moiproject.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "iostream"
#include <time.h>

using namespace std;
int mas[100][100];
int i,j,k,n,m,l;
int arr[100][100];
int srav1=0;
int per1=0;
int Sum ( int N )
{
	int d, sum = 0;
	while ( N != 0 )
	{
		d = N % 10;
		sum = sum + d;
		N = N / 10;
	}
	return abs(sum);
}

int _tmain(int argc, _TCHAR* argv[])

{
setlocale(LC_CTYPE,"Russian");
cout<< ("Введите количество строк:\n");
	scanf("%4i",&m);//кол-во строк
	cout<< ("Введите количество столбцов:\n");
	scanf("%4i",&n);// кол-во столбцов
	
	 srand(time(0));
	 for (i=0; i<m; i++) 
	{
		for (j=0; j<n; j++)
		{

			mas[i][j]=rand()%99-50; 
			
		}
	}
	 //Заполняем массив arr данными из mas
	for (int i=0; i<m; i++)
	{
		for (int j=0; j<n; j++)
		{
			arr[i][j]=mas[i][j];
		}
	}

  for (int i=0; i<m; i++)
	{
		for (int j=0; j<n; j++)
		{
			printf("%4i", arr[i][j]);
		}
		cout<<"\n";
	}
	cout<<"\n";
   printf("_____________________________\n");
	for (int j=0 ; j<n; j++)
		{
	for (int k=0 ; k<m; k++)
        {
          for (int i=m-1; i>=k; i--)   
			{
				if (Sum(arr[i][j])<(Sum(arr[i+1][j])))
				{
					int temp=arr[i][j];
					arr[i][j]=arr[i+1][j];
					arr[i+1][j]=temp;
					per1++;
					
				}
             srav1++;
		  }
	}
	}
		cout<<"\nМассив, отсортированный пузырьковым методом\n\n";
	for (int i=0; i<m; i++)
	{
		for (int j=0; j<n; j++)
		{
			printf("%4i", arr[i][j]);
		}
		cout<<"\n";
	}
	cout<<"\n";
	printf("Перестановок - ");
	printf("%i\n",per1);
	printf("Сравнений- ");
	printf("%i\n",srav1);
system("pause");
	}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.03.2013, 22:08
Ответы с готовыми решениями:

тем кто шарит в PHP
подскажите как зделать чтоб после регистрации переходить на свою страничку, в каком файле что...

Для разминки тем, кто спрашивает и тем, кто отвечает
Преамбула. Задача возникла не вдруг и не на пустом месте. Это попытка (возможно и не очень...

Люди, кто шарит в этих системах счисления и прочем, поможет кто?
Люди, кто шарит в этих системах счисления и прочем?

кто шарит?
кто может помочь, если есть время и желание помочь. Нужно сделать прогу где по форме будет...

6
3330 / 2703 / 733
Регистрация: 25.03.2012
Сообщений: 9,782
Записей в блоге: 1
10.03.2013, 22:15 2
в тело условия и влепи.
Хотя... там нужен счётчик сравнений или перестановок?
Если именно сравнений, то в тело цикла.
тогда srav1 правильно считает. Но это именно количество СРАВНЕНИЙ, а не ПЕРЕСТАНОВОК.
Кто тебе сказал, что srav1 неверно? Учитель в школе? Может он имел в виду количество перестановок? Тогда в строку 77 его
0
0 / 0 / 0
Регистрация: 10.03.2013
Сообщений: 18
10.03.2013, 22:19  [ТС] 3
именно сравнений, перестановки норм считаются
сравнений не всегда одинаковое количество, зависит от "отсортированности" исходного массива
0
3330 / 2703 / 733
Регистрация: 25.03.2012
Сообщений: 9,782
Записей в блоге: 1
10.03.2013, 22:22 4
srav1 должно быть всегда равно m*n*(m*(m-1)/2)
разве я ошибся где-то?
0
0 / 0 / 0
Регистрация: 10.03.2013
Сообщений: 18
10.03.2013, 22:32  [ТС] 5
ну вот я тоже вроде так думаю но допустим если матрица 5 строк и 2 стобца, в первом столбце все по порядку уже отсортировано то она сравнивает (5-1) раз и потом больще не заходит в этот столбик а переходит ко второму
0
3330 / 2703 / 733
Регистрация: 25.03.2012
Сообщений: 9,782
Записей в блоге: 1
10.03.2013, 22:37 6
Цитата Сообщение от bubliq Посмотреть сообщение
если матрица 5 строк и 2 стобца, в первом столбце все по порядку уже отсортировано то она сравнивает (5-1) раз и потом больще не заходит в этот столбик а переходит ко второму
нет, такого у тебя нет. Циклы по i по k и по j выполняются всегда одинаковое количество раз и не учитывают,
по порядку уже всё в столбике или ещё нет.

Хотя существуют модификации "пузырька", учитывающие это.
0
0 / 0 / 0
Регистрация: 10.03.2013
Сообщений: 18
10.03.2013, 23:42  [ТС] 7
ясно, что у меня нет такого. Я и создал тему, чтобы подсказали как это учти. И вообще стоит ли учитывать это

Добавлено через 57 минут
никто не знает...

Добавлено через 3 минуты
есть такой блок, нашел у одногруппника в однотипной программе, надо его просто как то в мой код впихуть
Код
	}
			if(sum==0){break;}
			sum=0;
			total--;
		}
		total=n;
где sum это переменная которую надо впихнуть в цикл где сравниваются элементы каждого столбика

Добавлено через 1 минуту
sum это счетчик сравнений в цикле одного столбика. т. е если sum = 0 то больше этот столбик не сортируется(тк он уже отсортирован)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.03.2013, 23:42

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

кто шарит в этом?
у меня есть в шаблоне файлик footer.php мне так надо кое что изменить . я значет изменяю.в...

Сокеты кто шарит?
Кто нибудь может объяснить как через сокет открыть соединение между 2 пользователя допустим личная...

Кто шарит по схемотехнике
Народ вообщем есть 2 pcie адаптера на одной и тойже wifi карте (intel wireless 9260), но на одном...

Дискретка, кто шарит объясните
Дискретка, кто шарит объясните


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.