Advertisement
dusanrs

Untitled

Apr 19th, 2022
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.36 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void copyLEToLE(int value, void *adresa);
  5. void copyLEToBE(int value, void *adresa);
  6. void createBuffer(char *buffer, void *podatak1, void *podatak2);
  7. float Calculate(char* buffer);
  8.  
  9. int main()
  10. {
  11.     char buffer[10];
  12.     int a, b;
  13.     float resenje;
  14.  
  15.     printf("Unesite podatke: ");
  16.     scanf("%d %d",&a,&b);
  17.  
  18.     createBuffer(buffer, &a, &b);
  19.  
  20.     resenje = Calculate(buffer);
  21.     printf("Resenje: %.2f",resenje);
  22.  
  23.     return 0;
  24. }
  25.  
  26. void copyLEToLE(int value, void *adresa)
  27. {
  28.     int i;
  29.     char *pAdresa = (char*)adresa;
  30.     char *pValue = (char *)&value;
  31.  
  32.     for(i=0;i<sizeof(int);i++){
  33.         *(pAdresa+i)=*(pValue+i);
  34.     }
  35. }
  36.  
  37. void copyLEToBE(int value, void *adresa)
  38. {
  39.     int i;
  40.     char *pAdresa = (char*)adresa;
  41.     char *pValue = (char *)&value;
  42.  
  43.     for(i=0;i<sizeof(int);i++){
  44.         *(pAdresa+i)=*(pValue+sizeof(int)-i);
  45.     }
  46. }
  47.  
  48. void createBuffer(char *buffer, void *podatak1, void *podatak2)
  49. {
  50.     char ch;
  51.     int i;
  52.  
  53.     printf("Tip zapisa podataka (L B): ");
  54.     do{
  55.         ch=getch();
  56.     }while(ch!='L' && ch!='B');
  57.     printf("%c\n",ch);
  58.     *buffer = ch;
  59.  
  60.     printf("Znak operacije (+ - * /): ");
  61.     do{
  62.         ch=getch();
  63.     }while(ch!='+' && ch!='-' && ch!='*' && ch!='/');
  64.     printf("%c",ch);
  65.     *(buffer+1)=ch;
  66.  
  67.     switch(*(buffer)){
  68.         case 'L': copyLEToLE(*((int*)podatak1), buffer+2);
  69.                   copyLEToLE(*((int*)podatak2), buffer+6);
  70.             break;
  71.         case 'B': copyLEToBE(*((int*)podatak1), buffer+2);
  72.                   copyLEToBE(*((int*)podatak2), buffer+6);
  73.             break;
  74.     }
  75. }
  76.  
  77. float Calculate(char* buffer)
  78. {
  79.     float resenje=0;
  80.     int a, b;
  81.  
  82.     if(*buffer == 'L'){
  83.         copyLEToLE(*((int *)(buffer+2)),&a);
  84.         copyLEToLE(*((int *)(buffer+6)),&b);
  85.     }else{
  86.         copyLEToBE(*((int *)(buffer+2)),&a);
  87.         copyLEToBE(*((int *)(buffer+6)),&b);
  88.     }
  89.  
  90.     switch(*(buffer+1)){
  91.         case '+': resenje = a + b;
  92.             break;
  93.         case '-': resenje = a - b;
  94.             break;
  95.         case '*': resenje = a * b;
  96.             break;
  97.         case '/': if(b!=0) resenje = a / b;
  98.                     else{
  99.                         printf("Greska!\nDeljenje sa nulom!");
  100.                         resenje = 0;
  101.                     }
  102.             break;
  103.     }
  104.  
  105.     return resenje;
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement