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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2010, 19:26   #1
Sonny01
Пользователь
 
Регистрация: 07.11.2009
Сообщений: 49
По умолчанию Сортировка С++

помогите пожалуйста отсортировать пузырьком по номеру, не выходит
немогу разобраться.

Код:
#include <iostream.h>

 struct bd

{ char name [10];
  float price;
  float number;
} st [3 ];

 int main ()
{ for (int i=0; i<3; i++)
{ cout << "Enter name: ";
  cin >> st [i].name;
  cout << "Enter price: ";
  cin >> st [i].price;
  cout << "Enter number: ";
  cin >> st [i].number;
  cout << "" << endl; }


  for ( i=0; i<3; i++);
  { for (int j=3-1; j>1; j++);
  {if (st [j-1].number > st [j].number)
  { bd x;
   x=st[j-1]; st[j-1]=st[j];
   st[j]=x;}
  
 cout << "Name: " << st [i].name << endl;
  cout << "Price: " << st [i].price << endl;
  cout << "Number: " << st [i].number << endl; } }

 return 0; }
Sonny01 вне форума Ответить с цитированием
Старый 10.04.2010, 22:31   #2
[CODER]
Форумчанин
 
Аватар для [CODER]
 
Регистрация: 02.02.2010
Сообщений: 305
По умолчанию

Код:
#include <iostream.h>
#include <string.h>
struct bd{
  char name[10];
  float price;
  int number;
}  st[3];

int main () {
   int i, n, tempnum;
   char tempnam[10];
   float temppric;
   bool flag=true;
cout << "кол-во товаров: ";
  cin >> n;
for (i=0; i<n; i++){
  cout << "Enter name: ";
  cin >> st[i].name;
  cout << "Enter price: ";
  cin >> st[i].price;
  cout << "Enter number: ";
  cin >> st[i].number;
  cout << "" << endl;
  }
	while (flag)  {
		flag=false;
	 for (i=0; i<n-1; i++)  {
	   if (st[i+1].number < st[i].number) {
		 flag=true;
		 //--------   name
		 strcpy(tempnam, st[i+1].name);
		 strcpy(st[i+1].name, st[i].name);
		 strcpy(st[i].name, tempnam);
		  //--------  price
		 temppric=st[i+1].price;
		 st[i+1].price=st[i].price;
		 st[i].price=temppric;
		 //--------   namber
		 tempnum=st[i+1].number;
		 st[i+1].number=st[i].number;
		 st[i].number=tempnum;
	   }
	 }
	}
	 for (i=0; i<n; i++){
		 cout << "Name: " << st [i].name << endl;
		 cout << "Price: " << st [i].price << endl;
		 cout << "Number: " << st [i].number << endl;
	 }
 system("pause");
 return 0;
 }
Нужно сначала сортировать, а уже потом выводить в отдельном цикле
Советую пересмотреть алгоритм сортировки пузырьком
Skype: CODERua
[CODER] вне форума Ответить с цитированием
Старый 11.04.2010, 12:24   #3
Sonny01
Пользователь
 
Регистрация: 07.11.2009
Сообщений: 49
По умолчанию

спасибо, работает

Последний раз редактировалось Sonny01; 11.04.2010 в 20:51.
Sonny01 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка Шелла и Шейкер-сортировка AleksandrMakarov Паскаль, Turbo Pascal, PascalABC.NET 11 11.03.2012 12:18
паскаль,одномерный массив,сортировка вставка,сортировка убывания,от максимального до конца немозг Помощь студентам 11 06.02.2010 21:57
Сортировка методом линейного выбора и "быстрая" сортировка Карол Помощь студентам 4 27.09.2009 19:52
Сортировка файлов в Explorer vs сортировка в Delphi mutabor Общие вопросы Delphi 11 04.09.2009 14:32
1. Сортировка Шелла по убыванию 2. Сортировка вставками по убыванию Arkuz Помощь студентам 1 25.09.2007 17:16