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

Cортировка массива - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Условие переменной http://www.cyberforum.ru/cpp-beginners/thread394340.html
Здравствуйте мне нужно поставить условие на переменную что это число от 0 до 200х.. вводим не дробное число и не символ и не слово.помогите пожалуйста #include "stdafx.h" #include "iostream" #include <conio.h> using namespace std; int _tmain(int argc, _TCHAR* argv) { int n; cin>>n;
C++ Сложить элементы String Как сложить численные элементы string или конвертировать в int отдельные элементы массива? http://www.cyberforum.ru/cpp-beginners/thread394336.html
C++ Дана строка символов, пользователь вводит комбинацию символов проверить сколько раз встечается эта комбинация в строке.
Дана строка символов, пользователь вводит комбинацию символов проверить сколько раз встечается эта комбинация в строке. Например: Мама, материал, ломала. Комбинация "ма" встречаеться в предложении 4 раза
C++ перевести из Pascal в С++
Помогите пожалуйста перевести код программы с языка паскаль на С++ program Dostup; uses crt; type TRights=set of (RRead,RWrite,RGrant); const FullRights: TRights=; MaxObj=5; MaxUsers=3; var Users: array of string;
C++ Обработка одномерных массивов с использованием указателей (Visual studio) C++ http://www.cyberforum.ru/cpp-beginners/thread394326.html
Обработка одномерных массивов с использованием указателей Задание: составить программу заданной в лабораторной работе №5 обра-ботки массива целых чисел с использованием адресной ароиф-метики. В процессе обработки использовать перестановки элементов внутри массива, не создавая новых массивов. Заполнение исходного массива организовать с клавиатуры. Исходный и обработанный массив выводить на...
C++ a в степени n с помощью рекурсии Подскажите где ошибся? #include <iostream> using namespace std; int Square(int,int); int main(){ int p,q; cin>>p>>q; подробнее

Показать сообщение отдельно
alenka-46
16 / 16 / 2
Регистрация: 28.04.2011
Сообщений: 38
29.11.2011, 18:34     Cортировка массива
Попробуйте проверить такую программу, я её немножко доработала
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
 
void main()
{
   clrscr();
   int i, j, k,   // счётчики для циклов
       r,         // дополнительная переменная для перестановки элементов массива
       n,         // длина массива
       flag=-1; // переменная для смены минимума на максимум
 
// просим пользователя ввести размер массива
   cout <<"\n \n   Введите количество элементов массива : ";
   cin >> n;
 
// создаём динамический массив нужной длины 
   int *a=new int [n];
 
//просим пользователя ввести элементы массива
   for(i=0; i<n; i++)
   {
      cout <<"\n Введите " <<i+1 <<" элемент массива : ";
      cin >> a[i];
   }
 
   clrscr(); // очистка экрана
 
// печать начального массива   
   cout << "\n Начальный массив : ";
   for(i=0; i<n; i++)
      cout <<a[i] << " ";
 
// сам алгоритм перестановки  
   for(i=0; i<n-1; i+=2) // переставляем пару минимумов или максимумов в начало в цикле
  {
   if( flag == 1)                 //  если нужно переместить в начало максимумы 
   for( j = n-1; j > i+1; j--) // проверяем все элементы левее i до конца массива
   {
       if( a[j-1] > a[j-2] )    // сравниваем первый и второй элемент в тройке чисел
         {
           r=a[j-1];
           a[j-1]=a[j-2];
           a[j-2]=a[j-1];
         }
         if( a[j] > a[j-1] ) // сравниваем второй и третий элемент в тройке чисел
         {
           r=a[j];
           a[j]=a[j-1];
           a[j-1]=a[j];
         }
         if( a[j-1] > a[j-2] ) // снова сравниваем первый и второй элемент в тройке чисел,
         {                         // так как второй и третий могли быть переставлены
           r=a[j-1];
           a[j-1]=a[j-2];
           a[j-2]=a[j-1];
         }
   }
   else                            // если нужно перенести в начало цикла пару минимумов,
   for( j = n-1; j > i+1; j--)// то делаем почти тоже самое (только в циклах if поменялся знак) 
  {
      if( a[j-1] < a[j-2] )
         {
           r=a[j-1];
           a[j-1]=a[j-2];
           a[j-2]=a[j-1];
         }
         if( a[j] < a[j-1] )
         {
           r=a[j];
           a[j]=a[j-1];
           a[j-1]=a[j];
         }
         if( a[j-1] < a[j-2] )
         {
           r=a[j-1];
           a[j-1]=a[j-2];
           a[j-2]=a[j-1];
         } 
   }
   // печатаем получившийся результат после одной перестановки
   cout << " \n  i= " <<i  <<" flag=" <<flag <<"\t  ";
   for(k=0; k<n; k++)
      cout <<a[k] <<" ";
 
   flag*=(-1); // меняем знак flag , чтобы потом вместо максимума искать минимум и наоборот
   }
 
// печатаем изменённый массив
   cout << "\n\n  Преобразованный массив: ";
   for(i=0; i<n; i++)
      cout <<" " <<a[i];
 
   cout <<"\n\n   Программа завершила свою работу нажмите <Enter>";
   getchar();
}
 
Текущее время: 03:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru