0 / 0 / 0
Регистрация: 18.03.2012
Сообщений: 30
1

Дана последовательность из N целых чисел (где N - константа)

31.03.2012, 21:00. Показов 1308. Ответов 10
Метки нет (Все метки)

Дана последовательность из N целых чисел (где N - константа). Определить количество инверсий в этой последовательности (т.е. таких пар элементов, в которых большее число находится слева от меньшего: xi > xj при i<j)

нужно использовать минимум операторов
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.03.2012, 21:00
Ответы с готовыми решениями:

Дана последовательность целых чисел a1,a2 ,an . Образовать новую последовательность, выбросив из исходной те члены, к
Код не всегда работает так как нужно. Не могу понять в чем проблема. Помогите... import...

Дана последовательность из n целых чисел. Сформировать новую последовательность
Всем добрый день. Дана последовательность из n целых чисел. Сформировать новую...

Дана последовательность целых чисел. Получить новую последовательность.
Помогите решить задачу! Дана последовательность целых чисел a1, a2, …, an (n&lt;=40). Получить новую...

дана последовательность целых чисел a=(a1,a2,.,an). Получите новую последовательность, выбросив из исходной элементы со значением max (a1,a2,.,an
дана последовательность целых чисел a=(a1,a2,....,an). Получите новую последовательность, выбросив...

10
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
31.03.2012, 21:12 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "stdio.h"
int main()
{
 const int N=10;
 int a[10]={5,6,4,3,5,6,7,3,2,10};
 int count=0;
 for (int i=0;i<N-1;i++)
  for (int j=i+1;j<N;j++)
   if (a[i]>a[j]) count++;
 printf("%d",count);
 return 0;
}
1
0 / 0 / 0
Регистрация: 18.03.2012
Сообщений: 30
01.04.2012, 17:53  [ТС] 3
Nekto, ваша программа получается только первую пару считает
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.04.2012, 18:18 4
Так как-то
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
int main()
{
    int arr[] = { 1, 2, 4, 3, 5, 3 };
    int N = sizeof(arr) / sizeof(*arr);
    
    int count = 0;
    
    for (int i = 1; i < N; ++i)
        count += arr[i - 1] > arr[i];
        
    std::cout << count << std::endl;
}
0
Диссидент
Эксперт C
27180 / 16939 / 3743
Регистрация: 24.12.2010
Сообщений: 38,116
01.04.2012, 18:25 5
Цитата Сообщение от kerzh Посмотреть сообщение
Nekto, ваша программа получается только первую пару считает
Чего это? Все правильно должна считать!

diagon, А у вас считает только соседние инверсии.
Условие
Цитата Сообщение от kerzh Посмотреть сообщение
большее число находится слева от меньшего: xi > xj при i<j)
То, что j==i+1 нигде не сказано
1
0 / 0 / 0
Регистрация: 18.03.2012
Сообщений: 30
01.04.2012, 18:53  [ТС] 6
Цитата Сообщение от Байт Посмотреть сообщение
j==i+1 нигде не сказано
это ведь должны быть пары элементов
0
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
01.04.2012, 18:55 7
Цитата Сообщение от kerzh Посмотреть сообщение
это ведь должны быть пары элементов
пара элементов = 2 элемента. Т.е. любых 2 элемента. Единственные ограничения, которые дали, это "xi > xj при i<j".
0
0 / 0 / 0
Регистрация: 18.03.2012
Сообщений: 30
03.04.2012, 17:54  [ТС] 8
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
#include <stdio.h>
#include <conio.h>
#include <locale.h>
 
    
void main()
{
 setlocale (LC_ALL, "russian");
 
 const int N=10;
 int a[N];
 int i, j;
 
 
 printf("Введите последовательность\n");
 for (i=1;i<N;i++);
 {
     while (scanf("%d",&a[i])!=1)
     {
         printf("\nНекорректный ввод. Повторите попытку:\n");
         fflush(stdin);
     }
 }
 
 int count=0;
 
 for (i=0;i<N-1;i++);
 {
   for (j=i+1;j<N;j++);
   {
     if (a[i]>a[j]); 
       count++;
   }
 }
 
       
 
 printf("Количество инверсий в этой последовательности: %d",count);
 _getch();
}
Вот мой код. Ответ всегда единица, или ноль, если инверсий нет
0
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
03.04.2012, 21:19 9
Цитата Сообщение от kerzh Посмотреть сообщение
Вот мой код. Ответ всегда единица, или ноль, если инверсий нет
это где так учат после оператора for ставить ";"? Циклы тогда впустую гоняются.

Добавлено через 1 минуту
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 <stdio.h>
#include <conio.h>
#include <locale.h>
 
int main()
{
 setlocale (LC_ALL, "russian");
 
 const int N=10;
 int a[N];
 int i, j;
 
 
 printf("Ââåäèòå ïîñëåäîâàòåëüíîñòü\n");
 for (i=0;i<N;i++)
 {
     while (scanf("%d",&a[i])!=1)
     {
         printf("\nÍåêîððåêòíûé ââîä. Ïîâòîðèòå ïîïûòêó:\n");
         fflush(stdin);
     }
 }
 
 int count=0;
 
 for (i=0;i<N-1;i++)
 {
   for (j=i+1;j<N;j++)
   {
     if (a[i]>a[j])
       count++;
   }
 }
 printf("Êîëè÷åñòâî èíâåðñèé â ýòîé ïîñëåäîâàòåëüíîñòè: %d",count);
 _getch();
 return 0;
}
0
0 / 0 / 0
Регистрация: 18.03.2012
Сообщений: 30
04.04.2012, 10:17  [ТС] 10
Nekto, спасибо. по невнимательности(
0
1 / 1 / 0
Регистрация: 05.04.2012
Сообщений: 46
05.04.2012, 14:30 11
Подскажите, как теперь объединить алгоритм ввода чисел в матрицу с поиском инверсий
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.04.2012, 14:30
Помогаю со студенческими работами здесь

Дана последовательность целых чисел, за которой следует ноль. Определите, содержит ли последовательность числа, являющиеся степенями 2
Задача: Дана последовательность целых чисел, за которой следует ноль. Определите, содержит ли...

Дана последовательность целых чисел a1,a2,. . Образовать новую последовательность, исключив из исходной те члены, которые равны min(a1,a2,.)
Последовательность находится в StringGrid.

Дана последовательность целых чисел. Образовать новую последовательность, выбросив из исходной те члены, которые равны min
Написала код, а он не работает. Приложение запускается, а при нажатии кнопки выдает ошибку....

Дана последовательность целых чисел
Дана последовательность целых чисел а1,а2,...,а18, в начале которой записаны несколько равных между...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru