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

Ввести число и найти в массиве ближайшее к нему методом двоичного поиска - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ В данной квадратной матрице порядка 17 указать индексы всех элементов с наименьшим значением http://www.cyberforum.ru/cpp-beginners/thread262865.html
В данной квадратной матрице порядка 17 указать индексы всех элементов с наименьшим значением
C++ НЕправильно работает пара ф-ций сделал стэк, дэк и очередь, дэк не хочет добавлять, говорит, уже полный. мож я где лохонулся? помогите устранить ошибку не пугайтесь большого быдлокода, пожалуйста //очередь и дек в хед файле queve Stack queve; bool IsFullQ() { if(head==SSize-1) return 1; return 0; http://www.cyberforum.ru/cpp-beginners/thread262863.html
C++ Программирование на С++
Помогите дорешать задачу в С++: Дано целое число N и набор из N целых чисел. Вывести номера тех чисел в наборе, которые больше своего правого соседа, и количество K таких чисел. #include <iostream> using namespace std; int main(){ int n,i,j,*mas1,*mas2; cout << "Vvedite celoe chislo N " << endl; cin >> n; mas1=(int *)(calloc(n,sizeof(int))); mas2=(int...
system("") промелькивает окно cmd(( c++ C++
Значит есть функция system("start steam://rungameid/240"); Проблема в том что когда запускаешь программу то промелькивает окно c:/windows/system32/cmd.exe Как сделать что он не мелькало. Вот сам код(написан на builder c++) //--------------------------------------------------------------------------- #include <vcl.h> #include <windows.h> #pragma hdrstop ...
C++ Преобразовать строку, записав адрес прававильно: <область>, <нас. пункт>, <улица>, <дом / квартира>, <индекс> http://www.cyberforum.ru/cpp-beginners/thread262838.html
Строка, содержит почтовый адрес, произвольной формы. Преобразовать строку, записав адрес прававильно: <область>, <нас. пункт>, <улица>, <дом / квартира>, <индекс> С помощью #include "stdafx.h"
C++ вычислить С++ подробнее

Показать сообщение отдельно
bebedor
3 / 3 / 0
Регистрация: 14.02.2011
Сообщений: 9
24.03.2011, 21:25     Ввести число и найти в массиве ближайшее к нему методом двоичного поиска
Держи, создание, сортировка(пузырьком) мои, поиск взят с википедии
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
#include <vcl.h>
#pragma hdrstop
#pragma argsused
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#define obmen(a, b) {int c=a; a=b; b=c;}
int scanf_err ()    
{
    int n;  
    char err[250];
    while (!scanf("%d",&n))
    {
    scanf("%s",err);
    printf("error\nvvedite zanovo\n>");
    }
    return n;
}
int main(int argc, char* argv[])
{
    int a, i, h;
                
    char err[250];
    do
    {
    clrscr();   
    do
        {
        printf("Vvedite kol-vo elementov massiva=>");
        a=scanf_err();  
        if (a<1)    
            {
            printf("Vvedite chislo bolshe 0\n");
            }
        }
        while (a<1);    
    int *mass=(int*)malloc(a*sizeof(int));
    for (i=0; i<a; i++) 
        {
        mass[i]=rand()%100; 
        }
    
    printf("\nIshodnii massiv  ");
        for (i=0; i<a; i++) 
        {
        printf("%d", mass[i]);
        printf(" ");
        }
    
    
    for (i=a-1; i>0; i--)
  {
    for (h=0; h<i; h++)
    {
      if (mass[h]>mass[h+1])
        obmen(mass[h], mass[h+1]);
    }
  }
    int f;
    printf("\nVvedite chislo=>");
    scanf("%d", &f);
    size_t first = 0; /* Первый элемент в массиве */
    size_t last = a;  /* Элемент в массиве, СЛЕДУЮЩИЙ ЗА последним */
                    /* Если просматриваемый участок непустой, first<last */
    size_t mid; 
 
  if (a==0) {
     /* массив пуст */
  } else if (mass[0]>f) {
     /* не найдено; если вам надо вставить его со сдвигом - то в позицию 0  */
  } else if (mass[a-1]<f) {
     /* не найдено; если вам надо вставить его со сдвигом - то в позицию n  */
  }
 
  while ( first < last ) {
    /* ВНИМАНИЕ! В отличие от более простого (first+last)/2, этот код стоек к переполнениям.  */
    mid = first + (last-first)/2;
 
    if ( f <= mass[mid] ) {
      last = mid;
    } else {
      first = mid + 1;
    }
  }
 
  /* Если проверка n==0 в начале опущена - значит, тут раскомментировать!  */
  if (/*n!=0 &&*/ mass[last] == f) {
    /* Искомый элемент найден. last - искомый индекс */
  } else {
    /* Искомый элемент не найден. Но если вам вдруг надо его вставить со сдвигом, то его место - last.  */
  }
    
    printf("%d", mass[last]);
    free(mass); 
    printf("\n\nSnachala?\n\n1-DA\n2-NET\n>");  
    }
    while(scanf_err()!=2);
 
    return 0;
}
 
Текущее время: 20:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru