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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
MerT
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 6
#1

Последовательность - C++

24.01.2010, 20:57. Просмотров 339. Ответов 5
Метки нет (Все метки)

Нужна помощь в решении вот такой задачки : " Сортирование последовательности элементов следующим образом : ищем максимальный элемент последовательности и переносим его в конец последовательности , дальше используем этот метод с элементами которые остались, кроме последнего( стоит уже на своём месте) и тд.."

ЗЫ: Я решил это вот так , но думаю что нужно по другому(
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
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
#define n 5
void main()
{int i;
float a[n];
float *p;
clrscr();
cout<<"\n Vvedite posledovatelnist' ";
for (i=0;i<n;i++)
 cin>>a[i];
 int flag;
p=new float;
do{ flag=0;
for(i=0;i<n-1;i++)
 if(a[i]>a[i+1])
   { *p=a[i+1];
     a[i+1]=a[i];
     a[i]=*p;                         
     ++flag;
     } }
     while(flag);
cout<<"\n Masiv posle sortirovki";
 for (i=0;i<n;i++)
  cout<<" "<<a[i];
  delete[]p;
  getch();
  }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2010, 20:57     Последовательность
Посмотрите здесь:

Задана последовательность из N чисел. Найти самую длинную последовательность, обладающую данным свойством - Turbo Pascal
Прошу помощи мастеров решить ОДНУ задачкУ: 1) Задана последовательность из N чисел. Найти самую длинную последовательность, обладающую...

Дана последовательность чисел ai. Построить новую последовательность. - Delphi
Здравствуйте... Я перечитал свой конспект, пробовал что-то сделать, но у меня ничего не вышло... Были версии близки к заданию, но до конца...

Дано натуральное число а. записать убывающую последовательность чисел без последней цифры предыдущего ( например а=2345, полученная последовательность - Turbo Pascal
помогите пожалуйста решить задачу двумя способами, через функции и процедуры! дано натуральное число а. записать убывающую...

Задана последовательность слов. Определить частоту вхождения каждого слова в последовательность. - C++
Доделать программу, чтобы работала как надо Задана последовательность слов. Определить частоту вхождения каждого слова в...

2. Дана целочисленная последовательность. Определить количество вхождений каждого числа в последовательность - Pascal
Написал программу var a,c:array of integer; count,i,p,u: integer; begin for i:=1 to 10 do begin read(p); a:=p; end;

Задана последовательность N вещественных чисел. Отсортировать последовательность по убыванию методом выбор - Pascal ABC
И снова прошу помощи написать код. Задана последовательность N вещественных чисел. Отсортировать последовательность по убыванию...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
24.01.2010, 21:12     Последовательность #2
Странные махинации
Day
1154 / 959 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
24.01.2010, 21:13     Последовательность #3
Конечно, по-другому!
Например так
Код
int k;
while(n>1) {
   k = 0;
   for(i=1; i<n; i++) 
       if (a[i] > a[k]) k = i;
   if (k!=n-1) {
      t = a[n-1];
      a[n-1] = a[k];
      a[k] = t;
   }
    n--;
}
(Не роверял, воможны описки)
Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
24.01.2010, 21:24     Последовательность #4
Сейчас предложу свою версию

Добавлено через 9 минут
ЧТо-то типа такого:
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
#include <iostream.h>
void main(){
const int size = 5;
int mas[size] = {1,5,9,6,2};
 
int max = mas[0];
int posMax = 0;
for(int j=0;j<size;j++)
if(mas[j]>max){
    max=mas[j];
    posMax=j;
}
 
 
int tmp=mas[size-1];
mas[size-1]=max;  //ставим в конец максимальный
mas[posMax] = tmp;
 
 
 
 
//Далее сортируем выбором сначала не трогая последний
for(int i=0;i<size-1;i++){
    for(int j=i+1;j<size-1;j++){
        if(mas[j]<mas[i]){
        int tmp = mas[i];
        mas[i]=mas[j];
        mas[j]= tmp;
        }
 
    }
 
}
 
for(int e=0;e<size;e++)cout<<mas[e];
cout<<'\n';
}
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
24.01.2010, 22:02     Последовательность #5
И еще вариант:
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
#include <iostream>
#include <assert.h>
 
void Swap(int& left, int& right)
{
  int tmp = left;
  
  left  = right;
  right = tmp;
}
 
int Max(const int* arr, int size)
{
  assert(arr);
 
  int max_index = -1;
 
  for(int i = 0; i < size; ++i)
    if(arr[i] > arr[max_index])
      max_index = i;
 
  return max_index;
}
 
void Sort(int* arr, int size)
{
  assert(arr);
 
  for(int i = 0; i < size - 1; ++i){
    int max_index = Max(arr, size - i);
    Swap(arr[max_index], arr[size - i - 1]);
  }
}
 
int main()
{
  int       arr[] = {5, 4, 3, 2, 1,};
  const int size  = sizeof(arr) / sizeof(arr[0]);
 
  Sort(arr, size);
 
  for(int i = 0; i < size; ++i)
    std::cout << arr[i] << " ";
 
  std::cout << std::endl;
 
  return 0;
}
Результат: http://codepad.org/jPnvKaX5
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2010, 23:12     Последовательность
Еще ссылки по теме:

Дана последовательность А1...А50. Получить новую последовательность, исключив отрицательные элементы - Pascal
Дана последовательность А1...А50. Получить новую последовательность, исключив отрицательные элементы

Вводится последовательность из N вещественных чисел. Определить, является ли последовательность знакочередующе - C++
Вводится последовательность из N вещественных чисел. Определить, является ли последовательность знакочередующейся. не пойму как сделать,...

Считать последовательность цифр и преобразовать ее в последовательность соответствующих латинских букв - Pascal ABC
нужно чтобы 1-A 2-B 3-C 4-D и так до 26 латинских букв.

Считать последовательность цифр и преобразовать ее в последовательность соответствующих латинских букв - Turbo Pascal
Все что сам смог написать в Паскале Program lit; Var A,N:char; Begin A:=chr(70); N:=A; writeln(ord(N)); Writeln(A); End.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
MerT
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 6
24.01.2010, 23:12  [ТС]     Последовательность #6
Цитата Сообщение от Genius Ignat Посмотреть сообщение
Сейчас предложу свою версию

Добавлено через 9 минут
ЧТо-то типа такого:
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
#include <iostream.h>
void main(){
const int size = 5;
int mas[size] = {1,5,9,6,2};
 
int max = mas[0];
int posMax = 0;
for(int j=0;j<size;j++)
if(mas[j]>max){
    max=mas[j];
    posMax=j;
}
 
 
int tmp=mas[size-1];
mas[size-1]=max;  //ставим в конец максимальный
mas[posMax] = tmp;
 
 
 
 
//Далее сортируем выбором сначала не трогая последний
for(int i=0;i<size-1;i++){
    for(int j=i+1;j<size-1;j++){
        if(mas[j]<mas[i]){
        int tmp = mas[i];
        mas[i]=mas[j];
        mas[j]= tmp;
        }
 
    }
 
}
 
for(int e=0;e<size;e++)cout<<mas[e];
cout<<'\n';
}



Тут выдаёт правельный ответ, но не могу точно понять как((

Добавлено через 34 минуты
Всем большое спасибо, проблема решина
Yandex
Объявления
24.01.2010, 23:12     Последовательность
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru