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

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

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

проблемы с сортировкой пузырьком - C++

10.03.2013, 10:51. Просмотров 255. Ответов 4
Метки нет (Все метки)

собственно сабж
проблема заключается в том, что программа сортирует ЧАСТЬ массива. Допустим, надо отсортировать каждый столбец по уменьшению значения суммы цифр каждого элемента. Так программа правильно отсортировывает 14 элементов из 16, а 2 стоят в неправильном порядке. Не могу понять, наверное где-то в цикле ошибка. Помогите, люди!

Код
// 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[])
{
cout<< ("Vvedote strok:\n");
	scanf("%4i",&m);//кол-во строк
	cout<< ("Vvedote stolbcov:\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 (j=0 ; j<n; j++)//j-stolbec//
		{
		for (k=0 ; k<m-1; k++)//i-строчка//
		{
		  for (i=0; i<m-k-1; 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++;
					l++;
					
				}
             srav1++;
			
		  }
		if (l==0) 
		{break;}
		l=0;
		l--;
		}
	l=k;
	}
	for (int i=0; i<m; i++)
	{
		for (int j=0; j<n; j++)
		{
			printf("%4i", arr[i][j]);
		}
		cout<<"\n";
	}
	cout<<"\n";
	printf("Kol-vo perestanovok - ");
	printf("%i\n",per1);
	printf("Kolitchstvo sravnenii- ");
	printf("%i\n",srav1);
system("pause");
	}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.03.2013, 10:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос проблемы с сортировкой пузырьком (C++):

Сравнить сортировку пузырьком с сортировкой подсчетом - C++
Нужно написать который бы сравнивал сортировку пузырьком с сортировкой подсчетом. Нужно вычислить время выполнения и т. д. и т. п.

Проблемы с быстрой сортировкой - C++
Пишу программу, сортирующую четные строки матрицы быстрой сортировкой. Переставляются все элементы правильно. Но мне нужно, чтобы программа...

Проблемы с поразрядной сортировкой msd - C++
#include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;clocale&gt; using namespace std; int main(int argc, char *argv) { ...

Отсортировать одномерный массив, заполненный случайными числами, сортировкой Шелла и сортировкой выбором - C++
Отсортировать одномерный массив, заполненный случайными числами, сортировкой Шелла и сортировкой выбором.

Проблемы с "Быстрой сортировкой" - C++
Ребята, всем привет, не могли бы вы мне помочь. Столкнулся с быстрой сортировкой, но что-то не выходит ее реализовать. Вот код: #include...

Непонятки с сортировкой - C++
Добрый вечер. Практически выполнил задание, но в конце возникла проблема с сортировкой, а именно, в задании нужно ввести название товара,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
l2ded
80 / 68 / 11
Регистрация: 10.05.2011
Сообщений: 284
10.03.2013, 11:12 #2
Цитата Сообщение от bubliq Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
for (k=0 ; k<m-1; k++)//i-строчка//
        {
          for (i=0; i<m-k-1; 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++;
                    l++
По моему Пузырёк
C++
1
2
3
for (k=0 ; k<m; k++)//i-строчка//
        {
          for (i=m-1; i>k; i--)
bubliq
0 / 0 / 0
Регистрация: 10.03.2013
Сообщений: 18
10.03.2013, 11:24  [ТС] #3
Да даже если так то все равно неправильно сортирует
l2ded
80 / 68 / 11
Регистрация: 10.05.2011
Сообщений: 284
10.03.2013, 11:37 #4
Цитата Сообщение от bubliq Посмотреть сообщение
Да даже если так то все равно неправильно сортирует
Твой злодей:
C++
1
2
3
4
5
6
 if (l==0) 
        {break;}
        l=0;
        l--;
        }
    l=k;
bubliq
0 / 0 / 0
Регистрация: 10.03.2013
Сообщений: 18
10.03.2013, 11:47  [ТС] #5
да, кстате, ты оказался прав, но тогда мне надо как то подсчитывать сравнения
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2013, 11:47
Привет! Вот еще темы с ответами:

Не понятно с сортировкой! - C++
Добрый вечер! Возникла неясность с пузырьковой сортировкой. В чём загвоздка? В задании надо присвоить в структуру оператор &lt;, чтобы...

траблы с сортировкой - C++
вот собственно задание первые два я сделал, а третье чет с косяком =\ в одномерном массиве, состоящем из n вещественных элементов,...

Цикл с сортировкой - C++
Если действительный вектор x(x1;x2,...,xn)имеет хотя бы одну компоненту, которая меньше 2,то все отрицательные компоненты заменить их...

Сортировка пузырьком - C++
Здравствуйте! Решаю задачу:пользователь вводит слова через пробел,я должен вывести их в алфавитном порядке.Моя проблема в сортировке.Что...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
10.03.2013, 11:47
Ответ Создать тему
Опции темы

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