Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- /********************************************/
- /*raspredelitev operatorji*/
- int sort(char *opr){
- if(strcmp(opr,"mod")==0)
- return 3;
- else if((strcmp(opr,"-")==0)||(strcmp(opr,"+")==0))
- return 5;
- else if((strcmp(opr,"min")==0) || (strcmp(opr,"max")==0))
- return 7;
- return -1;
- }
- /***********************************************/
- /* resitev problem na rekuzicni nacin*/
- int resitev(char **izvor,int i){
- int j;
- int k=0;
- for (j=0;j<i;j++) {
- if (sort(izvor[k])<=sort(izvor[j]))
- k=i;
- }
- /* kopiranje vrednosti iz ivor v nova tabela x1*/
- char **x1 = malloc(sizeof(char*)*k);
- for(j=0;j<k;j++){
- x1[j] = malloc(sizeof(char)*4);
- strcpy(x1[j], izvor[j]);
- }
- /* kopiranje vrednosti iz ivor v nova tabela x2*/
- char **x2 = malloc(sizeof(char*)*(i-k-1));
- int m=0;
- for(j=k+1; j<i; j++,m++){
- x2[m]=malloc(sizeof(char)*4);
- strcpy(x2[m],izvor[j]);
- }
- /*rekurzivno izvajanje problem*/
- int xx1=resitev(x1,k);
- int xx2=resitev(x2,i-k-1);
- /*racunanje sortiran izraz*/
- if(strcmp(izvor[k], "mod") == 0){
- printf("%d,%s,%d",xx1," mod ",xx2);
- return xx1%xx2;
- }
- if(strcmp(izvor[k], "+") == 0){
- return xx1+xx2;
- printf("%d,%s,%d",xx1," + ",xx2);
- }
- if(strcmp(izvor[k], "-") == 0){
- return xx1 - xx2;
- printf("%d,%s,%d",xx1," - ",xx2);
- }
- if(strcmp(izvor[k], "max") == 0){
- if(xx1>xx2)
- return xx1;
- return xx2;
- printf("%d,%s,%d",xx1," max ",xx2);
- }
- if(strcmp(izvor[k], "min") == 0){
- if(xx1>xx2)
- return xx2;
- return xx1;
- printf("%d,%s,%d",xx1," min ",xx2);
- }
- return -1;
- }
- /*******************************************/
- /*funkcija main kje se program izvaje*/
- int main(){
- char **izvor=(char **)malloc(sizeof(char *)*1000);
- char *p=(char *)malloc(sizeof(char));
- int i=0;
- printf(" Vnosi izraz z operatprje mod,+,-,min ali max int stevila ob 0-9\n");
- while( scanf("%s",p)!=EOF){
- p=(char *)malloc(4*sizeof(char));
- izvor[i]=p;
- i++;
- }
- printf("%s",p);
- resitev(izvor,i);
- printf("Resitev izraz je %d \n",resitev(izvor,i));
- return 0;
- }
Add Comment
Please, Sign In to add comment