2013-12-18 5 views
-1

Я очень новичок в этом и программировании на C. Это мой первый год, и для меня это не очень понятно. Надеюсь, я скоро поправляюсь.Как сравнить заданную строку с результатом

У меня есть код здесь, где я вводим число, и получаю результаты на основе таблицы, которую я имею ниже. Я хотел бы знать: если у меня есть заданная строка (в коде это: test [7] = "2 B 1 C") Как я могу сравнить результат, который у меня есть с этой строкой, и посмотреть, печать = хорошо?

Это очень трудно объяснить, поэтому, пожалуйста, дайте мне знать, если я не понимаю свой вопрос. Вы можете проверить код, чтобы узнать, как он работает.

#include <stdio.h> 
#include <string.h> 

void initialize(int poss[1296][4]); 

int main() 
{ 
    int table[1296][4]; 
    char str[5]; 
    char tmp[5]; 

    int i, j, k; 
    int bull = 0; 
    int cow = 0; 
    char test[7]={"2 B 0 C"}; 

    initialize(table); 
    printf("Enter 4 digits: "); 

    scanf("%s", str); 

    for (i=0; i<1296; i++) // building this table 
    { 
    strcpy(tmp, str); // copying string 

    for (j=0; j<4; j++) 
    { 
     for (k=0; k<4; k++) 
     { 
      if (table[i][j]==tmp[k]-'0' && j==k) // gets the string as an integer 
      { 
       tmp[k] = -1; 
       bull++; 
       break; 
      } 
      else if (table[i][j]==tmp[k]-'0' && j!=k) 
      { 
       tmp[k] = -1; 
       cow++; 
       break; 
      } 
     } 
    } 

    printf ("%d B %d C\n\n", bull, cow); 
    bull = 0; 
    cow = 0; 
    } 
} 

//------------------------------------TABLE---------------------------------// 

void initialize(int poss[1296][4]) 
{ 
int i=0; 
int j, k=0; 
int m; 

while (i<=5) 
{ 
    for (j=0; j<216 ; j++) 
    { 
     poss[k][0]=i; 
     k++; 
    } 
    i++; 
    } 

    k=0; 
    i=0; 
    j=0; 

    while (k<1296) 
    { 
    for (m=0; m<6; m++) 
    { 
     for (j=0; j<6; j++) 
      { 
      for (i=0; i<36 ; i++) 
       { 
       poss[k][1]=j; 
       k++; 
       } 
      } 
     } 
    } 

    k=0; 
    i=0; 
    j=0; 
    m=0; 

    while (k<1296) 
    { 
    for (j=0; j<6; j++) 
    { 
     for (i=0; i<6; i++) 
     { 
      poss[k][2]=j; 
      k++; 
     } 
    } 

    } 

    k=0; 
    i=0; 
    j=0; 
    m=0; 

    while (k<1296) 
    { 
    for (i=0; i<6; i++) 
     { 
     poss[k][3]=i; 
     k++; 
     } 
    } 
} 
+0

Просто чтобы понять, пользователь вводит номер и на основе таблицы, это даст это результат. (Таблица дает 1296 возможностей) пример: 1245 // от пользователя 1354 = 1 B 2 C // (из таблицы) – user3117119

+0

@userXXX Вы ищете функцию 'strcmp()'? –

+0

да, но я хочу, чтобы это сравнение со всеми результатами у меня есть – user3117119

ответ

1

Вы можете использовать Sprintf генерировать результат в виде строки вместо того, чтобы печатать его, а затем использовать STRCMP сравнить эту строку на то, что вы ожидаете, что это будет. Вы также можете использовать printf для печати строки, созданной с помощью sprintf. (Когда вы используете sprintf, не включайте символы новой строки, поскольку они не находятся в тестовой строке, а выводите только те, у которых есть printf).

Непонятно, что у вас есть только одна тестовая строка, но напечатайте 1296 строк ... если эти строки не все одинаковы, вам нужен массив из 1296 результатов теста ... или более ясный вопрос.

+0

Благодарим вас за ответ. Позвольте мне попытаться быть более понятным. Помимо сравнения строк, Пользователь вводит число, и из таблицы я получаю результат. Это программа быков и коров. , поэтому, если пользовательские входы 1100 и из таблицы имеют 1010, результат - 2B2C 2 быка и 2 коровы (2 целых числа, которые находятся в правильном положении, а 2 - нет) – user3117119

0

образец

#include <stdio.h> 
#include <string.h> 

int main(){ 
    char test[8]={"2 B 0 C"}; 
    char result[8]; 
    int bull = 0; 
    int cow = 0; 
    bull = 2;//set by program 
    cow = 0; 
    sprintf(result, "%d B %d C", bull, cow); 
    if(strcmp(result, test)==0){ 
     printf("match!\n"); 
    } else { 
     printf("not match!\n"); 
    } 
    return 0; 
} 
Смежные вопросы