Untitled

 avatar
unknown
plain_text
3 years ago
6.8 kB
2
Indexable
#include<stdlib.h>
#include <stdio.h>
#include <string.h>

int este_palindrom(int x)
{
    int inv=0,c=x;

    while(c)
    {
        inv=inv*10+c%10;
        c/=10;
    }

    if(inv==x)
        return 1;
    else
        return 0;
}

int este_prim(int x)
{
    int nr=0;

    for(int i=1; i<=x; i++)
    {
        if(x%i==0)
            nr++;
    }

    if(nr==2)
        return 1;
    else
        return 0;
}
int main()
{
    int n,m;
    int **matrice;
    char *text;
    char *cuvant;

    scanf("%d",&n);
    scanf("%d",&m);

    char buffer;
    scanf("%c",&buffer);

    matrice=(int **)calloc(n,sizeof (int *));

    for(int i=0; i<n; i++)
    {
        matrice[i]=(int *)calloc(m,sizeof (int *));
    }

    int contor_citire = 0, dim_citire = 1;
    text=calloc(1,sizeof (char *));

    while(1)
    {
        if (dim_citire == contor_citire)
        {
            char *a_test;
            a_test = realloc(text, dim_citire * 2);

            if(a_test==NULL)
            {
                printf("eroare la realocarea dim");
            }

            text = a_test;

            dim_citire = dim_citire * 2;

        }

         if (scanf("%c", &text[contor_citire]) == EOF)
                break;

            contor_citire++;


            printf("%s\n",text); /// trb testat

    }


    matrice[0][0]=1;

    int parcurgere_matrice=2,coord_i=0,coord_j=0;

    cuvant = strtok(text, " ");
    while (cuvant != NULL)
    {

        if(cuvant[0]=='a')
        {
            int x1=0,x2=0,x3=0,x4=0;

            x1=cuvant[1]-'0';
            x2=cuvant[2]-'0';
            x3=cuvant[3]-'0';
            x4=cuvant[4]-'0';

            int max12,max34,maxfinal;

            if(x1>x2)
            {
                max12=x1;
            }
            else
            {
                max12=x2;
            }
            if(x3>x4)
            {
                max34=x3;
            }
            else
            {
                max34=x4;
            }

            if(max12>max34)
            {
                maxfinal=max12;
            }
            else
            {
                maxfinal=max34;
            }

            if(maxfinal==x1)
            {
                coord_j++;
                matrice[coord_i][coord_j]=parcurgere_matrice;
                parcurgere_matrice++;
            }
            if(maxfinal==x2)
            {
                coord_i--;
                matrice[coord_i][coord_j]=parcurgere_matrice;
                parcurgere_matrice++;
            }
            if(maxfinal==x3)
            {
                coord_j--;
                matrice[coord_i][coord_j]=parcurgere_matrice;
                parcurgere_matrice++;
            }
            if(maxfinal==x4)
            {
                coord_i++;
                matrice[coord_i][coord_j]=parcurgere_matrice;
                parcurgere_matrice++;
            }
        }

        if(cuvant[0]=='b')
        {
            int k=0,x=0;

            for(int i=1; i<strlen(cuvant) && cuvant[i]!='\n'; i++)
            {
                k=k*10+(cuvant[i]-'0');

                printf("k este:%d\n",k);
            }
            printf("final:%d\n",k);

            x=k%100;

            printf("%d\n",x);

            if(este_palindrom(k)==1 && este_prim(x)==1)
            {
                coord_j--;
                matrice[coord_i][coord_j]=parcurgere_matrice;
                parcurgere_matrice++;
            }

            if(este_palindrom(k)==1 && este_prim(x)==0)
            {
                coord_j++;
                matrice[coord_i][coord_j]=parcurgere_matrice;
                parcurgere_matrice++;
            }

            if(este_palindrom(k)==0 && este_prim(x)==1)
            {
                coord_i--;  /// in sus
                matrice[coord_i][coord_j]=parcurgere_matrice;
                parcurgere_matrice++;
            }

            if(este_palindrom(k)==0 && este_prim(x)==0)
            {
                coord_i++;  /// in jos
                matrice[coord_i][coord_j]=parcurgere_matrice;
                parcurgere_matrice++;
            }

        }

        if(cuvant[0]=='c')
        {
            ///int v[1000]= {0};

            int dim=cuvant[1]-'0';
            int circulare=cuvant[2]-'0'; //k
            int contor=0;
            int s=0;

            int *v;
            v=(int *)calloc(strlen(cuvant),sizeof(int *));

            for(int i=3; i<strlen(cuvant); i++)
            {
                v[contor]=cuvant[i]-'0';
                contor++;
            }

            contor--; // a rezolvat problema

            int local_circulare=0;

            for(int i=1; i<=circulare; i++)
            {
                printf("La inceput local_circulare : %d\n",local_circulare);
                if(local_circulare<dim)
                {
                    s+=v[local_circulare];
                    printf("Am adaugat la suma if: %d\n",v[local_circulare]);
                }
                else
                {
                    local_circulare=local_circulare%dim;
                    s+=v[local_circulare];
                    printf("Am adaugat la suma else: %d , local_circulare:%d\n",v[local_circulare],local_circulare);
                }
                local_circulare+=circulare;
                printf("local_circulare : %d\n",local_circulare);


                printf("suma este: %d\n",s);
            }
            printf("suma este %d\n",s);

            if(s%4==0)  //stanga
            {
                coord_j--;
                matrice[coord_i][coord_j]=parcurgere_matrice;
                parcurgere_matrice++;
            }
            if(s%4==1)  //sus
            {
                coord_i--;
                matrice[coord_i][coord_j]=parcurgere_matrice;
                parcurgere_matrice++;
            }

            if(s%4==2)  //dreapta
            {
                coord_j++;
                matrice[coord_i][coord_j]=parcurgere_matrice;
                parcurgere_matrice++;
            }

            if(s%4==3)  //jos
            {
                coord_i++;
                matrice[coord_i][coord_j]=parcurgere_matrice;
                parcurgere_matrice++;
            }

            for(int i=0; i<=contor; i++)
            {
                printf("%d ",v[i]);
            }
            printf("\n");
        }
        cuvant = strtok(NULL, " ");
    }

    for(int i=0; i<n; i++)
    {
        for(int j=0; j<m; j++)
        {
            printf("%d ",matrice[i][j]);
        }
        printf("\n");
    }

}