Raport: Ministerul Educaţiei Al Republicii Moldova Universitatea Tehnică A Moldovei

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 10

Ministerul Educaţiei

al Republicii Moldova

Universitatea Tehnică a Moldovei

RAPORT
despre lucrarea de laborator Nr. 4
la Structuri de Date si Algoritmi

Tema: Lucru cu Fisierele in C


Varianta 3

A îndeplinit: Belii Daniela

Chişinău – 2020
Mersul lucrării:

Codul:
#include <stdio.h>
#include <string.h>

int separare(char a[]);

int main(){
FILE *f;
char text[100];
f = fopen("./lucru.txt", "w");
printf("Introdu sirul: ");
gets(text);
fprintf(f, "%s", text);
fclose(f);
inlocuire();
return 0;
}

int inlocuire(){
FILE *f;
int i, len,j;
int nr = 0;
char text[100];
f = fopen("./lucru.txt", "r");
fgets(text, 100, f);
len = strlen(text);
for(i=0;i<len;i++){
if(text[i] == ' '){
if(text[i+1] == ' '){
for(j=i;j<len;j++){
text[j]=text[j+1];
}len--;nr++;
}
}
}
fclose(f);
f = fopen("./lucru.txt", "w");
fprintf(f,"%s", text);
printf("Au fos inlocuite %d spatii duble", nr);
fclose(f);
return 0;
}

Output:
Lucru.txt

Ex 2
Codul:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100
int n,c;

void selectionSort(char arr[n][MAX], int n);

struct depozit {
char denumire[100];
int pret;
int cantitate;
int ziContract;
int lunaContract;
int anContract;
};

int main( ){
int i,j;
FILE *f;
f = fopen("./experiment.txt", "w");
printf("Introdu cate marfuri sunt: "); scanf("%d", &n);
struct depozit marfa[n];
struct depozit marfa2[n];
for(i=0;i<n;i++){
printf("\n\nIntrodu datele la marfuri nr %d:\n\n", i+1);
printf("Denumirea Marfii - "); scanf("%s", &marfa[i].denumire);
printf("Pretul - "); scanf("%d", &marfa[i].pret);
printf("Cantitate(in unitati) - "); scanf("%d", &marfa[i].cantitate);
printf("Introdu ziua incheierii contractului - "); scanf("%d", &marfa[i].ziContract);
printf("Introdu luna incheierii contractului - "); scanf("%d", &marfa[i].lunaContract);
printf("Introdu anul incheierii contractului - "); scanf("%d", &marfa[i].anContract);

}
fprintf(f, "\nDenumire Pret Cantitate Data\n");
for (i=0;i<n;i++){
fprintf(f, "%s %d %d %d/%d/%d\n", marfa[i].denumire,
marfa[i].pret,marfa[i].cantitate, marfa[i].ziContract, marfa[i].lunaContract, marfa[i].anContract);
}
char arr[n][MAX];
for(i=0;i<n;i++){
strcpy(arr[i], marfa[i].denumire);
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
if(strcmp(arr[i], marfa[j].denumire) == 0){
strcpy(marfa2[i].denumire, marfa[j].denumire);
marfa2[i].pret = marfa[j].pret;
marfa2[i].cantitate = marfa[j].cantitate;
marfa2[i].ziContract = marfa[j].ziContract;
marfa2[i].lunaContract = marfa[j].lunaContract;
marfa2[i].anContract = marfa[j].anContract;

}
}
}
int iteration = 0;
while (strcmp(arr, EOF) != 0) {
strcpy(arr[iteration], arr);
iteration++;
scanf("%s", arr);
}
FILE *fQuick;
FILE *fselect;
fQuick = fopen("./quicksort.txt", "w");
fselect = fopen("./selectionsort.txt", "w");
selectionSort(arr, n);
fprintf(fselect, "\nDenumire Pret Cantitate Data\n");
for (i=0;i<n;i++){
fprintf(fselect, "%s %d %d
%d/%d/%d\n",marfa2[i].denumire,marfa2[i].pret,marfa2[i].cantitate,marfa2[i].ziContract,marfa2
[i].lunaContract,marfa2[i].anContract);
}
int nr[n];
for(i=0;i<n;i++){
nr[i] = marfa[i].pret;
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
if(nr[i] == marfa[j].pret){
strcpy(marfa2[i].denumire, marfa[j].denumire);
marfa2[i].pret = marfa[j].pret;
marfa2[i].cantitate = marfa[j].cantitate;
marfa2[i].ziContract = marfa[j].ziContract;
marfa2[i].lunaContract = marfa[j].lunaContract;
marfa2[i].anContract = marfa[j].anContract;
}
}
}

fprintf(fQuick, "\nDenumire Pret Cantitate Data\n");


for (i=0;i<n;i++){
fprintf(fQuick, "%s %d %d
%d/%d/%d\n",marfa2[i].denumire,marfa2[i].pret,marfa2[i].cantitate,marfa2[i].ziContract,marfa2
[i].lunaContract,marfa2[i].anContract);
}
fclose(fQuick);
fclose(fselect);
fclose(f);
return 0;
}

void selectionSort(char arr[][MAX], int n)


{
int i, j, min_idx;

char minStr[MAX];
for (i = 0; i < n-1; i++)
{

int min_idx = i;
strcpy(minStr, arr[i]);
for (j = i + 1; j < n; j++)
{

if (strcmp(minStr, arr[j]) > 0)


{

strcpy(minStr, arr[j]);
min_idx = j;
}
}

if (min_idx != i)
{
char temp[MAX];
strcpy(temp, arr[i]);
strcpy(arr[i], arr[min_idx]);
strcpy(arr[min_idx], temp);
}
}
}

int partition(int Array[], int left, int right) {


int pivot = Array[right];
int leftPointer = left - 1;
int rightPointer = right;
for (;;) {
while (Array[++leftPointer] > pivot) {
}
while (rightPointer > 0 && Array[--rightPointer] < pivot) {
}
if (leftPointer >= rightPointer) {
break;
} else {
swap(Array, leftPointer, rightPointer);
}
}
swap(Array, leftPointer, right);
return leftPointer;
}

void Quicksort(int Array[], int left, int right) {


if (left < right) {
int PartitionPoint = partition(Array, left, right);
Quicksort(Array, left, PartitionPoint - 1);
Quicksort(Array, PartitionPoint + 1, right);
}
}

void swap(int *xp, int *yp)


{
int temp = *xp;
*xp = *yp;
*yp = temp;
}

Experiment.txt
quicksort.txt(varsta crescator)

SelectionSort.txt(Descrescator Nume)
Concluzie:
In aceasta lucrare de laborator am lucruat cu fisiere, structuri si diferiti
algoritmi de sortari in C

You might also like