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

Количество сравнений в массиве - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Модульное программировапние на С++ (консоль) http://www.cyberforum.ru/cpp-beginners/thread330885.html
Помогите пожалуйста подкорректировать код. Задание было таким: Разместить определение данных в заголовочном файле, а определения функций и главную функцию программы в двух отдельных файлах. Вариант Даны квадратная матрицаА порядка п и вектор b с п элементами. Получить вектор , где Е – единичная матрица. Определить функции формирования единичной матрицы и умножения квадратной матрицы на вектор....
C++ Конус в С++.. Ребят всем привет! Я новичок в программировании,пробовал только писать немного в Паскале,мне в универе дали задание изобразить конус,параллелограмм вписанный в конус на С++ Подскажите пожалуйста,с чего мне начать,какую литературу прочесть,в каких копиляторах работать! http://www.cyberforum.ru/cpp-beginners/thread330863.html
C++ Методы оптимизации памяти
Написал статью по оптимизации памяти в программах на С++. Ее можно почитать тут: http://itw66.ru/blog/c_plus_plus/491.html А какие методы вы можете предложить по повышению эффективности программы, при помощи организации данных в памяти определенным образом?
Вопрос начинающего C++
Здравствуйте. Мне сейчас 16 лет и в сентябре я пойду в 11 класс (я школота). В будущем я хочу стать программистом. Сейчас я уже учу С++ (немножко могу гонять в консоли) и немножко Delphi. Как мне дальше строить своё развитие как программиста? Что читать/писать/учить/делать, чтобы как можно раньше начать работать по специальности и стать хорошим специалистом? Прошу помощи, так как, по...
C++ Сетевая карта http://www.cyberforum.ru/cpp-beginners/thread330778.html
Добрый вечер. Подскажите в какую сторону смотреть и какие маны читать. Задача: узнать сколько у сетевой карты ethernet портов, узнать их адреса, попробовать послать в них и принять из них данные. :) Добавлено через 17 минут ОС : Windows
C++ Может кому понадобится Кое-что из динамического программирования... Задача подсчёта в прямоугольной матрице количества связных областей (областей состоящих из смежных клеток) . В данном случае вводится матрица из нулей и единиц. Будет подсчитываться кол-во областей состоящих из единиц. 0 - пустая клетка. Например, я ввожу следующую матрицу размеров 3x5 : 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 В ней кол-во областей из... подробнее

Показать сообщение отдельно
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
08.07.2011, 12:39     Количество сравнений в массиве
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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#include <iostream>
#include <cstdlib>
using namespace std;
 
void Sort(int *arr, int n)
{
 
    for (int i=0; i<n; i++)
    {
    int indexmin=i;
    for (int j=indexmin; j<n; j++)
    if (arr[indexmin]>arr[j])
    indexmin=j;
    if (i!=indexmin)
    {
    int tmp=arr[indexmin];
    arr[indexmin]=arr[i];
    arr[i]=tmp;
    }
    }
 
}
 
int *Create(int n)
{
 
    if(n<=10000)
    {
    int *arr = new int [n];
    int i=0;
    while(i<n)
    {
 
        int flag=0;
        arr[i]=rand()%(n+n); //Случайные числа до суммы введенного размера массива
        for(int j=0; j<i; j++)
        if (arr[j]==arr[i])
        {
        flag=1;
        break;
        }
        if (flag==1)
        continue;
        else
        i++;
                
    }
    Sort(arr, n);
    return arr;
    }
        
    else
    return NULL;
        
}
 
void Show(int *arr, int n)
{
 
    for (int i=0; i<n; i++)
    cout << arr[i] << " ";
    cout << endl;
 
}
 
int BinarySearch(int *arr, int n, int x, int &counter)
{
 
    int index=-1;
    int L=0, R=n, m;
    while(L<R)
    {
    m=(L+R)/2;
    if (arr[m]==x)
    { 
    counter++;
    index=m;
    break;
    }
    if (x<arr[m]) 
    {
        R=m;
        counter++;
    }
    else
    L=m+1;
        cout<<m%2;
    }
    return index;
 
}
 
int main()
{
 
    int *arr=NULL;
    int n;
    char action;
    int counter=0;
    setlocale(LC_ALL,"Russian");
    do
    {
 
        cout << "1. Создать массив чисел" << endl
        << "2. Показать исходный массив" << endl
        << "3. Двоичный поиск" << endl
        << "0. Выход:" << endl;
        cin >> action;
        switch(action)
        {
        case '1':
 
            if (arr!=NULL)
            {
            delete[] arr;
            }
            cout <<"Введите размер массива = ";
            cin >> n;
            arr=Create(n);
            if (arr!=NULL)
            cout << "Массив чисел создан" << endl;
            else
            cout << "Невозможно создать массив" << endl;
            break;
 
        case '2':
 
            if (arr!=NULL)
            {
            cout << "Исходный массив:" << endl;
            Show(arr,n);
            }
            else
            cout << "Создайте массив" << endl;
            break;
 
        case '3':
 
            if (arr!=NULL)
            {
            cout << "Искомый элемент = ";
            int x;
            cin >> x;
            if (BinarySearch(arr,n,x, counter)!=-1)
            cout << "Элемент найден. Его индекс = " << BinarySearch(arr,n,x, counter) << endl << "Number of compaers = " << counter << endl;
            else
            cout << "Элемент не найден" << endl;
            }
            else
            cout << "Создайте массив" << endl;
            break;
 
        case '0':
 
            if (arr!=NULL)
            delete[] arr;
            break;
 
        }
 
    }while(action!='0');
    cin.get();
 
}
Добавлено через 20 секунд
ну вот как-то так значит

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