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

Метод половинного деления. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ операции с текстовыми файлами http://www.cyberforum.ru/cpp-beginners/thread36147.html
Доброго времени суток!!! Помогите решить задачку, у самой не получается=(( Задача в С++, изначально данные находятся в файле .txt Сделать прогу с помощью операций с текстовыми файлами. Написать программу, которая содержит динамическую информацию о нарушении правил дорожного движения. (на один автомобиль база может содержать записи о нескольких нарушениях). Сведения о каждом автомобиле...
C++ Описать функцию Compare Последняя из 6 задачек (5 осилил, 1 с вашей помощью) Описать функцию Compare(A,B,n), возвразающую 1, если можно преобразовать квадратную матрицу А размером n x n в матрицу B, отражениями относительно главной и побочной диагонали, и 0 в обратном случае. Очень приветствуется код. Заранее спасибо! Добавлено через 17 часов 56 минут 14 секунд Ну пожалуйста :) http://www.cyberforum.ru/cpp-beginners/thread36143.html
C++ Редактирование текстового файла
Дано число N и текстовый файл. Удалить из файла абзац с номером N (абзацы выделяются с помощью красной строки (5 пробелов) и нумеруются от 1). Пустые строки между абзацами не учитывать и не удалять. Если абзац с данным номером отсутствует, то оставить файл без изменений. Заранее спасибо!+)
C++ программо на чтение из текстового файла.
Задача программы имеется внешний текстовый файл. Написать программу печати первой из самых коротких строк. Что не так в коде? #include <iostream> #include <fstream> #include <string> #include <vector> #include <algorithm> using namespace std; int main()
C++ Использование функций! http://www.cyberforum.ru/cpp-beginners/thread36131.html
Задать значения целочисленным элементам матриц A = {aij}, B = {bij}, где i = 0, 1, 2,..., 5; j = 0, 1, 2, 3 и вычислить элементы массивов X = {xij}, Y = {yij} по формулам: xij=ln a(ij) yij=exp b(ij)
C++ Перевод int в символьный массив char Помогите плз реализовать алгоритм перевода целого числа в символьный массив.. К примеру: дано число int a=1234; нужно чтобы в массиве char b было: b=1, b=2, b=3, b=4, итд.. число a - произвольное, но четырехкратное) был бы благодарен за помощь)) подробнее

Показать сообщение отдельно
Monte-Cristo
2786 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
24.05.2009, 23:43     Метод половинного деления.
вот пример.
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
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
/////////////////////////////////////////////////////////////////
int BinSearch(int *M, int n, int k);
int Shell(int *A, int n);
int Print(int *A, int n);
/////////////////////////////////////////////////////////////////
int main()
{
    const int n=10;
    int A[n];
    int k;
 
    srand(time(0));
 
    for (int i=0; i<n; i++)
        A[i] = rand()%90+10;
 
    cout << "Default array: ";
    Print(A, n);
    
    Shell(A, n);
    cout << "Sort Array:    ";
    Print(A, n);
 
    cout << "\nInput find element: ";
    cin >> k;
    
    cout << "Index = " << BinSearch(A, n, k) << endl;
 
    return 0;
}
/////////////////////////////////////////////////////////////////
int BinSearch(int *M, int n, int k)
{
    int L = 0;
    int R = n;
 
    int m;
    int z = 0;
 
    while (L<R)
    {
        z++;
        m = (L+R)/2;
        if (k > M[m]) L = m;
        if (k < M[m]) R = m;
        if (k == M[m]) break;
    }
 
    cout << endl << "Iterations: " << z << endl;
 
    return m;
}
/////////////////////////////////////////////////////////////////
int Shell(int *A, int n)
{
    int h = n/2;
 
    while (h>0)
    {
        for (int i=0; i<n-h; i++)
        {
            int j = i;
        
            while (j>=0)
            {
                if (A[j] > A[j+h])
                {
                    int tmp = A[j];
                    A[j] = A[j+h];
                    A[j+h] = tmp;
                    j = j-h;
                } 
                else j--;
            }
 
        }
        h = h/2;
    }
 
    return 0;
}
/////////////////////////////////////////////////////////////////
int Print(int *A, int n)
{
    for (int i=0; i<n; i++)
        cout << A[i] << " ";
  
    cout << "\n";
    return 0;
}
 
Текущее время: 15:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru