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

Сортировка и двоичный поиск в массиве. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не получается запрограммировать запуск win xp с точки восстановления http://www.cyberforum.ru/cpp-beginners/thread454937.html
Доброго времени суток! Необходимо составить код, для перезагрузки win xp с точки восстановления. Помогите пожалуйста!
C++ Список студентов: возможность вводить оценки, изменять, удалять нужно сохдать программу списка студентов и их оценок (баллы от 0-100, чтобы пройти экзамен нужно набрать минимум 65 баллов, не набравшие 65 считаются провалившими экзамен.). кол-во студентов 9 (двое из них тески), у каждого свой id номер, изучают три предмета (физика, англ.яз, матем.). программа должна: 1) можно вводить оценки, изменять оценки, удалять оценки. 2) можно просмотреть оценки по... http://www.cyberforum.ru/cpp-beginners/thread454932.html
Реализовать метод minutes () - приведение времени в минуты C++
помогите найти ошибку вот само задание: поле first- целое положительное число, часы; поле second- целое положительное число, минуты. Реализовать метод minutes () - приведение времени в минуты. #include<iostream.h> #include<conio.h> struct time { int first,second; void init(int first,int second);
Вывести на экран все знаки пунктуации. C++
Пользователь вводит с клавиатуры строку – предложение с пробелами и знаками пунктуации длиной до 100 символов. Вывести на экран все знаки пунктуации.
C++ Монеты номиналом 1, 2, 5, 10, 25, 50 http://www.cyberforum.ru/cpp-beginners/thread454908.html
У Вас есть монеты номиналом 1, 2, 5, 10, 25 та 50 копеек в бесконечном количестве. Сколькими способами можно выдать один рубль? У меня есть программа на paskal а мне надо просто переписать на чистый Си uses crt; var i1,i2,i3,i4,i5,i6:integer; k:integer; begin k:=0; for i1:=0 to 100 do for i2:=0 to 50 do for i3:=0 to 20 do
C++ Создать динамический массив, любого простого типа (например: int, long, float, double) 1. Создать проект, который содержит консольную программу Win32. 2. Создать динамический массив, любого простого типа (например: int, long, float, double ), предварительно узнав его размер у пользователя. Создать функцию, которая будет заполнять массив случайными значениями, функцию вычисления суммы элементов массива, и функцию которая будет выводить на печать состав массива и результаты на... подробнее

Показать сообщение отдельно
HatcH
0 / 0 / 0
Регистрация: 02.11.2011
Сообщений: 17

Сортировка и двоичный поиск в массиве. - C++

29.02.2012, 09:25. Просмотров 621. Ответов 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
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
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
// F_08_L_2.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <time.h>
#include <windows.h>
 
using namespace std;
const int LENGTH_NUMBER = 8;
enum
{
    PROMPT_SIZE = 0,
    PROMPT_TYPE,
    PROMPT_NUMBER
};
enum
{
    ER_INT = 0,
    ER_SIZE,
    ER_TYPE,
    ER_NUMBER
};
void PrintError (int nError);
bool GetInt (int& value);
bool GetSize (int& size);
bool GetType (int& type);
bool GetNumber (int& number);
void Init (int* p, int size);
void Print (int* p, int size);
void Sort (int* p, int size, int type);
int Search (int* p, int size, int number, int type);
int main (int argc, char* argv[])
{
    int size, type;
    if (!GetSize(size))
        return false;
    if (!GetType(type))
        return false;
    int* p = new int[size];
    Init(p, size);
    cout << endl << "after init" << endl;
    Print (p, size);
    Sort (p, size, type);
    cout << endl << "after sortI" << endl;
    Print (p, size);
    cout << endl << "search numberI = ";
    int numberI;
    if (!GetNumber (numberI))
        return false;
    cout << "result = " << Search (p, size, numberI, type) << endl;
    delete[] p;
    cin.get ();
    return true;
}
void PrintError (int nError)
{
    const char* ERRORS[] = 
    {
        "Error - number",
        "Error - size",
        "Error - type"
    };
    cout << endl
         << ERRORS [nError]
         <<endl;
}
void SetPrompt (int nPrompt)
{
    char* PROMPTS[] = 
    {
        "Enter the size: ",
        "Enter the type: ",
        "Enter the search number: "
    };
    cout << PROMPTS [nPrompt];
}
bool GetInt (int& value)
{
    cin >> value;
    if (cin.fail())
    {
        PrintError (ER_INT);
        return false;
    }
    return true;
}
bool GetSize (int& size)
{
    const int MIN_SIZE = 1;
    const int MAX_SIZE = 100;
    SetPrompt (PROMPT_SIZE);
    if (!GetInt(size))
        return false;
    if (size < MIN_SIZE || size > MAX_SIZE)
    {
        PrintError (ER_SIZE);
        return false;
    }
    return true;
}
bool GetType (int& type)
{
    const int MIN_TYPE = 0;
    const int MAX_TYPE = 1;
    SetPrompt (PROMPT_TYPE);
    if (!GetInt(type))
        return false;
    if (type < MIN_TYPE || type > MAX_TYPE)
    {
        PrintError (ER_TYPE);
        return false;
    }
    return true;
}
bool GetNumber(int& number)
{
    SetPrompt(PROMPT_NUMBER);
    if (!GetInt(number))
        return false;
    return true;
}
void Init(int* p, int size)
{
    srand ((unsigned)time(NULL));
    for (int i = 0; i < size; i++)
        p[i] = rand();
}
void Print(int* p, int size)
{
    const int PER_LINE = 8;
    cout << endl;
    int s = size / PER_LINE;
    for (int k = 0; k < s; k++)
    {
        for (int l = 0; l < PER_LINE; l++)
            cout << setw(8) << p[(k * PER_LINE) + l];
        cout << endl;
    }
    int r = size % PER_LINE;
    s *= PER_LINE;
    for (int m = 0; m < r; m++)
        cout << setw(8) << p[s + m];
    cout << endl;
}
void Sort (int* p, int size, int type)
{
    for (int i = 0; i < size - 1; i++)
    {
        for (int j = size - 1; j > 1; j--)
        {
            bool b = false;
            if (!type)
            {
                if (p[j - 1] > p[j])
                    b = true;
            }
            else
            {
                if (p[j - 1] < p[j])
                    b = true;
            }
            if (b)
            { 
                int k = p[j - 1];
                p[j - 1] = p[j];
                p[j] = k;
            }
        }
    }
}
int Search (int* p, int size, int number, int type)
{
    int i = 1;
    int j = size;
    int k;
    do
    {
        k = (i + j) / 2;
        if (!type)
        {
            if (number > p[k - 1])
                i = k + 1;
            else
                j = k - 1;
        }
        else
        {
            if (number < p[k - 1])
                i = k + 1;
            else
                j = k - 1;
        }
    }
    while (!((p[k - 1] == number) || (i > j)));
    if (p[k - 1] == number)
    {       
        return k;
    }
    else
        return 0;
 
}
Требуется сделать:
Требуемое количество объектов: 21
Тип объекта: int
Вид сортировки: по убыванию.

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