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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2009, 11:09   #1
Jasper92
Форумчанин
 
Аватар для Jasper92
 
Регистрация: 07.02.2009
Сообщений: 110
По умолчанию Сортировка массива

Укажите на ошибку. Сначала идут все элементы равные единице а потом все остальные.
Код:
#include <stdafx.h>
#include "stdio.h"
#include "conio.h"
int main ()
{
	int a[5];
	int k=0,s=0,tmp=0,i;
	printf ("Vvedite massiv\n");
	for (int i=0;i<5; i++)
	{
		scanf ("%i",&a[i]);
	}
		for (int i=0;i>5;i++)
{
if (a[i]==1) {tmp=a[i]; a[i+1]=a[i]; a[i]=tmp;}
}
for (int i=0;i>5;i++)
{printf ("%d",a[i]);}

		getch ();
}
В заранее благодарен.
Jasper92 вне форума Ответить с цитированием
Старый 27.12.2009, 11:19   #2
Serjuk
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 136
По умолчанию

for (int i=0;i>5;i++)
может быть i<5?
Serjuk вне форума Ответить с цитированием
Старый 27.12.2009, 11:44   #3
Jasper92
Форумчанин
 
Аватар для Jasper92
 
Регистрация: 07.02.2009
Сообщений: 110
По умолчанию

Если ввести 2 1 2 1 2. То ответ 1 1 1 1 2
Jasper92 вне форума Ответить с цитированием
Старый 27.12.2009, 13:01   #4
Jasper92
Форумчанин
 
Аватар для Jasper92
 
Регистрация: 07.02.2009
Сообщений: 110
По умолчанию

Если изменить
Цитата:
if (a[i]==1) {tmp=a[i]; a[i+1]=a[i]; a[i]=tmp;
на
Код:
if (a[i]==1) {tmp=a[i]; a[i]=a[i+1]; a[i]=tmp; printf ("%i ",a[i]);}
То выводит только единицы.
Как сделать чтоб выводились остальные числа
Jasper92 вне форума Ответить с цитированием
Старый 27.12.2009, 13:32   #5
Cpluser
Форумчанин
 
Аватар для Cpluser
 
Регистрация: 16.02.2009
Сообщений: 555
По умолчанию

Код:
#include "stdio.h"
#include "conio.h"
int main ()
{
	int j=0;
	int a[5];
	int k=0,s=0,tmp=0,i;
	printf ("Vvedite massiv\n");
	for (int i=0;i<5; i++)
	{
		scanf ("%i",&a[i]);
	}
		for (int i=0;i<5;i++)
{
if (a[i]==1) {tmp=a[j]; a[j]=a[i]; a[i]=tmp; j++;}
}
for (int i=0;i<5;i++)
{printf ("%d",a[i]);}

		getch ();
}
Cpluser вне форума Ответить с цитированием
Старый 27.12.2009, 13:40   #6
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Еще вариант (при условии что 1 самый маленький элемент)
Код:
#include <stdio.h>

int main ()
{
	int a[5] = {2, 1, 1, 1, 2};
	int k=0,s=0,tmp=0;
	/*printf ("Vvedite massiv\n");
	for (int i=0;i<5; i++)
	{
		scanf ("%i",&a[i]);
	} */

	for (int i=0;i < 5;i++)
		for (int j = 0; j < 5; j++)
			if (a[i] < a[j]) 
			{tmp=a[j]; a[j]=a[i]; a[i]=tmp;};

	for (int i=0;i<5;i++) printf ("%d", a[i]);

	getchar();
}
psycho-coder вне форума Ответить с цитированием
Старый 27.12.2009, 16:11   #7
v01d
Пользователь
 
Регистрация: 22.11.2008
Сообщений: 33
По умолчанию

я бы цикл сделал таким:
Код:
for (int i=0;i<5;i++)
{
    if ((a[i]==1) && (i>j)) 
    {
        tmp=a[j]; 
        a[j]=a[i]; 
        a[i]=tmp; 
        j++;
    } 
    else if (a[j]==1) j++;
}
чтобы единицу не менять местами с единицей.
v01d вне форума Ответить с цитированием
Старый 27.12.2009, 19:01   #8
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Цитата:
чтобы единицу не менять местами с единицей.
О_о. Это как? Неужели 1<1 вернет true?
psycho-coder вне форума Ответить с цитированием
Старый 27.12.2009, 19:47   #9
v01d
Пользователь
 
Регистрация: 22.11.2008
Сообщений: 33
По умолчанию

Имелось в виду, что в вышепредложенном алгоритме
Код:
char a[] = {1, 1, 1, 2};
int j=0;
for (int i=0;i>5;i++)
{
    if (a[i]==1) 
    {
        tmp=a[j]; 
        a[j]=a[i]; 
        a[i]=tmp; 
        j++;
    }
}
первые 3 единицы меняются местами сами с собой.
v01d вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сортировка массива natasha971929 Общие вопросы C/C++ 3 15.12.2009 09:41
Сортировка массива по С++ Moldir Общие вопросы C/C++ 1 28.10.2009 17:40
Сортировка массива Helennna Microsoft Office Excel 7 06.08.2009 18:41
сортировка массива Dimati87 Паскаль, Turbo Pascal, PascalABC.NET 6 03.06.2009 09:17
Сортировка массива...? Roberto Помощь студентам 2 11.04.2008 13:32