Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
bubliq
0 / 0 / 0
Регистрация: 10.03.2013
Сообщений: 17
#1

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

10.03.2013, 22:08. Просмотров 300. Ответов 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");
	}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.03.2013, 22:08     тем кто шарит в сортировках массивах
Посмотрите здесь:

Задание. Помогите кто шарит - C++
реализовать параметрическим оператором цикла for. Первое задание реализовать с параметрами цикла по переменной x, а второе задание – по...

кто шарит в с++ работы на 1 минуту - C++
я в с++ дуб дубом выручите народ!) нужно написать функцию которая выравнивает ряд по левому краю по заданой длине. т.е. есть слово...

Ребята кто шарит подведения в степень не использовать - C++
Найти сумму a^2+a^3+a^4+...a^n. Операцию подведения в степень не использовать.

Народ, кто шарит в клиент-сервер приложениях, ХЕЛП!!! - C++
Привет всем! Народ выручайте плиз, начальство поставило задачу и сказало в течении недели ее выполнить! Суть задачи вот в чем: Есть...

Если кто шарит в шаблонных классах, посмотрите пожалуйста - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; ...

11.247. Даны два массива одного размера. Получить третий массив, каждый элемент которого равен:сумме элементов с тем же номером в заданных массивах - C++
11.247. Даны два массива одного размера. Получить третий массив, каждый элемент которого равен:сумме элементов с тем же номером в заданных...

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

Хотя существуют модификации "пузырька", учитывающие это.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2013, 23:42     тем кто шарит в сортировках массивах
Еще ссылки по теме:

Ключ в сортировках - C++
часто вижу предложения с употреблением слова &quot;Ключ&quot;, но как он выглядит или что он из себя представляет я понять не могу.

функции в массивах. - C++
задача: Создать функцию сортировки одномерного массива целых значений согласно задаваемому направлению сортировки. Использовать созданную...

снова о массивах - C++
Здравствуйте, уважаемые программисты! Написала небольшую тривиальную программку, которая находит сумму элементов строк массива, но такое...

последовательности в массивах - C++
Даны натуральные числа m и n, последовательности целых чисел a1 a2...am и b1 b2...bm В каждой последовательности могут быть повторяющиеся...


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

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

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

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

Добавлено через 1 минуту
sum это счетчик сравнений в цикле одного столбика. т. е если sum = 0 то больше этот столбик не сортируется(тк он уже отсортирован)
Yandex
Объявления
10.03.2013, 23:42     тем кто шарит в сортировках массивах
Ответ Создать тему
Опции темы

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