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

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

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

массивы - C++

29.03.2010, 23:31. Просмотров 335. Ответов 4
Метки нет (Все метки)

задали написать программу, которая создаёт массив, количество элементом которого задаётся пользователем с клавиатуры. Все элементы генерируются псевдослучайной последовательностью от "0" до числа, которое вводится с клавиатуры. Программы должна выводить массив до сортировки и после. Вывод массива до сортировки и после сделать используя функции. Сортировку сделать блочным методом. уже долго пытаюсь её довести до рабочего состояния но никак не получается...
Если не сложно, помогите! заранее спасибо

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
#include <iostream.h>
#include <stdlib.h>
#include <iomanip.h>
#include <time.h>
 
int BinSearch(int M[], int mas1, int k);
int Vivod_Massiva ( int b[], int mas1 );
int blockSort(int a[],  int sz);
 
int main()
{
    int kolichestvo_chisel, kol_iter,  i, gran_mas, k;
cout << "vvedit' kilkist chisel= ";
cin >> kolichestvo_chisel;
cout << "vvedit' granicu= ";
cin >> gran_mas;
kol_iter = kolichestvo_chisel - 1;
int a[kolichestvo_chisel];
//srand(time(0));
  for (i=0; i!=kolichestvo_chisel; i++)
    a[i] = rand() % (gran_mas + 1);
cout << " Vivod Massiva Do Sortirovki: " << setw(4) << Vivod_Massiva ( a , kolichestvo_chisel);
cout << " Vivod Massiva Posle Sortirovki: " << blockSort( a , kolichestvo_chisel);
 
cout <<"\n";
cout << "vvedite iskomiy element: ";
cin >> k;
cout << "naiden v elemente massiva " << BinSearch(a, kolichestvo_chisel, k) << endl;
return 0;
}
int Vivod_Massiva ( int b[], int mas1 )
{
    for ( int p=0; p!=mas1; p++ )
    cout << b[p] ;
 
    cout << "\n";
    return 0;
}
int blockSort(int a[],  int sz)
{ int mas;
    for (int i=0; i<10; i++)
    {
        for ( int j=0; j<2000; j++)
        {mas[i][j] = -1;
        }
        }
 
   for(int l = 0; l < 5; l++)
   {
       for(int i = 0; i < sz; i++)
       { const int num=10;
           int j=a[i]/num%10;
           mas[i][j]=a[i];
           }
 
       // сбор
           int t = 0;
       for(int i = 0; i < 10; i++)
       {
           for(int j = 0; j < 2000; j++)
           {
               if (mas[i][j]!=-1)
                  a[t++] = mas[i][j];
                  mas[i][j] = -1;
                }
         }
    }
}
 
 
 
int BinSearch(int M[], int mas1, int k)
{
    int L = 0;
    int R = mas1;
    int m;
    while (L<R)
    {
        m = (L+R)/2;
        if (k > M[m]) L = m;
        if (k < M[m]) R = m;
        if (k == M[m]) break;
    }
    return m;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2010, 23:31     массивы
Посмотрите здесь:

Упорядочить массивы по по убыванию, потом соединить массивы в один упорядоченный массив - C (СИ)
Начала писать, запуталась Даны два одномерных массива состоящие из 10 целых чисел. Упорядочить массивы по по убыванию, потом соединить...

Даны массивы A(8), F(8),Q(8). Сформировать массивы С(8), каждый элемент которого вычисляется по формуле - Pascal ABC
uses crt; type mas=array of integer; var A,F,Q,C:mas; i,s:integer; begin clrscr; writeln('Массив первый:'); for i:=1...

Даны массивы а и b. Получить новые массивы a и b, элементы которых вычисляются по правилу: ai=bi, bi= -ai - Pascal
Даны массивы а и b, состоящие из n-элементов каждый. Получить новые массивы a и b, элементы которых вычисляются по правилу: ai=bi, bi=...

Табулирование функции и поиск данных. Одномерные массивы. Двумерные массивы - C#
Вычислить сумму первых четырех отрицательных элементов. В соответствии с п. 5.16 правил &quot;Запрещено создавать темы с множеством...

Массивы. Циклические алгоритмы (Заполнить массивы случайными числами, лежащими в интервале 0 до 100) - C++
Доброго дня, уважаемые форумчане, помогите пожалуйста решить задание. Заполнить массивы случайными числами, лежащими в интервале 0 до...

Указатели и массивы. Индексация с помощью указателей. Передача массивов в функции. Динамические массивы (обработка матриц) - C++
Для каждого элемента , bij, i= 1,...,n , j=1,...,n определяется свой многоугольник местонахождением соответствующего элемента aij (см....

Файлы. Компоненты - массивы чисел. Переформировать файл, где сначала идут массивы с положительными макс. элементами - Turbo Pascal
Здравствуйте!! я пишу такую задачу: нужно написать две программы, одна из них создает файл, где компоненты - массивы вещ. чисел; ...

Попадание точки. Массивы чисел. Массивы записей. - C++
Всем привет. По языкам задали три контрольные на си. Я сам си не знаю, даже не представляю, поэтому очень нужна ваша помощь. ...

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


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
r4zieL
15 / 15 / 1
Регистрация: 24.01.2010
Сообщений: 46
30.03.2010, 00:43     массивы #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
#include <iostream>
#include <iomanip>
#include <time.h>
 
using namespace std;
 
int BinSearch(int* , int , int );
void Vivod_Massiva ( int* , int  );
void selectSort(int* ,  long );
 
int main()
{
    int kolichestvo_chisel, kol_iter,  i, gran_mas, k, result;
    cout << "vvedit' kilkist chisel= ";
    cin >> kolichestvo_chisel;
    cout << "vvedit' granicu= ";
    cin >> gran_mas;
    kol_iter = kolichestvo_chisel - 1;
    int* a = new int[kolichestvo_chisel];
    srand(time(0));
    for (i=0; i!=kolichestvo_chisel; i++)
        a[i] = rand() % (gran_mas + 1);
    cout << "Vivod Massiva Do Sortirovki: " << setw(4);
    Vivod_Massiva ( a , kolichestvo_chisel);
    selectSort(a, kolichestvo_chisel);
    cout << " Vivod Massiva Posle Sortirovki: " << endl;
     Vivod_Massiva ( a , kolichestvo_chisel);
    cout <<"\n";
    cout << "vvedite iskomiy element: ";
    cin >> k;
    if(k>gran_mas )
        cout << "element ne naiden";
    else
    {
        result = BinSearch(a, kolichestvo_chisel, k);
        if ( result == -1)
            cout << "element ne naiden";
        cout
            << "naiden v elemente massiva " << result << endl;
    }
    system("pause");
    return 0;
}
void Vivod_Massiva ( int b[], int mas1 )
{
    cout << "[";
    for ( int p=0; p!=mas1; p++ )
        cout << b[p] << " ";
    cout << "]\n";
}
 
void selectSort(int a[], long size) 
{
    long i, j, k;
    int x;
    for( i=0; i < size; i++) 
    { // i - номер текущего шага
        k=i; 
        x=a[i];
        for( j=i+1; j < size; j++) // цикл выбора наименьшего элемента
            if ( a[j] < x ) 
            {
                k=j; 
                x=a[j]; // k - индекс наименьшего элемента
            }
        a[k] = a[i]; 
        a[i] = x; // меняем местами наименьший с a[i]
    }
}
 
 
 
 
int BinSearch(int M[], int mas1, int k)
{
    int L = 0;
    int R = mas1;
    int m;
    if(k == M[0])
        return 0;
    while (L<R)
    {
        m = (L+R)/2;
        if (k > M[m]) L = m;
        if (k < M[m]) R = m;
        if (k == M[m]) break;
    }
    if(m>0)
        return m;
    else 
        return -1;
}
paradox92
0 / 0 / 0
Регистрация: 27.02.2010
Сообщений: 38
30.03.2010, 11:14  [ТС]     массивы #3
Ещё раз спасибо! В том то и дело что только учусь, пока не умею оформлять код для лучшей читабельности.
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
30.03.2010, 11:45     массивы #4
r4zieL, а твой то не лучше )
r4zieL
15 / 15 / 1
Регистрация: 24.01.2010
Сообщений: 46
30.03.2010, 13:35     массивы #5
Цитата Сообщение от fasked Посмотреть сообщение
r4zieL, а твой то не лучше )
Я его код скопировал и переделывал.
Yandex
Объявления
30.03.2010, 13:35     массивы
Ответ Создать тему
Опции темы

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