Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <conio.h>
- #include <ctype.h>
- #include <string.h>
- #include <malloc.h>
- void citireMatrice(char* filepath, int a[100][100],int rows,int cols)
- {
- FILE* f = fopen(filepath, "r+");
- for (int row = 0; row < rows; ++row)
- for (int col = 0; col < cols; ++col)
- fscanf(f, "%d", &a[row][col]);
- fclose(f);
- }
- float maMatrice(int a[100][100])
- {
- citireMatrice("matrice1.txt", a, 4, 3);
- int s = 0;
- for (int i = 0; i < 4; i++)
- for (int j = 0; j < 3; j++)
- s += a[i][j];
- float ma = s / (3.0 * 4.0);
- return ma;
- }
- void optiune6()
- {
- int a[100][100];
- float op6 = maMatrice(a);
- printf("%f", op6);
- }
- float media(const float left, const float right)
- {
- return (left + right) / 2;
- }
- float media_n(const float* vector, const int size)
- {
- float sum = 0;
- for (int i = 0; i < size; ++i)
- sum += vector[i];
- return sum / size;
- }
- void reverse(const char* input, char *output)
- {
- int size = strlen(input);
- for (int i = 0; i < size; ++i)
- output[i] = input[size - i - 1];
- output[size] = '\0';
- }
- int compare(const char* left, const char* right)
- {
- int length = strlen(left);
- for (int i = 0; i < length; i++)
- if (left[i] != right[i])
- return 1;
- return 0;
- }
- int isPalindrom(const char* str)
- {
- char* rev = (char*)calloc(strlen(str), sizeof(char));
- reverse(str, rev);
- int pal = compare(str, rev);
- free(rev);
- return pal;
- }
- int citireF(char* filepath, char* result)
- {
- FILE* handle = fopen(filepath, "r");
- int size = 0;
- char* buf = (char*)malloc(sizeof(char) * 2048);
- while (!feof(handle))
- {
- size += fread(buf, 2048, 1, handle);
- result = (char*)realloc(result, size);
- strcat(result, buf);
- }
- free(buf);
- fclose(handle);
- return size;
- }
- void scriereF(char* filepath, char* buffer)
- {
- FILE* handle = fopen(filepath, "w+");
- fprintf(handle, "%s", buffer);
- fclose(handle);
- }
- void copiazaF(char* src, char* dest)
- {
- FILE* srcf = fopen(src, "r");
- FILE* destf = fopen(dest, "w+");
- char* buf = (char*)malloc(sizeof(char) * 2048);
- while (!feof(srcf))
- {
- fgets(buf, 2048, srcf);
- fputs(buf, destf);
- }
- free(buf);
- fclose(destf);
- fclose(srcf);
- }
- void optiune1()
- {
- char* nume = (char*)malloc(sizeof(char) * 80);
- printf("Introduceti numele dumneavoastra \n");
- scanf_s("%s", nume, sizeof(nume));
- printf("Hello, %s! \n", nume);
- free(nume);
- //
- }
- void optiune2()
- {
- int a, b;
- float m;
- printf("Introduceti valoarea primului numar pentru medie: ");
- scanf_s("%d", &a);
- printf("Introduceti valoarea celui de-al doilea numar: ");
- scanf_s("%d", &b);
- m = media(a, b);
- printf("Media celor doua numere %d si %d este %.2f \n", a, b, m);
- //_getch();
- }
- void optiune3()
- {
- int size;
- printf("Introduceti n:");
- scanf_s("%d", &size);
- float* vector = (float*)malloc(sizeof(float) * size);
- float ma = media_n(vector, size);
- printf("Media primelor %d numere este: %.2f\n", size, ma);
- //_getch();
- }
- void optiune4()
- {
- char* nume = (char*)malloc(sizeof(char) * 80);
- char* numeinversat = (char*)malloc(sizeof(char) * 80);
- printf("Introduceti numele: ");
- scanf_s("%s", nume, strlen(nume));
- reverse(nume, numeinversat);
- printf("Numele inversat este: %s \n", numeinversat);
- if (!compare((nume), (numeinversat)))
- printf("Numele este palindrom\n");
- else
- printf("Numele nu este palindrom\n");
- free(numeinversat);
- free(nume);
- //_getch();
- }
- void optiune5()
- {
- int size;
- scanf_s("%d", &size);
- int* v1 = (int*)malloc(sizeof(int) * size);
- int* v2 = (int*)malloc(sizeof(int) * size);
- printf("Introduceti primul vector: \n");
- for (int i = 0; i < size; i++)
- {
- printf("Introdceti numarul %d: ", i + 1);
- scanf_s("%d", &v1[i]);
- }
- printf("\n");
- printf("Introduceti al doilea vector: \n");
- for (int i = 0; i < size; i++)
- {
- printf("Introdceti numarul %d: ", i + 1);
- scanf_s("%d", &v2[i]);
- }
- printf("\n");
- //Operatia <si>
- printf("Operatia <si>: \n");
- for (int i = 0; i < size; i++)
- printf("%d", v1[i] && v2[i]);
- printf("\n");
- //Operatia <sau>
- printf("Operatia <sau>: \n");
- for (int i = 0; i < size; i++)
- printf("%d", v1[i] || v2[i]);
- printf("\n");
- //Operatia <xor>
- printf("Operatia <xor>: \n");
- for (int i = 0; i < size; ++i)
- printf("%d", v1[i] ^ v2[i]);
- printf("\n");
- free(v2);
- free(v1);
- //_getch();
- }
- int main()
- {
- char operator;
- printf("Alegeti varianta: \n 1 - Alg_nume \n 2 - Alg_media \n 3 - Alg_media_n_nr \n\
- 4 - Alg_nume_palindrom \n 5 - Alg Operatii pe Biti \n");
- scanf("%c", &operator);
- switch (operator)
- {
- //algoritm pentru afisarea numelui
- case '1':
- optiune1();
- break;
- //algoritm pentru afisarea mediei
- case '2':
- optiune2();
- break;
- //algoritm pentru mai multe numere
- case '3':
- optiune3();
- break;
- //Algoritm palindrom
- case '4':
- optiune4();
- break;
- //algoritm Operatii pe biti
- case'5':
- optiune5();
- break;
- case '6':
- optiune6();
- break;
- default:
- printf("Alegeti unul dintre operatorii disponibili! \n");
- //_getch();
- }
- _getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement