Sunteți pe pagina 1din 9

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 11

A îndeplinit:

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: ");
scanf("%s", text);
fprintf(f, "%s", text);
fclose(f);
separare(text);
return 0;
}

int separare(char a[]){


int i,j;
int n=0;
char whatev[20][10];
for(i=0;i<strlen(a);i++){
if(a[i] == '.'){
n++;
whatev[n][i] = '.';
}else{
whatev[n][i] = a[i];
}
}
for(i=0;i<n;i++){
for(j=0;j<20;j++){
printf("%c", whatev[i][j]);
}printf("\n");
}
}
Output:

Introdu sirul: este prima propozitie.Este a doua.Este a treia.


Este prima propozitie.
Este a doua.
Esta a treia.

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].lunaCont
ract,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].lunaCont
ract,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;
}Output
Experiment.txt

quicksort.txt

SelectionSort.txt

Concluzie: In aceasta lucrare de laborator am lucruat cu fisiere, structuri si diferiti


algoritmi de sortari in C

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