Sunteți pe pagina 1din 40

#include <stdio.

h>

#include <stdlib.h>

#include <math.h>

#include <string.h>

#define MIN -120

/*int main() //pb1

int v[] = { 7, 1, 2, 5, 8, 10 };

int s = 0, p = 1;

printf("Elementele vectorului sunt: ");

for (int i = 0; i < sizeof(v) / sizeof(int); i++)

printf("%d ", v[i]);

s += v[i];

p *= v[i];

printf("\n");

printf("Suma elementelor este s = %d\nProdusul elementelor este p = %d", s, p);

return 0;

}*/

/*int main() //pb2

unsigned int a, b;

printf("Introduceti doua numere naturale: ");

scanf("%u%u", &a, &b);

printf("Suma numerelor este s = %u\n", a + b);


printf("Produsul numerelor este p = %u\n", a * b);

if (a > b) printf("Cel mai mare numar citit este: %u\n", a);

else printf("Cel mai mare numar citit este %u\n", b);

return 0;

}*/

/*int main() //pb3

unsigned int a;

int cnt = 0;

int v[] = { 4, 5, 4, 6, 5, 6, 4, 7, 8, 5, 7, 4 };

printf("Introduceti de la tastatura un numar aflat in intervalul [1, 10]:\n");

scanf("%u", &a);

for (int i = 0; i < sizeof(v) / sizeof(int); i++)

if (a == v[i]) cnt++;

printf("Numarul %u se gaseste in vectorul v de %d ori.", a, cnt);

return 0;

}*/

int cmpfunc(const void* a, const void* b);

/*int main() //pb4

int* v, * numbers = NULL;

int cnt = 0, input;

printf("Introduceti de la tastatura numere diferite de 0:\n");

do {

scanf("%d", &input);

cnt++;
v = (int*)realloc(numbers, cnt * sizeof(int));

if (v != NULL)

numbers = v;

numbers[cnt - 1] = input;

else

free(numbers);

puts("Eroare la alocarea memoriei!");

exit(1);

} while (input != 0);

qsort(numbers, cnt, sizeof(int), cmpfunc);

printf("Minimiul este: %d\nMaximul este: %d", v[1], v[cnt - 1]);

return 0;

}*/

/*int main() //pb5

int n;

printf("Introduceti un numar natural:\n");

scanf("%d", &n);

int cifre[15], cnt = 0, cn = n, produs = 1;

while (cn)

cifre[cnt++] = cn % 10;
produs *= (cn % 10);

cn /= 10;

printf("Cifrele numarului introdus sunt: ");

cnt--;

for (int i = cnt; i >= 0; i--) printf("%d ", cifre[i]);

printf("\n");

printf("Produsul cifrelor numarului introdus este p = %d.\n", produs);

cnt++;

printf("Oglinditul numarului introdus este: ");

for (int i = 0; i < cnt; i++) printf("%d", cifre[i]);

return 0;

}*/

/*int main() //pb6

int v[] = { 4, 5, 4, 6, 5, 6, 4, 7, 8, 5, 7, 4 };

int n = sizeof(v) / sizeof(int);

int aux, ind;

for (int i = 0; i < n; i++)

ind = i;

for (int j = i + 1; j < n; j++)

if (v[j] < v[ind]) ind = j;

aux = v[i];

v[i] = v[ind];

v[ind] = aux;
}

for (int i = 0; i < n; i++) printf("%d ", v[i]);

return 0;

}*/

/*int main() //pb7

float suma_pond = 0, numarator = 0, prod = 1;

int v[] = { 7, 6, 4, 9, 7, 3, 6 };

float w[] = { 1.0 / 7, 0.5 / 7, 0.5 / 7, 2.0 / 7, 0.25 / 7, 1.25 / 7, 1.5 / 7 };

for (int i = 0; i < 7; i++)

prod = v[i] * w[i];

numarator += prod;

suma_pond += w[i];

float rezultat = numarator / suma_pond;

printf("Media ponderata este: %.2f", rezultat);

return 0;

}*/

void interschimbareLiniiSiColoane(int* a, int* b); //pb8

/*int main() //pb8

int med[3], a[3][3];

for (int i = 0; i < 3; i++)


for (int j = 0; j < 3; j++)

scanf("%d", &a[i][j]);

for (int i = 0; i < 3; i++)

int s = 0;

for (int j = 0; j < 3; j++)

s += a[i][j];

med[i] = s / 3;

for (int i = 0; i < 3; i++)

for (int j = i + 1; j < 3; j++)

if (med[i] > med[j])

interschimbareLiniiSiColoane(&(med[i]), &(med[j]));

for (int k = 0; k < 3; k++)

interschimbareLiniiSiColoane(&(a[i][k]), &(a[j][k]));

for (int i = 0; i < 3; i++)

int s = 0;

for (int j = 0; j < 3; j++)

s += a[j][i];

med[i] = s / 3;

for (int i = 0; i < 3; i++)


for (int j = i + 1; j < 3; j++)

if (med[i] < med[j])

interschimbareLiniiSiColoane(&(med[i]), &(med[j]));

for (int k = 0; k < 3; k++)

interschimbareLiniiSiColoane(&(a[k][i]), &(a[k][j]));

for (int i = 0; i < 3; i++, printf("\n"))

for (int j = 0; j < 3; j++)

printf("%d ", a[i][j]);

return 0;

}*/

int my_strlen(const char* s); //pb9

/*int main() //pb9

char s[] = "ardei,rosii,ceapa,castraveti,mere,usturoi";

int len = my_strlen(s);

printf("%d\n", len);

return 0;

}*/

int nr_vocale(const char* s); //pb10

/*int main() //pb10

{
char s[] = "ardei,rosii,ceapa,castraveti,mere,usturoi";

int nr_voc = nr_vocale(s);

printf("%d\n", nr_voc);

return 0;

}*/

int nr_cuv(const char* s); //pb11

/*int main() //pb11

char s[] = "ardei,rosii,ceapa,castraveti,mere,usturoi";

int nr_cuvinte = nr_cuv(s);

printf("%d\n", nr_cuvinte);

return 0;

}*/

char* intercalare(char* sir1, char* sir2, int poz); //pb12

/*int main() //pb12

char* sir1, * sir2;

int poz;

sir1 = (char*)malloc(100 * sizeof(char));

sir2 = (char*)malloc(100 * sizeof(char));

gets(sir1);

gets(sir2);

scanf("%d", &poz);

char* intercal = intercalare(sir1, sir2, poz);

puts(intercal);
return 0;

}*/

void interschimbare(int* a, int* b); //pb13

/*int main() //pb13

int* a, * b;

int x, y;

a = &x;

b = &y;

scanf("%d%d", a, b);

interschimbare(a, b);

printf("a = %d\nb = %d", *a, *b);

return 0;

}*/

char* concat(char s1[], char s2[], char s3[]); //pb14

/*int main() //pb14

char s1[] = "Ana", s2[] = "are", s3[] = "mere";

char* sir = concat(s1, s2, s3);

puts(sir);

return 0;

}*/

void alfabetic(char* sir1, char* sir2); //pb15


/*int main() //pb15

char* sir1, * sir2;

sir1 = (char*)malloc(100 * sizeof(char));

sir2 = (char*)malloc(100 * sizeof(char));

gets(sir1);

gets(sir2);

alfabetic(sir1, sir2);

puts(sir1);

puts(sir2);

return 0;

}*/

int nrAparitiiSubsir(char* sir, char* subsir); //pb16

/*int main() //pb16

char* sir = (char*)malloc(100 * sizeof(char));

char* subsir = (char*)malloc(100 * sizeof(char));

gets(sir);

gets(subsir);

int cnt = nrAparitiiSubsir(sir, subsir);

printf("%d\n", cnt + 1);

return 0;

}*/

void sirFaraVocaleSauSirOglindit(char* sir, char caracter); //pb17


/*int main() //pb17

char* sir, caracter;

sir = (char*)malloc(100 * sizeof(char));

gets(sir);

scanf("%c", &caracter);

sirFaraVocaleSauSirOglindit(sir, caracter);

return 0;

}*/

char** alocareListaCuvinte(int nr); //pb18

char* concatenareNumarSiruriOarecare(int n, char** siruri);

/*int main()

char c;

int n;

scanf("%d", &n);

scanf("%c", &c);

char** lista = alocareListaCuvinte(n);

char* final = concatenareNumarSiruriOarecare(n, lista);

puts(final);

return 0;

}*/

void sortareAlfabetica(char** sir); //pb19

/*int main()
{

char** sir;

int n = 10;

sir = (char*)malloc(100 * sizeof(char));

for (int i = 0; i < 100; i++) sir[i] = (char*)malloc(100 * sizeof(char));

for (int i = 0; i < n; i++) scanf("%s", sir[i]);

sortareAlfabetica(sir);

for (int i = 0; i < n; i++) puts(sir[i]);

return 0;

}*/

int** alocareMatrice2D(int n); //pb20

int** matricePermutari(int* vector);

void afisareInmultireMatriceNepatratica(int** matrix, int nr_lin, int nr_col);

/*int main()

int* vector = (int*)malloc(4 * sizeof(int));

int** matrix = matricePermutari(vector);

afisareInmultireMatriceNepatratica(matrix, 4, 4);

return 0;

}*/

void citireMatriceNepatratica(int nr_lin, int nr_col); //pb21

int** alocareMatriceNepatratica2D(int nr_linii, int nr_coloane);

int** inmultireMatriciNepatratice(int** a, int** b, int nr_lina, int nr_cola, int nr_colb);

void afisareInmultireMatriceNepatratica(int** matrix, int nr_lin, int nr_col);

/*int main()
{

int nr_lina, nr_cola, nr_colb;

printf("nr_lina = ");

scanf("%d", &nr_lina);

printf("\nnr_cola = ");

scanf("%d", &nr_cola);

printf("\nnr_colb = ");

scanf("%d", &nr_colb);

int** a = alocareMatriceNepatratica2D(nr_lina, nr_cola);

int** b = alocareMatriceNepatratica2D(nr_cola, nr_colb);

citireMatriceNepatratica(a, nr_lina, nr_cola);

citireMatriceNepatratica(b, nr_cola, nr_colb);

int** matrix = inmultireMatriciNepatratice(a, b, nr_lina, nr_cola, nr_colb);

afisareInmultireMatriceNepatratica(matrix, nr_lina, nr_colb);

return 0;

}*/

int*** alocareMatrice3D(int n); //pb22

int* matrice3D(int** mat, int maxim, float* medie_aritmetica);

void afisareVector(int* vector);

/*int main()
{

int*** matrix = alocareMatrice3D(3);

int maxim = MIN;

float medie_aritmetica;

int* vector = matrice3D(matrix, &maxim, &medie_aritmetica);

printf("%d\t%.2f\n", maxim, medie_aritmetica);

afisareVector(vector);

return 0;

}*/

typedef struct procentaj_imbolnavire {

char nume[20];

char prenume[20];

int varsta;

float factor_risc;

}imb, bol;

void populareFisaMedicala(imb* om, bol* pers, int nr_om); //pb23

void interschimbareStructuri(imb* om, bol* pers, int nr_om);

void afisareStructuriInterschimbate(imb* om, bol* pers, int nr_om);

/*int main()

int nr_om;

scanf("%d", &nr_om);

imb* om = (imb*)malloc(100 * sizeof(imb));

bol* pers = (bol*)malloc(100 * sizeof(bol));


populareFisaMedicala(om, pers, nr_om);

interschimbareStructuri(om, pers, nr_om);

afisareStructuriInterschimbate(om, pers, nr_om);

return 0;

}*/

void populareStructura(imb* om, int nr_om); //pb24

void afisareDubluri(imb* om, int nr_om, char* nume_propriu);

/*int main()

int nr_om;

scanf("%d", &nr_om);

imb* om = (imb*)malloc(nr_om * sizeof(imb));

populareStructura(om, nr_om);

char c;

scanf("%c", &c);

char* nume_propriu = (char*)malloc(20 * sizeof(char));

gets(nume_propriu);

afisareDubluri(om, nr_om, nume_propriu);

return 0;

}*/

void afisareText(char* filename); //pb25

int numarPropozitii(char* filename);


/*int main()

afisareText("date.in");

printf("\n%d\n", numarPropozitii("date.in"));

return 0;

}*/

char* lungimeMaximaCuvant(char* filename, int* nr_cuv); //pb26

/*int main()

int nr_cuv = 0;

char* cuvant = lungimeMaximaCuvant("text.txt", &nr_cuv);

printf("%s\n%d\n", cuvant, nr_cuv);

return 0;

}*/

void fisierInversFisier(char* filename_in, char* filename_out); //pb27

/*int main()

fisierInversFisier("date.in", "date.out");

return 0;

}*/

int numarPrim(int n); //pb28

int nr_vocale(const char* s);

char* cuvantVocaleMaximSauMinim(char* filename, int numar);


/*int main()

int nr;

scanf("%d", &nr);

char* cuvant = cuvantVocaleMaximSauMinim("date.in", nr);

printf("%s\n", cuvant);

return 0;

}*/

typedef struct student{

char* nume;

char prenume[20];

float medie;

}student;

void populareStudenti(student* s, int* nr_stud, char* filename); //pb29

void afisareStudenti(student* s, int nr_stud, float med);

/*int main()

int nr_stud = 0;

student s[100];

populareStudenti(s, &nr_stud, "date.in");

afisareStudenti(s, nr_stud, 7.50);

return 0;

}*/

void numaiNumere(char* filename); //pb30


/*int main()

numaiNumere("date.in");

return 0;

}*/

int** alocareMatrice2D(int n); //pb31

int numarPerfect(int n);

void afisareMatriceBinara(int** matrix, int nr_linii, char* filename_bin);

void fisierMatriceBinara(int** matrix, int nr_linii, char* filename_bin, char* filename_out);

/*int main()

int nr_linii = dimensiuneMatriceBinara("matrice.bin");

int** matrix = alocareMatrice2D(nr_linii);

fisierMatriceBinara(matrix, nr_linii, "matrice.bin", "matrix.out");

afisareMatriceBinara(matrix, nr_linii, "matrice.bin");

return 0;

}*/

int cmpfunc(const void* a, const void* b)

return ((int)a - (int)b);

void interschimbareLiniiSiColoane(int* a, int* b)

{
int aux = *a;

*a = *b;

*b = aux;

int my_strlen(const char* s)

int cnt = 0;

while (s[cnt] != '\0') cnt++;

return cnt;

int nr_vocale(const char* s)

int cnt = 0;

for (int i = 0 ; i < strlen(s); i++)

if (strchr("aeiouAEIOU", s[i]) != NULL)

cnt++;

return cnt;

int nr_cuv(const char* s)

int nr = 0;

char* p = strtok(s, ",");

while (p != NULL)

nr++;

p = strtok(NULL, ",");
}

return nr;

char* intercalare(char* sir1, char* sir2, int poz)

int n = strlen(sir1);

int m = strlen(sir2);

char* inter = (char*)malloc((n + m + 1) * sizeof(char));

for (int i = 0; i < poz; i++)

inter[i] = sir1[i];

for (int i = poz + m; i < n + m + 1; i++)

inter[i] = sir1[i - m];

for (int i = poz; i < poz + m; i++)

inter[i] = sir2[i - poz];

return inter;

void interschimbare(int* a, int* b)

int aux;

aux = *a;

*a = *b;

*b = aux;

char* concat(char s1[], char s2[], char s3[])

char* concate = (char*)malloc(11 * sizeof(char));


for (int i = 0; i < 3; i++)

concate[i] = s1[i];

for (int i = 3; i < 6; i++)

concate[i] = s2[i - 3];

for (int i = 6; i < 11; i++)

concate[i] = s3[i - 6];

return concate;

void alfabetic(char* sir1, char* sir2)

char* temp = (char*)malloc(100 * sizeof(char));

if (strcmp(sir1, sir2) > 0)

strcpy(temp, sir1);

strcpy(sir1, sir2);

strcpy(sir2, temp);

int nrAparitiiSubsir(char* sir, char* subsir)

int nr_aparitii = 0;

int n = strlen(sir);

int m = strlen(subsir);

for (int i = 0; i < n; i++)

int j = 0;

int cnt = 0;
while (sir[i++] == subsir[j++])

cnt++;

if (cnt == m)

nr_aparitii++;

cnt = 0;

return nr_aparitii;

void sirFaraVocaleSauSirOglindit(char* sir, char caracter)

char* s = (char*)malloc(100 * sizeof(char));

if (caracter >= 65 && caracter <= 90)

int i = 0, cnt = 0;

while (i < strlen(sir))

if (strchr("aeiouAEIOU", sir[i]) == NULL)

printf("%c", sir[i]);

i++;

else

for (int i = strlen(sir) - 1; i >= 0; i--)

printf("%c", sir[i]);

}
char** alocareListaCuvinte(int nr)

char** lista = (char*)malloc(nr * sizeof(char));

for (int i = 0; i < nr; i++)

lista[i] = (char*)malloc(100 * sizeof(char));

return lista;

void citireListaCuvinte(char** siruri, int n)

for (int i = 0; i < n; i++)

gets(siruri[i]);

char* concatenareNumarSiruriOarecare(int n, char** siruri)

char* vector = (char*)malloc(100 * sizeof(char));

citireListaCuvinte(siruri, n);

char* final = NULL, * aux = NULL;

final = (char*)malloc((strlen(siruri[0]) + 1) * sizeof(char));

strcpy(final, siruri[0]);

int m = strlen(siruri[0]);

for (int i = 1; i < n; i++)

m += strlen(siruri[i]);

aux = (char*)realloc(final, (m + 1) * sizeof(char));


if (aux == NULL)

printf("Eroare la alocarea memoriei!");

exit(-1);

else {

strcat(aux, siruri[i]);

final = aux;

return final;

void sortareAlfabetica(char** sir)

int n = 10;

char* s = (char*)malloc(100 * sizeof(char));

for (int i = 0; i < n - 1; i++)

for (int j = i + 1; j < n; j++)

if (strcmp(sir[i], sir[j]) > 0)

strcpy(s, sir[i]);

strcpy(sir[i], sir[j]);

strcpy(sir[j], s);

}
int*** alocareMatrice3D(int n)

int*** mat;

mat = (int**)malloc(n * sizeof(int*));

for (int i = 0; i < n; i++) mat[i] = (int*)malloc(n * sizeof(int));

for (int i = 0; i < n; i++)

for (int j = 0; j < n; j++)

mat[i][j] = (int*)malloc(n * sizeof(int));

return mat;

int* matrice3D(int** mat, int maxim, float* medie_aritmetica)

int suma = 0;

//citirea matricei 3D si prelucrarea ei

for (int i = 0; i < 3; i++)

for (int j = 0; j < 3; j++)

for (int k = 0; k < 3; k++)

scanf("%d", &mat[i][j][k]);

if (*maxim < mat[i][j][k]) *maxim = mat[i][j][k];

suma += mat[i][j][k];

*medie_aritmetica = suma / 27;

int* vector = (int*)malloc(3 * sizeof(int));

for (int i = 0; i < 3; i++) vector[i] = mat[i][i][i];


return vector;

void afisareVector(int* vector)

for (int i = 0; i < 3; i++) printf("%d ", vector[i]);

printf("\n");

void populareFisaMedicala(imb* om, bol* pers, int nr_om)

printf("Persoane prima structura:\n");

for (int i = 0; i < nr_om; i++)

scanf("%s%s%d%f", om[i].nume, om[i].prenume, &(om[i].varsta), &(om[i].factor_risc));

printf("Persoane a doua structura:\n");

for (int i = 0; i < nr_om; i++)

scanf("%s%s%d%f", pers[i].nume, pers[i].prenume, &(pers[i].varsta),


&(pers[i].factor_risc));

void interschimbareStructuri(imb* om, bol* pers, int nr_om)

char aux[20];

//interschimbare nume

for (int i = 0; i < nr_om; i++)

strcpy(aux, om[i].nume);
strcpy(om[i].nume, pers[i].nume);

strcpy(pers[i].nume, aux);

//interschimbare prenume

for (int i = 0; i < nr_om; i++)

strcpy(aux, om[i].prenume);

strcpy(om[i].prenume, pers[i].prenume);

strcpy(pers[i].prenume, aux);

int val;

//interschimbare varsta

for (int i = 0; i < nr_om; i++)

val = om[i].varsta;

om[i].varsta = pers[i].varsta;

pers[i].varsta = val;

float risc;

//interschimbare factor de risc

for (int i = 0; i < nr_om; i++)

risc = om[i].factor_risc;

om[i].factor_risc = pers[i].factor_risc;
pers[i].factor_risc = risc;

void afisareStructuriInterschimbate(imb* om, bol* pers, int nr_om)

for (int i = 0; i < nr_om; i++)

printf("%s %s %d %.2f\n", om[i].nume, om[i].prenume, om[i].varsta, om[i].factor_risc);

for (int i = 0; i < nr_om; i++)

printf("%s %s %d %.2f\n", pers[i].nume, pers[i].prenume, pers[i].varsta,


pers[i].factor_risc);

void populareStructura(imb* om, int nr_om)

for (int i = 0; i < nr_om; i++)

scanf("%s%s%d%f", om[i].nume, om[i].prenume, &(om[i].varsta), &(om[i].factor_risc));

void afisareDubluri(imb* om, int nr_om, char* nume_propriu)

for (int i = 0; i < nr_om; i++)

if (strcmp(om[i].nume, nume_propriu) == 0 || strcmp(om[i].prenume, nume_propriu)


== 0)

printf("%s %s\n", om[i].nume, om[i].prenume);

void afisareText(char* filename)

{
FILE* in = fopen(filename, "rt");

if (in == NULL)

printf("Nu s-a putut deschide fisierul!");

exit(-1);

while (!feof(in))

char c = fgetc(in);

printf("%c", c);

int numarPropozitii(char* filename)

FILE* in = fopen(filename, "rt");

if (in == NULL)

printf("Nu s-a putut deschide fisierul!");

exit(-1);

int cnt = 0, i = 1;

char* string = (char*)malloc(3 * sizeof(char));

fseek(in, 0, SEEK_SET);

fscanf(in, "%c", &string[0]);


while (fscanf(in, "%c", &string[i]) != EOF)

i++;

string = (char*)realloc(string, (i + 2) * sizeof(char));

char* p = strtok(string, ".");

while (p != NULL)

cnt++;

p = strtok(NULL, ".");

cnt--;

return cnt;

int** alocareMatrice2D(int n)

int** mat = (int*)malloc(n * sizeof(int));

for (int i = 0; i < n; i++) mat[i] = (int*)malloc(n * sizeof(int));

return mat;

int** matricePermutari(int* vector)

int** mat = alocareMatrice2D(4);


for (int i = 0; i < 4; i++) scanf("%d", &vector[i]);

int m = 0;

for (int k = 0; k < 4; k++)

int aux = vector[0];

for (int i = 1; i < 4; i++)

vector[i - 1] = vector[i];

vector[3] = aux;

for (int i = 0; i < 4; i++)

mat[m][i] = vector[i];

m++;

return mat;

void citireMatriceNepatratica(int** mat, int nr_lin, int nr_col)

for (int i = 0; i < nr_lin; i++)

for (int j = 0; j < nr_col; j++)

scanf("%d", &mat[i][j]);

int** alocareMatriceNepatratica2D(int nr_linii, int nr_coloane)

{
int** mat = (int*)malloc(nr_linii * sizeof(int));

for (int i = 0; i < nr_linii; i++)

mat[i] = (int*)malloc(nr_coloane * sizeof(int));

return mat;

int** inmultireMatriciNepatratice(int** a, int** b, int nr_lina, int nr_cola, int nr_colb)

int** c = alocareMatriceNepatratica2D(nr_lina, nr_colb);

for (int i = 0; i < nr_lina; i++)

for (int j = 0; j < nr_colb; j++)

c[i][j] = 0;

for (int k = 0; k < nr_cola; k++)

c[i][j] += a[i][k] * b[k][j];

return c;

void afisareInmultireMatriceNepatratica(int** matrix, int nr_lin, int nr_col)

for (int i = 0; i < nr_lin; i++, printf("\n"))

for (int j = 0; j < nr_col; j++)

printf("%d ", matrix[i][j]);

char* lungimeMaximaCuvant(char* filename, int* nr_cuv)

FILE* fin;
fin = fopen(filename, "rt");

if (fin == NULL)

printf("Nu s-a putut deschide fisierul!");

exit(-1);

int maxim = MIN;

char s[25], c[25];

while (!feof(fin))

fscanf(fin, "%s", s);

(*nr_cuv)++;

int n = strlen(s);

if (maxim < n)

maxim = n;

strcpy(c, s);

char* cuvant = (char*)malloc(25 * sizeof(char));

//cuvant = c;

strcpy(cuvant, c);

return cuvant;

}
void fisierInversFisier(char* filename_in, char* filename_out)

FILE* in, * out ;

in = fopen(filename_in, "rt");

if (in == NULL)

printf("Nu s-a putut deschide fisierul!");

exit(-1);

out = fopen(filename_out, "wt");

if (out == NULL)

printf("Nu s-a putut deschide fisierul!");

exit(-1);

int dim_fisier = 0;

fseek(in, 0, SEEK_END);

dim_fisier = ftell(in);

fseek(in, 0, SEEK_SET);

for (int i = 1; i <= dim_fisier; i++)

fseek(in, -i, SEEK_END);

char c = fgetc(in);

fprintf(out, "%c", c);

}
fclose(in);

fclose(out);

int numarPrim(int n)

int ok = 0;

for (int d = 2; d * d <= n && ok == 0; d++)

if (n % d == 0) ok = 1;

if (ok == 0) return 1;

else return 0;

char* cuvantVocaleMaximSauMinim(char* filename, int numar)

FILE* in = fopen(filename, "rt");

if (in == NULL)

printf("Nu s-a putut deschide fisierul!");

exit(-1);

int min = 101, max = -1;

char* cuv = (char*)malloc(100 * sizeof(char));

char* rez_min = (char*)malloc(100 * sizeof(char));

char* rez_max = (char*)malloc(100 * sizeof(char));

while (fscanf(in, "%s", cuv) != EOF)


{

int n = strlen(cuv);

int nr_voc = nr_vocale(cuv);

if (nr_voc < min)

min = nr_voc;

strcpy(rez_min, cuv);

else if (nr_voc > max)

max = nr_voc;

strcpy(rez_max, cuv);

if (numarPrim(numar) == 1)

return rez_max;

else return rez_min;

void populareStudenti(student* s, int* nr_stud, char* filename)

FILE* in = fopen(filename, "rt");

if (in == NULL)

printf("Nu s-a putut deschide fisierul!");

exit(-1);

while (!feof(in))
{

s[nr_stud].nume = (char)malloc(20 * sizeof(char));

fscanf(in, "%s%s%f", s[*nr_stud].nume, s[*nr_stud].prenume, &(s[*nr_stud].medie));

(*nr_stud)++;

fclose(in);

void afisareStudenti(student* s, int nr_stud, float med)

for (int i = 0; i < nr_stud; i++)

if (s[i].medie > med)

printf("%s %s\n", s[i].nume, s[i].prenume);

void numaiNumere(char* filename)

char* sir = (char*)malloc(100 * sizeof(char));

char* vector = (char*)malloc(100 * sizeof(char));

FILE* in = fopen(filename, "rt");

if (in == NULL)

printf("Nu s-a putut deschide fisierul!");

exit(-1);

int k = 0;

while (!feof(in))
{

char c = getc(in);

if (isdigit(c)) printf("%c ", c);

int dimensiuneMatriceBinara(char* filename_bin)

FILE* cin = fopen(filename_bin, "rb");

if (cin == NULL)

printf("Nu s-a putut deschide fisierul!\n");

exit(-1);

fseek(cin, 0, SEEK_END);

int n = ftell(cin) / sizeof(int);

fseek(cin, 0, SEEK_SET);

fclose(cin);

return sqrt(n);

int numarPerfect(int n)

int rez = sqrt(n);

double rezultat = sqrt(n);

return (rez == rezultat);


}

void fisierMatriceBinara(int** matrix, int nr_linii, char* filename_bin, char* filename_out)

FILE* in = fopen(filename_bin, "rb");

FILE* out = fopen(filename_out, "wt");

if (in == NULL)

printf("Nu s-a putut deschide fisierul!");

exit(-1);

if (out == NULL)

printf("Nu s-a putut deschide fisierul!");

exit(-1);

for (int i = 0; i < nr_linii; i++)

for (int j = 0; j < nr_linii; j++)

fread(&matrix[i][j], sizeof(int), 1, in);

if (numarPerfect(matrix[i][j]) == 1)

fprintf(out, "%d ", matrix[i][j]);

fclose(in);
fclose(out);

void afisareMatriceBinara(int** matrix, int nr_linii, char* filename_bin)

FILE* cin = fopen(filename_bin, "rb");

if (cin == NULL)

printf("Nu s-a putut deschide fisierul!\n");

exit(-1);

for (int i = 0; i < nr_linii; i++, printf("\n"))

for (int j = 0; j < nr_linii; j++)

printf("%d ", matrix[i][j]);

S-ar putea să vă placă și