0

私はこの小さなプロジェクトを持っています。それは、2次元で動き、一度に1ブロック「歩く」機械です。だから私はプログラミングから始めて、機械が動いているように、番号を順番に印刷したいと思います。

このような:

XOOOO

OOOOO

OOOOO

OOOOO

次の動きは

OOOOO

XOOOO

OOOOO

OOOOO

次に、列の終わりまで移動して、別の列に移動し、移動を裏庭にします(または、新しい列の最初のドットに移動して、移動を繰り返すことができます)。

私がやっていることは、1つの行列であり、制限付きのforループを作成しようとしていますが、機能していません。C言語も初めてです。

プログラミングでは、各場所を1つずつ印刷したいことを忘れないでください。

別の質問:これを行うために開発ボードを購入することを考えていますが、それについてどう思いますか?=)Linuxを使用してドライバーを開発する必要がありますか?

どうもありがとうございます。

編集:これがクラッシュする私のコードであり、初心者の質問=Sを探します

#include <stdio.h>
#include <iostream.h>

int main()
{
    int num[625];
    int x,y,count;
    do
    { 
    printf("\n Inicializando... ");
    num[625]=num[count];
    count++;
    } 
    while (num[count]!= 25);
    if (num[count]=25)
    {
        do
        { 
        printf("\n Inicializando... ");
        num[625]=num[count];
        count++;
        } while (num[count]!= 25);

    }
    for (count=0;count<625;count++)
    printf (" %d",num[count]);

    system("pause");
    return(0);
}
4

2 に答える 2

1

このアルゴを試してみてください。

NRを意志で変更行または列の数です。

#include<stdio.h>

#define NR 5

int main()
{
   int i,j,loop;
   for( loop=0; loop < NR*NR; loop++)
   {
      printf("Loop %d\n",loop);
      for(i=0;i< NR; i++)
      {
         for (j=0;j<NR;j++)
         {
            if ( loop == NR*j+i )  printf("X ");
            else                  printf("0 ");
         }
         printf("\n");
      }
      printf("\n");
  }
}
于 2013-03-07T09:40:32.373 に答える
1

これはおそらくあなたの質問に対する実際の答えではありませんが、:

int num[625];
...
    num[625]=num[count];
...

実際には存在しない配列位置に何かを格納しています。そして、Cはかなり寛容な言語なので、配列の直後に何か他のものに書き込んでいるだけです-おそらくx。これはおそらくあなたがやりたかったことではありません。

ここのコードに関するいくつかのさらなるコメント:

#include <stdio.h>
#include <iostream.h>   

混合stdio.hするのは良いことではありませんiostreamiostream.h非常に古いです-標準に準拠したコンパイラを使用している場合は、使用してiostreamください-ただし、これもC ++ではなくCとしてタグ付けしているため、完全に削除することをお勧めします。

int main()
{
    int num[625];
    int x,y,count;
    do
    { 
    printf("\n Inicializando... ");
    num[625]=num[count];

配列外のアドレス指定に関する上記のコメントは別として、num[count]設定されたことがないことに注意してください-そのメモリにたまたまどのような値もあります-これはおそらく整数範囲のほぼすべての値です。

    count++;
    } 
    while (num[count]!= 25);

初期化されていないためnum[count]、25になる場合とならない場合があります。count十分に高くなると、クラッシュする可能性があります。

    if (num[count]=25)
    {
        do
        { 
        printf("\n Inicializando... ");
        num[625]=num[count];
        count++;
        } while (num[count]!= 25);

    }
    for (count=0;count<625;count++)
    printf (" %d",num[count]);

私は、関数内の2つ以上、おそらく3つの連続した空の行の大ファンではありませんでした。

    system("pause");
    return(0);
}
于 2013-03-06T18:20:12.137 に答える