Advertisement
Guest User

Untitled

a guest
Dec 11th, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.03 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <ctype.h>
  4. #include <string.h>
  5. #include <malloc.h>
  6. void citireMatrice(char* filepath, int a[100][100],int rows,int cols)
  7. {
  8. FILE* f = fopen(filepath, "r+");
  9. for (int row = 0; row < rows; ++row)
  10. for (int col = 0; col < cols; ++col)
  11. fscanf(f, "%d", &a[row][col]);
  12. fclose(f);
  13. }
  14. float maMatrice(int a[100][100])
  15. {
  16. citireMatrice("matrice1.txt", a, 4, 3);
  17. int s = 0;
  18. for (int i = 0; i < 4; i++)
  19. for (int j = 0; j < 3; j++)
  20. s += a[i][j];
  21. float ma = s / (3.0 * 4.0);
  22. return ma;
  23. }
  24. void optiune6()
  25. {
  26. int a[100][100];
  27. float op6 = maMatrice(a);
  28. printf("%f", op6);
  29. }
  30. float media(const float left, const float right)
  31. {
  32. return (left + right) / 2;
  33. }
  34.  
  35. float media_n(const float* vector, const int size)
  36. {
  37. float sum = 0;
  38. for (int i = 0; i < size; ++i)
  39. sum += vector[i];
  40.  
  41. return sum / size;
  42. }
  43.  
  44. void reverse(const char* input, char *output)
  45. {
  46. int size = strlen(input);
  47. for (int i = 0; i < size; ++i)
  48. output[i] = input[size - i - 1];
  49. output[size] = '\0';
  50. }
  51.  
  52. int compare(const char* left, const char* right)
  53. {
  54. int length = strlen(left);
  55. for (int i = 0; i < length; i++)
  56. if (left[i] != right[i])
  57. return 1;
  58.  
  59. return 0;
  60. }
  61.  
  62. int isPalindrom(const char* str)
  63. {
  64. char* rev = (char*)calloc(strlen(str), sizeof(char));
  65. reverse(str, rev);
  66. int pal = compare(str, rev);
  67. free(rev);
  68.  
  69. return pal;
  70. }
  71.  
  72. int citireF(char* filepath, char* result)
  73. {
  74. FILE* handle = fopen(filepath, "r");
  75. int size = 0;
  76. char* buf = (char*)malloc(sizeof(char) * 2048);
  77. while (!feof(handle))
  78. {
  79. size += fread(buf, 2048, 1, handle);
  80. result = (char*)realloc(result, size);
  81. strcat(result, buf);
  82. }
  83. free(buf);
  84. fclose(handle);
  85.  
  86. return size;
  87. }
  88.  
  89. void scriereF(char* filepath, char* buffer)
  90. {
  91. FILE* handle = fopen(filepath, "w+");
  92. fprintf(handle, "%s", buffer);
  93. fclose(handle);
  94. }
  95.  
  96. void copiazaF(char* src, char* dest)
  97. {
  98. FILE* srcf = fopen(src, "r");
  99. FILE* destf = fopen(dest, "w+");
  100.  
  101. char* buf = (char*)malloc(sizeof(char) * 2048);
  102. while (!feof(srcf))
  103. {
  104. fgets(buf, 2048, srcf);
  105. fputs(buf, destf);
  106. }
  107. free(buf);
  108.  
  109. fclose(destf);
  110. fclose(srcf);
  111. }
  112.  
  113.  
  114. void optiune1()
  115. {
  116. char* nume = (char*)malloc(sizeof(char) * 80);
  117. printf("Introduceti numele dumneavoastra \n");
  118. scanf_s("%s", nume, sizeof(nume));
  119. printf("Hello, %s! \n", nume);
  120. free(nume);
  121. //
  122. }
  123.  
  124. void optiune2()
  125. {
  126. int a, b;
  127. float m;
  128. printf("Introduceti valoarea primului numar pentru medie: ");
  129. scanf_s("%d", &a);
  130. printf("Introduceti valoarea celui de-al doilea numar: ");
  131. scanf_s("%d", &b);
  132. m = media(a, b);
  133. printf("Media celor doua numere %d si %d este %.2f \n", a, b, m);
  134. //_getch();
  135. }
  136.  
  137. void optiune3()
  138. {
  139. int size;
  140. printf("Introduceti n:");
  141. scanf_s("%d", &size);
  142. float* vector = (float*)malloc(sizeof(float) * size);
  143. float ma = media_n(vector, size);
  144. printf("Media primelor %d numere este: %.2f\n", size, ma);
  145. //_getch();
  146. }
  147.  
  148. void optiune4()
  149. {
  150. char* nume = (char*)malloc(sizeof(char) * 80);
  151. char* numeinversat = (char*)malloc(sizeof(char) * 80);
  152. printf("Introduceti numele: ");
  153. scanf_s("%s", nume, strlen(nume));
  154.  
  155. reverse(nume, numeinversat);
  156. printf("Numele inversat este: %s \n", numeinversat);
  157.  
  158. if (!compare((nume), (numeinversat)))
  159. printf("Numele este palindrom\n");
  160. else
  161. printf("Numele nu este palindrom\n");
  162.  
  163. free(numeinversat);
  164. free(nume);
  165. //_getch();
  166. }
  167.  
  168. void optiune5()
  169. {
  170. int size;
  171. scanf_s("%d", &size);
  172. int* v1 = (int*)malloc(sizeof(int) * size);
  173. int* v2 = (int*)malloc(sizeof(int) * size);
  174. printf("Introduceti primul vector: \n");
  175. for (int i = 0; i < size; i++)
  176. {
  177. printf("Introdceti numarul %d: ", i + 1);
  178. scanf_s("%d", &v1[i]);
  179. }
  180. printf("\n");
  181.  
  182. printf("Introduceti al doilea vector: \n");
  183. for (int i = 0; i < size; i++)
  184. {
  185. printf("Introdceti numarul %d: ", i + 1);
  186. scanf_s("%d", &v2[i]);
  187. }
  188. printf("\n");
  189.  
  190. //Operatia <si>
  191. printf("Operatia <si>: \n");
  192. for (int i = 0; i < size; i++)
  193. printf("%d", v1[i] && v2[i]);
  194. printf("\n");
  195.  
  196. //Operatia <sau>
  197. printf("Operatia <sau>: \n");
  198. for (int i = 0; i < size; i++)
  199. printf("%d", v1[i] || v2[i]);
  200. printf("\n");
  201.  
  202. //Operatia <xor>
  203. printf("Operatia <xor>: \n");
  204. for (int i = 0; i < size; ++i)
  205. printf("%d", v1[i] ^ v2[i]);
  206. printf("\n");
  207.  
  208. free(v2);
  209. free(v1);
  210.  
  211. //_getch();
  212. }
  213.  
  214.  
  215. int main()
  216. {
  217. char operator;
  218. printf("Alegeti varianta: \n 1 - Alg_nume \n 2 - Alg_media \n 3 - Alg_media_n_nr \n\
  219. 4 - Alg_nume_palindrom \n 5 - Alg Operatii pe Biti \n");
  220. scanf("%c", &operator);
  221.  
  222. switch (operator)
  223. {
  224. //algoritm pentru afisarea numelui
  225. case '1':
  226. optiune1();
  227. break;
  228.  
  229. //algoritm pentru afisarea mediei
  230. case '2':
  231. optiune2();
  232. break;
  233.  
  234. //algoritm pentru mai multe numere
  235. case '3':
  236. optiune3();
  237. break;
  238.  
  239. //Algoritm palindrom
  240. case '4':
  241. optiune4();
  242. break;
  243.  
  244. //algoritm Operatii pe biti
  245. case'5':
  246. optiune5();
  247. break;
  248. case '6':
  249. optiune6();
  250. break;
  251. default:
  252. printf("Alegeti unul dintre operatorii disponibili! \n");
  253. //_getch();
  254. }
  255. _getch();
  256. return 0;
  257. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement