2014-11-08 2 views
-4

Так что я пытаюсь получить значение XOR каждого персонажа в сочетании с другими из списка. Например: c^e, b^a и т.д.Создание комбинаций в C

#include <stdio.h> 

int main() 
{ 
    int i, j; 

    const char* characters[6] = {'a', 'b', 'c', 'd', 'e', 'f'}; 
    for (i = 0; i < sizeof(characters) - 1; i++){ 
     for (j = i + 1; j < sizeof(characters); j++){ 
      printf("%c\n", characters[i]^characters[j]); 
     } 
    } 

    return 0; 
} 

Однако я не могу показаться, чтобы заставить его работать с printf(), как он выводит строку, когда в кавычках и ошибки, когда нет.

+0

Вы передаете 'printf()' строку, т. Е. "Chars [i]^chars [j] \ n", поэтому она выводит строку! – gsamaras

+0

Итак, как напечатать результат elserather? – dwvaxaz

+0

'printf (" chars [% d]^chars [% d] is% d \ n ", i, j, characters [i]^characters [j]);' – BLUEPIXY

ответ

0

chars[i]^chars[j] (без кавычек) будет вычисляться в char не строку, поэтому попробуйте

char chars[] = {'a', 'b', 'c', 'd', 'e', 'f'}; 

... 

print("%c\n", chars[i]^chars[j]); 
+0

Пока еще предстоит сделать работу. – gsamaras

+0

'C: \ Users \ USER \ Desktop \ combo.c | 10 | ошибка: недопустимые операнды в двоичные^(есть 'const char *' и 'const char *') |' – dwvaxaz

+0

@dwvaxaz Я думаю, что нет необходимости к указателю. – BLUEPIXY

0

Вы дать printf() строку, то есть "символы [я]^символы [у] \ п", это почему он выводит строку!

  1. Вы хотите массив символов, а не строки, таким образом, использовать одиночные кавычки вместо двойных них в инициализации массива.
  2. У вас была дополнительная скобка в условии цикла for.
  3. Вы хотите напечатать значение XOR, поэтому используйте спецификатор% d для printf() (как указано BLUEPIXY).

Собираем все комментарии вместе, вы получите это:

#include <stdio.h> 

int main() { 
    int i, j; 

    char characters[6] = { 'a', 'b', 'c', 'd', 'e', 'f' }; 
    for (i = 0; i < sizeof(characters) - 1; i++) { 
    for (j = i + 1; j < sizeof(characters); j++) { 
     printf("chars[%d]^chars[%d] is %d\n", i, j, 
      characters[i]^characters[j]); 
    } 
    } 

    return 0; 
} 

Поскольку вы хотите, чтобы все комбинации, вы можете взглянуть на this ответ и повторите попытку. :)

Этот link обеспечивает более простой и релевантный ответ.

+0

Это не отвечает на вопрос. Мне нужно вывести значение XOR-ed всех комбинаций между элементами в массиве. – dwvaxaz

+0

Итак, @dwvaxaz вы хотите все комбинации, проверьте мое редактирование! – gsamaras

+0

Я не понимаю, почему это должно быть так сложно – dwvaxaz

Смежные вопросы