0
L = [[" " for i in range(10)] for j in range(10)]

for i in range (10):
    L[9][i]="*"
for i in range (10):
        L[8][i]="1"
for i in range (10):
        L[7][i]="*"
for i in range (10):
        L[6][i]="3"
for i in range (10):
        L[5][i]="*"

print(L)
print()

def Check_Lines(l):
    for i in range (10):
        x=l[i].count("*")
        if x == 10:
            print ("LINE IS FULL")
            del l[i]
            l.reverse()
            l.append([" "," "," "," "," "," "," "," "," "," "])
            l.reverse()


Check_Lines(L)
print (L)

私はPython言語に精通しているので、上記の関数をPythonで書きました。10 x 10 のリストを検索し、単一の行が * で満たされている場合は、それを削除して新しい空の行を一番上に置きます。

c には、私が使用したリスト関数がないことを知っています。私がやっていることについて簡単な方法はありますか?

4

1 に答える 1

1

残念ながらCでは、その問題はかなり難しいでしょう。マトリックスにメモリ ブロックを割り当てる必要があります。行を「削除」したい場合は、すべてを上に移動して、マトリックスの下部にある余分なメモリを解放する必要があります。

C++ を使用できる場合、これは STL コンテナーを使用するとはるかに簡単に実行できます。ベクトルのベクトルを持つことができます。行を削除すると、erase が呼び出されます。

l.erase(pos)  // pos is an iterator at the row you'd like to remove
于 2013-06-28T18:03:23.720 に答える