Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2011, 21:06   #1
Pixma
Пользователь
 
Регистрация: 28.10.2010
Сообщений: 11
Вопрос Процедура XOR. Скажите что здесь не правильно?

Содержание файла func.h

Код:
#ifndef FUNC_H
#define FUNC_H

int xor_func(char a[10], char b[10]){
    int i,j,k=0,m=0; char buf[10],buf1[10];bool ok;
    for (i=1;a[i];i++){
        for (j=1;b[j];j++){
            if (a[i]==b[j]){
                ok=false;break;
            }else{
                ok=true;
            }
          }
        }
    if (ok){
       k++;
       buf[k]=a[i];}
    for (j=1;b[j];j++){
        for(i=1;a[i];i++){
            if (b[j]=a[i]){
                ok=false;break;
            }else{
                ok=true;
            }

        }
    }
    if (ok){
        m++;
        buf1[m]=b[j];
    }
    return buf[k]+buf1[m];
}

#endif // FUNC_H
это main.cpp
Код:
#include <iostream>
#include <string.h>
#include <func.h>

using namespace std;

int main(){
    char a[10],b[10];int k;
    cout<<"a:"<<"\n";cin>>a;
    cout<<"b:"<<"\n";cin>>b;
    char m[10];
    for(k=1;m[k];k++){
    m[k]=xor_func(a,b);
        }
cout<<m<<"\n";cin>>m;
}
Помогите решить проблему.
Программа должна возвращать не одинаковые элементы двух массивов, а одинаковые откидать.
В свою очередь оно мне выводит вот это @.
Я уже просто окончательно запутался.


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 16.10.2011 в 01:00.
Pixma вне форума Ответить с цитированием
Старый 16.10.2011, 14:16   #2
k1moshka
Пользователь
 
Регистрация: 16.10.2011
Сообщений: 16
По умолчанию

Код:
for (int i = 0; i <= 9; i++)
    d[i] = a[i];
for (int i = 0; i <= 9; i++)
    d[i + 10] = b[i]; // объединение  массивов в третий массив

    for (int i = 0; i <= 19; i++)
    for (int j = 0; j <= 19; j++) {
        if (d[i] > d[j]) { temp = d[i]; d[i] = d[j]; d[j] = temp; }
        } // упорядочивание массива

        int i = 0;
    while (i < 19) {
            if (d[i] == d[i + 1]) i += 2; else {c[h] = d[i]; i++; h++;} } // заполнение четвертого массива не повторяющимися элементами
можешь добавить счетчик при заполнении четвертого массива чтобы при выводе на экран не попадать на неопределенные элементы
не?

Последний раз редактировалось k1moshka; 16.10.2011 в 14:51.
k1moshka вне форума Ответить с цитированием
Старый 16.10.2011, 19:53   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А я предлагаю еще сильнее упростить:
Код:
// gdf.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <iostream>

void xor_func(char *a, char *b){
	for(int i=0;i<10;i++){
		int j=0;for(;j<10 && a[i]!=b[j];j++);
		a[i]=(j<10)?0:a[i];
	}
}

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	char a[10],b[10];int k;
	cout<<"a:"<<"\n";cin>>a;
	cout<<"b:"<<"\n";cin>>b;
    xor_func(a,b);
    for(int i=0;i<10;i++) if(a[i]) cout<<a[i];
	system("pause");
	return 0;
}
Надеюсь смысл понятен?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно применить операцию Xor ? Vja4eslav Microsoft Office Excel 7 15.08.2011 10:29
Уважаемые программисты.Скажите пожалуйста все ли правильно в моем коде. Paul_AG Общие вопросы C/C++ 6 27.03.2009 21:30
Ну тогда скажите здесь в чём разница...? Arkuz Общие вопросы Delphi 4 23.04.2008 21:58
плиз форумчане посмотрите что здесь не правильно _Solomon_ Помощь студентам 6 07.06.2007 13:54