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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2010, 22:41   #1
MrBobyara
Пользователь
 
Регистрация: 11.06.2010
Сообщений: 28
По умолчанию Сортировка массива структур

Здравствуйте !
Никак не могу разобраться с сортировкой массива структур, нужно чтоб сортировка производилась по возрастанию балла т.е по результату car[i].bal

Код:
#include <stdio.h> 

// определение структуры
struct cars
{
    char model[50];
    int probeg;
    int god;
    int cena;
	int komple;
	int p;
	int g;
	int c;
	int k;
	int bal;
};
void main()
{
    struct cars car[10];
    int i, n;

    printf("Kolitchestvo mashin:");
    scanf("%d", &n);

    for(i=0;i<n;i++)
    {
        printf("Enter model:");
        scanf("%s", &car[i].model);
        printf("Enter probeg:");
        scanf("%d", &car[i].probeg);
	if (car[i].probeg>0 && car[i].probeg<50000-1)
	{
car[i].p=10;
	}
	else
	if (car[i].probeg>=50000 && car[i].probeg<100000-1)
	{
		car[i].p=9;
	}
	else
		if (car[i].probeg>=100000 && car[i].probeg<150000-1)
	{
car[i].p=8;
	}
		else
		if (car[i].probeg>=150000 && car[i].probeg<200000-1)
	{
car[i].p=7;
	}
		else
		if (car[i].probeg>=200000 && car[i].probeg<250000-1)
	{
car[i].p=6;
	}
		else
		if (car[i].probeg>=250000 && car[i].probeg<300000-1)
	{
car[i].p=5;
	}
else
		if (car[i].probeg>=300000 && car[i].probeg<350000-1)
	{
car[i].p=4;
	}
else
		if (car[i].probeg>=350000 && car[i].probeg<400000-1)
	{
car[i].p=3;
	}
else
		if (car[i].probeg>=400000 && car[i].probeg<450000-1)
	{
car[i].p=2;
	}
else
		if (car[i].probeg>=450000 && car[i].probeg>500000)
	{
car[i].p=1;
		}
        printf("Enter god:");
        scanf("%d", &car[i].god);
		if (car[i].god>=1978 && car[i].god<=1981)
{
	car[i].g =1;
}
	else
	if (car[i].god>=1982 && car[i].god<=1984)
{
	car[i].g=2;
}
	else
	if (car[i].god>=1985 && car[i].god<=1987)
{
	car[i].g =3;
}
	else
	if (car[i].god>=1988 && car[i].god<=1990)
{
	car[i].g =4;
}
	else
	if (car[i].god>=1991 && car[i].god<=1993)
{
	car[i].g =5;
}
	else
	if (car[i].god>=1994 && car[i].god<=1996)
{
	car[i].g =6;
}
	else
	if (car[i].god>=1997 && car[i].god<=1999)
{
	car[i].g =7;
}
	else
	if (car[i].god>=2000 && car[i].god<=2003)
{
	car[i].g =8;
}
	else
	if (car[i].god>=2004 && car[i].god<=2006)
{
	car[i].g =9;
}
	else
	if (car[i].god>=2007)
{
	car[i].g =10;
}
	 printf("Enter cena:");
     scanf("%d", &car[i].cena);
	 if (car[i].cena<=1000-1)
	{
		car[i].c=1;
	}
	else
	if (car[i].cena>=1000 && car[i].cena<1500)
	{
		car[i].c=1;
	}
else
	if (car[i].cena>=1500-1 && car[i].cena<2000)
	{
		car[i].c=2;
	}
else
	if (car[i].cena>=2000-1 && car[i].cena<2500)
	{
		car[i].c=3;
	}
else
	if (car[i].cena>=2500-1 && car[i].cena<3000)
	{
		car[i].c=4;
	}
else
	if (car[i].cena>=3000-1 && car[i].cena<3500)
	{
		car[i].c=5;
	}
else
	if (car[i].cena>=3500-1 && car[i].cena<4000)
	{
		car[i].c=6;
	}
else
	if (car[i].cena>=4000-1 && car[i].cena<4500)
	{
		car[i].c=7;
	}
else
	if (car[i].cena>=4500-1 && car[i].cena<5000)
	{
		car[i].c=8;
	}
else
	if (car[i].cena>=5000-1 && car[i].cena<5500)
	{
		car[i].c=9;
	}
else
	if (car[i].cena>=5500-1 && car[i].cena<6000)
	{
		car[i].c=10;
	}
else
	if (car[i].cena>=6000)
	{
		car[i].c=10;
    }
	car[i].bal=car[i].p+car[i].g+car[i].c;
	}
    for(i=0;i<n;i++)
    {
        printf("Model %s\n", car[i].model);
        printf("Probeg %d\n", car[i].p);
        printf("God %d\n", car[i].g);
		printf("Cena %d\n", car[i].c);
        printf("ball %d\n", car[i].bal);
    }
}
Просто, уже которую статью читаю ни как не разберусь с этой сортировкой.
MrBobyara вне форума Ответить с цитированием
Старый 16.06.2010, 09:55   #2
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

а где тут собственно сортировка? не вижуу...
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 16.06.2010, 11:30   #3
MrBobyara
Пользователь
 
Регистрация: 11.06.2010
Сообщений: 28
По умолчанию

Я ж и спрашиваю, как её сделать ?
MrBobyara вне форума Ответить с цитированием
Старый 16.06.2010, 11:42   #4
Snejnaya
Форумчанин
 
Регистрация: 12.05.2010
Сообщений: 219
По умолчанию

классическая сортировка методом "пузырька" выглядит так:

Код:
for(i=0;i<n;i++)
for(j:=i;j<n;j++)
 if(car[i].bal>car[j].bal)
 {vspom=car[i].bal;
  car[i].bal=car[j].bal;
  car[j].bal=vspom;
 }
где vspom - вспомогательная переменная

PS сорри, подправила код!

Последний раз редактировалось Snejnaya; 16.06.2010 в 11:45.
Snejnaya вне форума Ответить с цитированием
Старый 16.06.2010, 11:48   #5
MrBobyara
Пользователь
 
Регистрация: 11.06.2010
Сообщений: 28
По умолчанию

Спасибо, я так и сделал, только я забыл что в пузырьку нужно второй for
MrBobyara вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сортировка массива структур silence_master Помощь студентам 4 05.05.2010 21:26
Сортировка массива структур 3OH! Помощь студентам 4 02.05.2010 21:32
Си : сортировка массива структур Чубрик Общие вопросы C/C++ 5 23.01.2010 22:02
Сортировка массива структур. nec117 Общие вопросы C/C++ 5 22.02.2009 18:01
Сортировка массива структур arturka Помощь студентам 1 21.06.2008 14:15