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

Одномерный массив, сортировка - C++

Восстановить пароль Регистрация
 
aksdaqg
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 112
13.04.2014, 18:08     Одномерный массив, сортировка #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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <vcl.h>
#include <cstdlib>
#include <ctime>
#include <iostream>
 
 
 
using namespace std;
 
//---------------------------------------------------------------------------
 
#pragma argsused
void main()
{
srand(time(NULL));         //типа рандомайз в делфи
const n=10;                //размерность массива
int a[n];                  //целочисленный массив
 
for (int i=0;i<n;i++){     //заполнение массива
a[i]=rand()%99+1;
}
 
for (int i=0;i<n;i++){     //вывод массива
cout << a[i] << ' ';
}
 
cout <<endl;              //перевод строки
 
system("pause");
 
}
//---------------------------------------------------------------------------
Миниатюры
Одномерный массив, сортировка  
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kiborgdelto
70 / 72 / 27
Регистрация: 23.03.2011
Сообщений: 141
13.04.2014, 18:44     Одномерный массив, сортировка #2
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#include <ctime>
#include <iostream>
using namespace std;
 
void print(int *a, int n)
{
    for (int i=0;i<n;i++)     //вывод массива
    cout << a[i] << ' ';
    cout <<endl;              //перевод строки
}
 
void bubbleSort(int* arr, int size)// пузырьком
{
    int tmp;
 
    for(int i = 0; i < size - 1; ++i) // i - номер прохода
    {            
        for(int j = 0; j < size - 1; ++j) // внутренний цикл прохода
        {     
            if (arr[j + 1] < arr[j]) 
            {
                tmp = arr[j + 1]; 
                arr[j + 1] = arr[j]; 
                arr[j] = tmp;
            }
        }
    }
}
//---------------------------------------------------------------------------
 
 
void main()
{
setlocale(0,"");
srand(time(NULL));         //типа рандомайз в делфи
const int n1=20;                //размерность массива
int a[n1];                  //целочисленный массив
int n;
n=10;
for (int i=0;i<n;i++)    //заполнение массива
    a[i]=rand()%99+1;
 
print(a,n);// вывод массива
 
int s;// удаление элемента
do
{
    cout<<"Введите номер элемента который хотите удалить\n";
    cin>>s;
    for (int i=s-1;i<n-1;i++)
        a[i]=a[i+1];
    n--;
    cout<<"Хотиту удалить ещё 1 элемент?\nесли да нажмите 1\nесли нет то нажмите 2\n";
    cin>>s;
}
while(s==1);
 
print(a,n);// вывод массива
 
do// добавление элемента
{
    cout<<"Введите элемент который хотите добавить\n";
    cin>>s;
    for (int i=n;i>0;i--)
        a[i]=a[i-1];
    a[0]=s;
    n++;
    cout<<"Хотиту добавить ещё 1 элемент?\nесли да нажмите 1\nесли нет то нажмите 2\n";
    cin>>s;
}
while(s==1);
 
print(a,n);// вывод массива
 
do// перестановка элементов
{
    int s1,s2;
    cout<<"Введите номера элементов которые хотите переставить местами\n";
    cin>>s>>s1;
    s2=a[s-1];
    a[s-1]=a[s1-1];
    a[s1-1]=s2;
    cout<<"Хотиту переставить ещё пару элементов?\nесли да нажмите 1\nесли нет то нажмите 2\n";
    cin>>s;
}
while(s==1);
 
print(a,n);// вывод массива
 
do// поиск элементов
{
    cout<<"Введите элемент который хотите найти\n";
    cin>>s;
    cout<<"номера элементов равных "<<s<<endl;// количество сравнений равно индексу найденного элемента
    int s1=0;
    for (int i=0;i<n;i++)
        if(a[i]==s)
        {
            cout<< i+1<<" ";
            s1++;
        }
    if(s1==0) cout<<"Таких элементов нет\n";
    cout<<"\nХотите найти другой элемент?\nесли да нажмите 1\nесли нет то нажмите 2\n";
    cin>>s;
}
while(s==1);
 
bubbleSort(a,n);
 
print(a,n);// вывод массива
 
do// поиск элементов
{
    cout<<"Введите элемент который хотите найти\n";
    cin>>s;
    cout<<"номера элементов равных "<<s<<endl;// количество сравнений равно индексу найденного элемента
    int s1=0;
    for (int i=0;i<n;i++)
        if(a[i]==s)
        {
            cout<< i+1<<" ";
            s1++;
        }
    if(s1==0) cout<<"Таких элементов нет\n";
    cout<<"\nХотите найти другой элемент?\nесли да нажмите 1\nесли нет то нажмите 2\n";
    cin>>s;
}
while(s==1);
 
system("pause");
 
}
только насчёт 9 и 13 не уверен, по тому как в одномерном массиве количество сранений необходимое для нахождение элемента рано индексу данного элемента +1, если вам нужун именно такой поиск то всё правильно если какой то значит я не смог понять какой нужен
П.С. не ту сортировку вставил ( сейчас поправлю
aksdaqg
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 112
13.04.2014, 18:48  [ТС]     Одномерный массив, сортировка #3
Вот задание.Надеюсь на помощь. Вот что у самого получилось... Что делать дальше?
1) Удалить элемент с заданным номером.
2) Добавить
3) Перестановки
4) Поиск
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <vcl.h>
#include <cstdlib>
#include <ctime>
#include <iostream>
 
 
 
using namespace std;
 
//---------------------------------------------------------------------------
 
#pragma argsused
void main()
{
srand(time(NULL));         //типа рандомайз в делфи
const n=10;                //размерность массива
int a[n];                  //целочисленный массив
 
for (int i=0;i<n;i++){     //заполнение массива
a[i]=rand()%99+1;
}
 
for (int i=0;i<n;i++){     //вывод массива
cout << a[i] << ' ';
}
 
cout <<endl;              //перевод строки
 
system("pause");
 
}
//---------------------------------------------------------------------------
kiborgdelto
70 / 72 / 27
Регистрация: 23.03.2011
Сообщений: 141
13.04.2014, 18:56     Одномерный массив, сортировка #4
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#include <ctime>
#include <iostream>
using namespace std;
 
void print(int *a, int n)
{
    for (int i=0;i<n;i++)     //вывод массива
    cout << a[i] << ' ';
    cout <<endl;              //перевод строки
}
 
void bubbleSort(int* arr, int size)// пузырьком
{
    int tmp;
 
    for(int i = 0; i < size - 1; ++i) // i - номер прохода
    {            
        for(int j = 0; j < size - 1; ++j) // внутренний цикл прохода
        {     
            if (arr[j + 1] < arr[j]) 
            {
                tmp = arr[j + 1]; 
                arr[j + 1] = arr[j]; 
                arr[j] = tmp;
            }
        }
    }
}
//---------------------------------------------------------------------------
 
 
void main()
{
setlocale(0,"");
srand(time(NULL));         //типа рандомайз в делфи
const int n1=20;                //размерность массива
int a[n1];                  //целочисленный массив
int n;
n=10;
for (int i=0;i<n;i++)    //заполнение массива
    a[i]=rand()%99+1;
 
print(a,n);// вывод массива
 
int s;// удаление элемента
do
{
    cout<<"Введите номер элемента который хотите удалить\n";
    cin>>s;
    for (int i=s-1;i<n-1;i++)
        a[i]=a[i+1];
    n--;
    cout<<"Хотиту удалить ещё 1 элемент?\nесли да нажмите 1\nесли нет то нажмите 2\n";
    cin>>s;
}
while(s==1);
 
print(a,n);// вывод массива
 
do// добавление элемента
{
    cout<<"Введите элемент который хотите добавить\n";
    cin>>s;
    for (int i=n;i>0;i--)
        a[i]=a[i-1];
    a[0]=s;
    n++;
    cout<<"Хотиту добавить ещё 1 элемент?\nесли да нажмите 1\nесли нет то нажмите 2\n";
    cin>>s;
}
while(s==1);
 
print(a,n);// вывод массива
 
do// перестановка элементов
{
    int s1,s2;
    cout<<"Введите номера элементов которые хотите переставить местами\n";
    cin>>s>>s1;
    s2=a[s-1];
    a[s-1]=a[s1-1];
    a[s1-1]=s2;
    cout<<"Хотиту переставить ещё пару элементов?\nесли да нажмите 1\nесли нет то нажмите 2\n";
    cin>>s;
}
while(s==1);
 
print(a,n);// вывод массива
 
do// поиск элементов
{
    cout<<"Введите элемент который хотите найти\n";
    cin>>s;
    cout<<"номера элементов равных "<<s<<endl;// количество сравнений равно индексу найденного элемента
    int s1=0;
    for (int i=0;i<n;i++)
        if(a[i]==s)
        {
            cout<< i+1<<" ";
            s1++;
        }
    if(s1==0) cout<<"Таких элементов нет\n";
    cout<<"\nХотите найти другой элемент?\nесли да нажмите 1\nесли нет то нажмите 2\n";
    cin>>s;
}
while(s==1);
 
 
for (int j=1;j<n;j++){// сортировка методом простого включения
    int i=0;
    if (a[j]< a[j-1]) {
      //Что бы значение j мы не меняли а работали с i
        i=j;
     //Меняем местами пока не найдем нужное место
        do{
           swap(a[i],a[i-1]);
           i--;
           //защита от выхода за пределы массива
           if (i == 0) break;
           }
        while (a[i]< a[i-1]) ;
   }
}
cout<<"Отсортированный массив\n"
print(a,n);// вывод массива
 
do// поиск элементов
{
    cout<<"Введите элемент который хотите найти\n";
    cin>>s;
    cout<<"номера элементов равных "<<s<<endl;// количество сравнений равно индексу найденного элемента
    int s1=0;
    for (int i=0;i<n;i++)
        if(a[i]==s)
        {
            cout<< i+1<<" ";
            s1++;
        }
    if(s1==0) cout<<"Таких элементов нет\n";
    cout<<"\nХотите найти другой элемент?\nесли да нажмите 1\nесли нет то нажмите 2\n";
    cin>>s;
}
while(s==1);
 
system("pause");
 
}
поправил сортировку, теперь сортирует методом простого включения, теперь правильны все 14 пунктов задания )
aksdaqg
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 112
13.04.2014, 19:13  [ТС]     Одномерный массив, сортировка #5
У меня в С++ Builder'е выдает [Linker Error] Unresolved external '__InitVCL' referenced from D:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\CP32MTI.LIB|crtlvcl
[Linker Error] Unresolved external '__ExitVCL' referenced from D:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\CP32MTI.LIB|crtlvcl
Что это?
kiborgdelto
70 / 72 / 27
Регистрация: 23.03.2011
Сообщений: 141
13.04.2014, 19:31     Одномерный массив, сортировка #6
тут не могу ничем помочь, пользуюсь только visual studio, с другими компеляторами практически неработал (кроме Borland C)
aksdaqg
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 112
13.04.2014, 21:27  [ТС]     Одномерный массив, сортировка #7
На визуальной студии тоже ошибка : 1>LINK : fatal error LNK1123: сбой при преобразовании в COFF: файл недопустим или поврежден
И кстати почему сортировка пузьрьком? разве это одно и тоже?
kiborgdelto
70 / 72 / 27
Регистрация: 23.03.2011
Сообщений: 141
13.04.2014, 21:30     Одномерный массив, сортировка #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
хмм у меня всё работало, тьфу ты забыл удалить функцию сортировки пузырьком, удали её из кода, сортировка включением в функции мэйн
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.04.2014, 21:59     Одномерный массив, сортировка
Еще ссылки по теме:

Задача на одномерный массив (сортировка) C++
C++ Одномерный массив. Сортировка и запись массива в другой файл
Целочисленный одномерный массив, сортировка по убыванию и возрастанию C++

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

Или воспользуйтесь поиском по форуму:
aksdaqg
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 112
13.04.2014, 21:59  [ТС]     Одномерный массив, сортировка #9
Хорошо. Спасибо вам огромное за помощь.
Yandex
Объявления
13.04.2014, 21:59     Одномерный массив, сортировка
Ответ Создать тему
Опции темы

Текущее время: 07:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru