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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2011, 20:47   #1
Авторитет
Пользователь
 
Регистрация: 08.04.2010
Сообщений: 74
По умолчанию Сортировка не хочет работать :(

Помогите форумчане!
не работает (вернее странно работает сортировка пузырьком)
Сам С++ не очень хорошо знаю, просьба не смеяться над моим кодом
Код:
#include "stdafx.h"

#include <list>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream>
#include <windows.h>
#include <string.h>
#include <fstream>
using namespace std; 

//создание функции работы с консольной графикой
void SetColor(int text, int background)
{
   HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
   SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text));
}

void BubbleSort (int* a)
{
   int top = 8;
   while (top != 0)
   {
     for (int i = 0; i < top; i++)
     {
       if (a[i] > a[i+1])
       {
         int temp;
         temp = a[i];
         a[i] = a[i+1];
         a[i+1] = temp;
       }
     }
     top--;
   }
} 

void menu()
{
	SetColor( 2, 0);
	cout<<"\n0: Загрузка задания"<<endl;
    cout<<"\n1: Вывод сортировочного массива"<<endl;
	cout<<"\n2: Запись в файл"<<endl;
    cout<<"\n9: Выход"<<endl;
}
int* arr;//создаем динамический массив
void main()
{
	setlocale(LC_ALL,"Russian");//подключение русских символов
	int n;//размерность массива
	int* arr;//создаем динамический массив
	int	k; //случайное число
	cout<<"Введите размерность массива"<<endl;
	cin>>n;//вводим данные с клавиатуры
	arr = new int[n];

	for (int i=0;i<n;i++)
	{
		k = rand() % 9 + 1;//случ число в пределах от 0,...,9
		arr[i] = k;
		cout<<arr[i]<<", ";
	}
	cout<<endl;//завершаем строку

	SetColor(14, 9);
	
	char c;//навигационная переменная
		do 
		{
			menu();
			cin >> c;
			switch (c) 	
			{
				 case '0':cout<<"\nЗагрузка задания:"<<endl;
					 cout<<"\aНачальное значение";
					 for (int i =0; i<n; i++)
					 {
						  cout << " "<< arr[i]; 
					 }
					 cout<<endl;
					 break;

				 case '1':cout<<"\nВывод сортировочного массива:"<<endl;     
					{ 
						BubbleSort(arr); 
						for (int i = 0; i < n; i++)
						{
							cout << " "<< arr[i];
						}
					 cout<<endl;
					 
					}
					 break;	
				 case '2':cout<<"\nЗапись в файл->"<<endl;     
					{ //создание файла и занесение задания
						 ofstream output_file("d:\\FILENAME.TXT");
						 
						 BubbleSort(arr); 
						 
						for (int i = 0; i < n; i++)
						{
						  output_file <<" "<< arr[n];
						}
					//	output_file<<endl;
						
					     //ПРОВЕРКА ОШИБОК ПРИ ВЫПОЛНЕНИИ ФАЙЛОВЫХ ОПЕРАЦИЙ
						 if (output_file.fail()) 
						{
							 cerr << "Ошибка открытия FILENAME.TXT!" << endl;
							 exit(1);
						}
						 else 
							 cout<<"\a\nЗапись завершена"<<endl;
						 break;	
					}
					 

				case '9': cout<<"\a\nВы действительно хотите выйти?\nДля подтверждения нажмите y"<<endl;
					char quit;
					cin>>quit;
					if (quit=='y')
					exit(1);
					else break;
			}	
		}
		while (c!=9);	
}
Авторитет вне форума Ответить с цитированием
Старый 05.05.2011, 21:10   #2
Авторитет
Пользователь
 
Регистрация: 08.04.2010
Сообщений: 74
По умолчанию

все ответ найден!
Код:
//Сортировка пузырьком

#include "stdafx.h"

#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <windows.h>
#include <fstream>

using namespace std; 

//создание функции работы с консольной графикой
void SetColor(int text, int background)
{
   HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
   SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text));
}

//
int BubbleSort(int x[],int n) 
{
 int hold,j,pass,switched = 1;
 for(pass = 0; pass < n-1 && switched == 1;pass++) 
 {
    switched=0;
    for (j=0;j<n-pass-1;j++)
        if (x[j]>x[j+1]) 
		{
            switched=1;
            hold = x[j];
            x[j] = x[j+1];
            x[j+1]=hold;
        }
    }
    return(0);
}

void menu()
{
	SetColor( 2, 0);
	cout<<"\n0: Загрузка задания"<<endl;
    cout<<"\n1: Вывод сортировочного массива"<<endl;
	cout<<"\n2: Запись в файл"<<endl;
    cout<<"\n9: Выход"<<endl;
}
int* arr;//создаем динамический массив
void main()
{
	setlocale(LC_ALL,"Russian");//подключение русских символов
	int n;//размерность массива
	int* arr;//создаем динамический массив
	int	k; //случайное число
	cout<<"Введите размерность массива"<<endl;
	cin>>n;//вводим данные с клавиатуры
	arr = new int[n];

	for (int i=0;i<n;i++)
	{
		k = rand() % 9 + 1;//случ число в пределах от 0,...,9
		arr[i] = k;
		cout<<" "<<arr[i];
	}
	cout<<endl;//завершаем строку

	SetColor(14, 9);
	
	char c;//навигационная переменная
		do 
		{
			menu();
			cin >> c;
			switch (c) 	
			{
				 case '0':cout<<"\nЗагрузка задания:"<<endl;
					 cout<<"\aНачальное значение";
					 for (int i =0; i<n; i++)
					 {
						  cout << " "<< arr[i]; 
					 }
					 cout<<endl;
					 break;

				 case '1':cout<<"\nВывод сортировочного массива:"<<endl;     
					{
						BubbleSort(arr, n); 
						for (int i = 0; i < n; i++)
						{
							cout << " "<< arr[i];
						}		 
						cout<<endl;
					}
					 break;	
				 case '2':cout<<"\nЗапись в файл->"<<endl;     
					{ //создание файла и занесение задания
						 ofstream output_file("d:\\FILENAME.TXT"); 
						 BubbleSort(arr, n); 
						for (int i = 0; i < n; i++)
						{
					 	  output_file <<" "<< arr[i];
						}
						output_file<<endl;
						
					     //ПРОВЕРКА ОШИБОК ПРИ ВЫПОЛНЕНИИ ФАЙЛОВЫХ ОПЕРАЦИЙ
						 if (output_file.fail()) 
						{
							 cerr << "Ошибка открытия FILENAME.TXT!" << endl;
							 exit(1);
						}
						 else 
							 cout<<"\a\nЗапись завершена"<<endl;
						 	
					}
					 break;
				case '9': cout<<"\a\nВы действительно хотите выйти?\nДля подтверждения нажмите y"<<endl;
					char quit;
					cin>>quit;
					if (quit=='y')
					exit(1);
					else break;
			}	
		}
		while (c!=9);	
}
Авторитет вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
fabs() не хочет работать Razza Общие вопросы C/C++ 2 28.12.2010 02:21
Не хочет работать iif alco84 Microsoft Office Access 6 18.03.2010 09:48
ну не хочет работать!!! MySQL artush1984 Общие вопросы C/C++ 1 06.09.2009 13:41
Не хочет работать образ диска Манжосов Денис :) Операционные системы общие вопросы 8 12.08.2009 03:45
Не хочет работать OpenPictureDialog guffer Общие вопросы Delphi 4 08.07.2009 20:14