2017-07-16 18 views
-1

基本的には数独パズルだ、と我々はに書かれていること(ドットが欠落している桁を交換することができる)除算のargvパラメータと配列に書き込み

すべてARGVパラメータは9桁の数字で構成されてコンソールを介して実行中のプログラムを取得このような二次元配列:

./sudoku "9...7...." "2...9..53" ".6..124.." "84...1.9." "5.....8.." ".31..4..." "..37..68." 
".9..5.741" "47......." 

と配列値でなければなりません:

array[0][0] = 9, array[0][1] = 0, ..., array[8][0] = 4, ... 

メイン断片:

int  main(int argc, char **argv) 
{ 
    int s_f[9][9]; 
    int i; 
    int j; 

i = 1; 
j = 0; 
if (argc != 10) 
    write(1, "Error\n", 6); 
else 
{ 

と私が使用しようとしているコードはそこに行く:

while (i < 10) 
    { 
     j = 0; 
     while(j < 9) 
     { 
      s_f[i - 1][j] = write(1, &(argv[i][j]), 1); 
      j++; 
     } 
     write(1, "\n", 1); 
     i++; 
    } 
    write(1, "\n", 1); 
} 

代わりに、引数の数字のゼロがある場合は、それがゼロに置き換える必要があります。 ARGVパラメータを読み、intに入れて、解決策を見つけることを続行するために容易になる方法についての

任意のアイデア?

P.S.唯一許される機能は、書き込み、mallocおよび無料です。

P.P.S.アトイは許可されています。

+0

ですか? – BLUEPIXY

答えて

-1

ので、溶液は[本](https://wandbox.org/permlink/zgoAoEbEwLeC63oy)等

int  main(int argc, char **argv) 
{ 
    int s_f[9][9]; 
    int i; 
    int j; 

i = 1; 
j = 0; 
if (argc != 10) 
    write(1, "Error\n", 6); 
else 
{ 
    while (i < 10) 
    { 
     j = 0; 
     while(j < 9) 
     { 
      if (ft_strcmp(&argv[i][j], ".") == 0) 
       s_f[i - 1][j] = 0; 
      else 
       s_f[i - 1][j] = argv[i][j] - '0'; 
      j++; 
     } 
     i++; 
    } 
} 

i = 0; 
j = 0; 
while (i < 9) 
{ 
    while (j < 9) 
    { 
     if (s_f[i][j] == -2) 
      s_f[i][j] = 0; 
     j++; 
    } 
    i++; 
    j = 0; 
} 

i = 0; 
j = 0; 
while (i < 9) 
{ 
    while (j < 9) 
    { 
     if (j != 8) 
      printf("%d ", s_f[i][j]); 
     else 
      printf("%d", s_f[i][j]); 
     j++; 
    } 
    i++; 
    j = 0; 
    printf("\n"); 
} 
return (0); 
} 
関連する問題