Untitled
unknown
plain_text
3 years ago
6.8 kB
3
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"); } }
Editor is loading...