تبلیغات
انجمن علمی کامپیوتر - کشف مین به زبان c

این سوال از شما یک جدول m*n دریافت می کند که شامل * و یا - است که * نشانه وجود بمب است و در خروجی در هر خانه تعداد بمب های موجود در خانه های همسایه(حد اکثر 8 خانه) است را نشان می دهد.

#include <iostream>
int tashkhis(char **,int m,int n,int i,int j);
using namespace std;
int main()
{
    char x,y;
    int n,m,round=0;
    cin>>x>>y;
    m=x-48;
    n=y-48;
again:
    {
        char **jadval;
        jadval=new char*[m];
        for(int i=0; i<m; i++)
            jadval[i]=new char[n];
        char result[m][n];
        for(int i=0; i<m; i++)
            for(int j=0; j<n; j++)
                cin>>jadval[i][j];
        for(int i=0; i<m; i++)
            for(int j=0; j<n; j++)
            {
                if(jadval[i][j]=='*')
                    result[i][j]='*';
                if(jadval[i][j]=='-')
                    result[i][j]=tashkhis(jadval,m,n,i,j)+48;
            }
        if(m!=0&&n!=0)
        {
            round++;
            cout<<"Field #"<<round<<endl;
            for(int i=0; i<m; i++)
            {
                for(int j=0; j<n; j++)
                    cout<<result[i][j];
                cout<<endl;
            }
            goto again;
        }
    }
}
int tashkhis(char **jadval,int m,int n,int i,int j)
{
    int count=0;
    for(int k=j-1 ; k<j+2; k++)
    {
        if(i+1>=m)
            break;
        if(k<0||k>=n)
            continue;
        if(jadval[i+1][k]=='*')
            count++;
    }
    for(int k=j-1 ; k<j+2; k++)
    {
        if(i-1<0)
            break;
        if(k<0||k>=n)
            continue;
        if(jadval[i-1][k]=='*')
            count++;
    }
    if(jadval[i][j-1]=='*'&&j-1>=0)
        count++;
    if(jadval[i][j+1]=='*'&&j+1<n)
        count++;

    return count;
}





طبقه بندی: برنامه نویسی،

تاریخ : دوشنبه 1 دی 1393 | 10:44 ق.ظ | نویسنده : محبوبه قرقانی | نظرات
.: Weblog Themes By SlideTheme :.


  • ووگیگ