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

Построение бинарным поиском - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Дан текст, найти самое длиное слово http://www.cyberforum.ru/cpp-beginners/thread29578.html
Помогите решить эту задачу
C++ махинации в одномерных масивах Здравствуйте, помогите решить задачку: В одномерном массиве, состоящем из 30 элементов вычислить: Количество элементов больших C (C ввод с клавиатуры) Упорядочить массив по возрастанию Массив заполнить от датчика случайных чисел -50 до 50 у меня получилось следующее: 1 #include <stdio.h> http://www.cyberforum.ru/cpp-beginners/thread29576.html
Составить алгоритм и программу для замены в заданном массиве C++
Только С++ Составить алгоритм и программу для замены в заданном массиве Р(N) всех нулевых элементов, которые стоят на нечетных местах, средним квадратичным значением, которое находят из всех отрицательных элементов массива, а те, что стоят на четных местах - средним геометрическим значением, которое находят из всех положительных элементов массива. Преобразованный массив вывести к печати. P = (9,...
Найти три минимальных элемента в предпоследнем столбце матрицы C++
1. Найти три минимальных элемента в предпоследнем столбце матрицы A #include <iostream.h> #include <conio.h> #include <stdio.h> #include <stdlib.h> void main() { clrscr(); int i,j,n,m,min;
C++ Массив строк http://www.cyberforum.ru/cpp-beginners/thread29538.html
Здравствуйте, помогите решить задачу на С. Ввести массив строк символов (текст), которые могут содержать слово “then”. В каждой строке заменить каждое вхождение слова “then” словом “the”. Словами счи-тать группы символов, разделённые одним или несколькими пробелами. Добавлено через 41 минуту 34 секунды Closed. сам решил. Но вот с этой задачкой проблемки, помогите решить: Ввести массив...
C++ Выделение объекта щелчком мыши - DirectX9 Здравствуйте. Возникла - проблема - не могу реализовать обработку щелчка мыши по объекту. Среда - DirectX9 и C++. Собственно выделение не составляет проблемы - нужно лишь обнаружить "попадание" курсора в объект. В сети есть немало обсуждений и даже фрагментов решения, но ничего сделать я толком так и не смог. Вот функции, за это дело отвечающие: отсюда void GetCurRay(HWND ... подробнее

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

Построение бинарным поиском - C++

11.04.2009, 16:59. Просмотров 515. Ответов 0
Метки (Все метки)

Добрый день. Я написал программу для нахождения Объединения, пересечения, разности и симметрической разности 2-х списков, причём первый список упорядочен по убыванию и 1-е элементы обоих списков служат индексом на количество элементов в этих списках. Но у меня возникла проблема с бинарным поиском =\ Не могли ы вы мне с ним помочь?
Код
#include <stdio.h>
int main()
{
    int i;                                        //счётчик эл-тов в массиве
    int m=0;                                      //длина массива M
    int n=0;                                      //длина массива N
    int M[255];                           //массив для работы с 1 множеством
    int N[255];                           //массив для работы со 2 множеством
    int a=0;                                      //номер эл-та в множестве M
    int b=0;                                      //номер эл-та в множестве N
    int c=0;                                      //номер эл-та в массивах
    int d=0;                                      //номер эл-та в массиве разности M-N
    int e=0;                                      //номер эл-та в массиве разности N-M
    int objedinenie[255];         //массив, в котором будет строится объединение
    int peresechenie[255];        //массив, в котором будет строится пересечение
    int raznMN[255];                      //массив, в котором будет строится разность M-N
    int raznNM[255];                      //массив, в котором будет строится разность N-M
    int simrazn[255];                     //массив, в котором будет строится симметричная разность
    int flag=0;


    FILE *fpin, *fpout;


    fpin=fopen("input.txt","r");          //открытие файла на чтение
    fscanf(fpin,"%d",&m);                 //считывание длин множеств и сами множества в массив
    for(i=0;i<m;i++)
        fscanf(fpin,"%d",&M[i]);
    fscanf(fpin,"%d",&n);
    for(i=0;i<n;i++)
        fscanf(fpin,"%d",&N[i]);
    fclose(fpin);


    fpout=fopen("output.txt","w");        //открытие файла на запись


//построение объединения
    c=0;
    flag=0;
    for(a=0;a<m;a++)
    {
        objedinenie[c]=M[a];
        c++;
    }
    for(b=0;b<n;b++)
    {
        for(i=0;i<m;i++)
            if(N[b]==objedinenie[i])
                flag=1;
        if(flag==0)
        {
            objedinenie[c]=N[b];
            c++;
            i=0;
        }
        else
        {
            i=0;
            flag=0;
        }
    }
    fprintf(fpout,"объединение: \n ");            //вывод результата в output.txt
    fprintf(fpout,"%d:",c);
    for(i=0;i<c;i++)
        fprintf(fpout,"%d ",objedinenie[i]);


//построение пересечения
    c=0;
    for(a=0;a<m;a++)
    {
        for(b=0;b<n;b++)
            if(M[a]==N[b])
            {
                peresechenie[c]=M[a];
                c++;
            }
        b=0;
    }
    fprintf(fpout,"\n пересечение: \n ");         //вывод результата в output.txt
    fprintf(fpout,"%d:",c);
    for(i=0;i<c;i++)
        fprintf(fpout,"%d ",peresechenie[i]);


//построение разности M-N
    flag=0;
    for(a=0;a<m;a++)
    {
        for(i=0;i<c;i++)
            if(peresechenie[i]==M[a])
                flag=1;
        if(flag==0)
        {
            raznMN[d]=M[a];
            d++;
            i=0;
        }
        else
        {
            i=0;
            flag=0;
        }
    }
    fprintf(fpout,"\n разность M-N: \n ");        //вывод результата в output.txt
    fprintf(fpout,"%d:",d);
    for(i=0;i<d;i++)
        fprintf(fpout,"%d ",raznMN[i]);
//построение разности N-M
    flag=0;
    for(b=0;b<n;b++)
    {
        for(i=0;i<c;i++)
            if(peresechenie[i]==N[b])
                flag=1;
        if(flag==0)
        {
            raznNM[e]=N[b];
            e++;
            i=0;
        }
        else
        {
            i=0;
            flag=0;
        }
    }
    fprintf(fpout,"\n разность N-M: \n ");        //вывод результата в output.txt
    fprintf(fpout,"%d:",e);
    for(i=0;i<e;i++)
        fprintf(fpout,"%d ",raznNM[i]);


//рассчёт симметрической разности
    c=0;
    for(i=0;i<d;i++)
    {
        simrazn[c]=raznMN[i];
        c++;
    }
    for(i=0;i<e;i++)
    {
        simrazn[c]=raznNM[i];
        c++;
    }
    fprintf(fpout,"\n симметрическая разность: \n ");     //вывод результата в output.txt
    fprintf(fpout,"%d:",c);
    for(i=0;i<c;i++)
        fprintf(fpout,"%d ",simrazn[i]);
    fclose(fpout);                                //закрытие файла
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru