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

бинарный поиск по интервалу - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Логическая задача на переливание жидкостей http://www.cyberforum.ru/cpp-beginners/thread557515.html
Даны 3 стакана: 1 - й вмещает 7 литров, 2-й вмещает 5 литров, 3-й вмещает 12 литров. Первые 2 стакана пусты, в третьем 12 литров воды. Воду можно переливать из одного стакана в другой до опустошения...
C++ Вызов из разных потоков функции чтения из файла, dll Доброго времени суток. Помогите пожалуйста написать программу, вот задание: Вызов из разных потоков функции чтения из файла. Функция находится в dll динамическое подключение . Функция чтения:... http://www.cyberforum.ru/cpp-beginners/thread557504.html
Задача на двумерный массив C++
Найти максимальный элемент матрицы
C++ работа с файлами
1. Написать программу, которая создает файл и записывает в него 5 введенных пользователем целых чисел, при чем каждое число должно находиться в отдельной строке.(без использования файловых потоков)...
C++ Считывание строки из файла. http://www.cyberforum.ru/cpp-beginners/thread557497.html
Появилась проблема. Строка из файла считывается, но не реагирует на пробелы. И не находит конец строки. #include <fstream> #include<iostream> using namespace std; int main(){ char s; ifstream...
C++ Даны целые числа a1, a2, a3. Получить целочисленную матрицу [ by]i, j= 1,2,3 для которой bij= ai - 3aj Даны целые числа a1, a2, a3. Получить целочисленную матрицу i, j= 1,2,3 для которой bij= ai - 3aj подробнее

Показать сообщение отдельно
Evgen2sat
19 / 19 / 7
Регистрация: 22.11.2011
Сообщений: 101
24.04.2012, 21:11  [ТС]
Kuzia domovenok, нет не от балды, мне надо было реализовать поиск по совпадению и поиск по интервалу (используя двоичный поиск), поиск по совпадению я реализовал, по совпадению не могу, т.е. теоретически понятно как его сделать, а программно не могу реализовать. Вот полный код программы:
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 <stdio.h>
#include <conio.h>
#include <locale.h>
#include <malloc.h>
#include <math.h>
 
struct data
{
    int key;
    float money;
    char name[255];
};
 
int Search(data *list, int count, int key) //поиск по совпадению
{
  int low, high, mid;
  low = 0; high = count-1;
  while(low <= high) 
  {
    mid = (low+high)/2;
    if(key < list[mid].key) high = mid-1;
    else if(key > list[mid].key) low = mid+1;
    else return mid; 
  }
  return -1;
}
 
int Search1(data *list, int count,int left,int right)//здесь должен быть поиск по интервалу
{
  
 
}
 
void Sort(data *arr, int size,int find,int low,int high)
{
    data tmp;
    for(int i = 0; i < size - 1; ++i) // i - номер прохода
    {            
        for(int j = 0; j < size - 1; ++j) // внутренний цикл прохода
        {     
            if (arr[j + 1].key < arr[j].key) 
            {
                tmp = arr[j + 1]; 
                arr[j + 1] = arr[j]; 
                arr[j] = tmp;
            }
        }
    }
    int result=Search(arr, size, find);
    if(result!=-1)
    {
    printf("Поиск по совпадению:\n");
    printf("Имя\tВозраст\tЗ/п\n");
    printf("%s\t%d\t%f\n", arr[result].name,arr[result].key,arr[result].money);
    }
    else
    {
        printf("Поиск по совпадению:\n\n");
        printf("Ничего не найдено\n");
    }
    printf("Поиск по интервалу:\n");
    printf("Имя\tВозраст\tЗ/п\n");
    int result1=Search1(arr, size,low,high); /*здесь надо выводить результат поиска по интервалу(не дописано) */
}
 
 void main()
 {
    setlocale(LC_ALL, "RUS");
    int elem;
    int keyStart,keyEnd,find;
    printf("Ведите количество людей: ");
    scanf("%d",&elem);
    struct data *list=(struct data*)malloc(elem*sizeof(data));
    for(int i=0;i<elem;i++)
    {
        printf("Введите %d имя: ",i+1);
        scanf("%s",&list[i].name);
        printf("Введите возраст %d человека: ",i+1);
        scanf("%d",&list[i].key);
        printf("Введите %d з/п: ",i+1);
        scanf("%f",&list[i].money);
    }
    printf("Введите начальный возраст для поиска: ");
    scanf("%d",&keyStart);
    printf("Введите конечный возраст для поиска: ");
    scanf("%d",&keyEnd);
    printf("Введите возраст для поиска: ");
    scanf("%d",&find);
    Sort(list, elem,find,keyStart,keyEnd);
    getch();
    return;
 }
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru