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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Stak
0 / 0 / 0
Регистрация: 11.04.2009
Сообщений: 21
#1

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

11.04.2009, 16:59. Просмотров 528. Ответов 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);                                //закрытие файла
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2009, 16:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Построение бинарным поиском (C++):

Поиздеавться над бинарным поиском - C++
Вот у меня задание, написать алгоритм бинарного поиска числа в отсортированном по возрастанию массиве. Вот я написал. вроде бы все...

Поиск буквы бинарным поиском в тексте - C++
Здравствуйте помогите пожалуйста написать программу, а то в понедельник сдавать,а я вообще не знаю как ее делать. Само задание: Дан...

Баг с бинарным списком - C++
Доброго времени суток, я написал функцию, которая сравнивает т.н. &quot;Индивидуальный план&quot; ученика(список выбранных учебных предметов) со...

Сортировка бинарным деревом - C++
Получить число n на ввод; сделать сортировку бинарным деревом и построить дерево графически

задача с бинарным файлом - C++
Помогите, пожалуйста, написать на C++. Нужно создать бинарный файл f и записать в него целые числа. Организовать просмотр бинарного файла...

Поиск бинарным методом - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;fstream&gt; #include &lt;string&gt; #include &lt;vector&gt; using namespace std; int...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2009, 16:59
Привет! Вот еще темы с ответами:

Работа с бинарным файлом - C++
Всем привет! есть тестовый пример в котором я пытаюсь записать в бинарный файл три переменных, а затем их считать. Все работает нормально...

Работа с бинарным файлом - C++
почему программа не выводит 16-ричный дамп бинарного файла? int main () { streamoff lSize; char *buffer; ifstream...

Проблемы с бинарным файлом - C++
Приветствую. Проблема заключается в следующем: не хочет открываться бинарный файл. #include &lt;stdio.h&gt; #include &lt;iostream&gt; #include...

Работа с бинарным файлом - C++
Доброго времени суток всем. Помогите пожалуйста доделать задачу: Создать класс для работы с бинарным файлом. В файл записать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru