Sunteți pe pagina 1din 19

MINISTERUL EDUCAŢIEI, CULTURII ȘI CERCETĂRII AL REPUBLICII MOLDOVA

UNIVERSITATEA TEHNICĂ A MOLDOVEI

Facultatea Calculatoare, Informatică şi Microelectronică

Departamentul

Informatică și Ingineria Sistemelor

REFERAT
la lucrarea de laborator nr.5

Tema: „Fisiere. Structuri de date.”

Disciplina: „Structuri de date și algoritmi”

A elaborat st. gr.IBM-181, Burdeniuc Alexandru

A verificat conf. univ., dr. Stadler Lucia

Chișinău 2019
#include <stdio.h>

#include <conio.h>

#include "functii.h"

int main()

int optiune = 0;

printf("Introduceti numele fisierului: ");

fscanf(stdin, "%14s", nume_fisier);

file = fopen(nume_fisier, "w+");

while(optiune != 7)

printf("Apasati o tasta pentru a intra in meniu.\n");

getch();

meniu();

scanf("%d", &optiune);

if(optiune == 1) creare();

else if(optiune == 2) corectare();

else if(optiune == 3) adaugare();

else if(optiune == 4) afisare();

else if(optiune == 5) sortare();

else if(optiune == 6) scrie_in_fisier(file);

else if(optiune == 7) break;

else

printf("Aceasta optiune nu exista!\n");

continue;

}}

fclose(file);

printf("Sfarsit!"); }
#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int i, j; //pentru cicluri

int nr_ut = 0; //numarul de utilizatori inregistrati in lista

FILE* file;

char nume_fisier[15];

typedef struct adresa{

char localitate[10];

char strada[24];

int bloc;

int apt;

} adresa;

typedef struct utilizator{

char nume[11];

char prenume[11];

int telefon[10];

adresa adresa;

float taxa;

} utilizator;

utilizator lista[10];

void meniu(void)

printf("Alegeti o optiune: \n");


printf("\t1.Creare.\n");

printf("\t2.Corectare.\n");

printf("\t3.Adaugare.\n");

printf("\t4.Afisare.\n");

printf("\t5.Sortare.\n");

printf("\t6.Scrie in fisier.\n");

printf("\t7.Iesire.\n");

void scrie_in_fisier(FILE* fisier)

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

fprintf(fisier, "%s ", lista[k].nume);

fprintf(fisier, "%s ", lista[k].prenume);

for(i = 0; i < 10; i++)

fprintf(fisier, "%d", lista[k].telefon[i]);

fputc(' ', fisier);

fprintf(fisier, "%s ", lista[k].adresa.localitate);

fprintf(fisier, "%s ", lista[k].adresa.strada);

fprintf(fisier, "blocul ");

fprintf(fisier, "%d ", lista[k].adresa.bloc);

fprintf(fisier, "apartamentul %d ", lista[k].adresa.apt);

fprintf(fisier, "taxa ");

fprintf(fisier, "%.2f ", lista[k].taxa);

fputc('\n', fisier);

}
void creare(void)

int x;

printf("Cati utilizatori doriti sa introduceti?(max 10)\n");

fflush(stdin);

fscanf(stdin, "%d", &x);

nr_ut = x;

//printf("\n\n %d \n\n", x);

//printf("nr = %d\n", x);

//printf("nr = %d\n", nr);

for(j = 0; j < x; j++)

//printf("\n(%d %d)\n", j, x);

//printf("ok");

fflush(stdin);

printf("Intoduceti numele: ");

scanf("%10s", lista[j].nume);

fflush(stdin);

printf("Intoduceti prenumele: ");

scanf("%10s", lista[j].prenume);

fflush(stdin);

printf("Introduceti numarul de telefon: ");

for(i = 0; i < 10; i++)

fscanf(stdin, "%1d", &lista[j].telefon[i]);

fflush(stdin);

printf("Introduceti localitatea: ");


scanf("%9s", lista[j].adresa.localitate);

fflush(stdin);

printf("Introduceti strada: ");

fgets(lista[j].adresa.strada, 24, stdin);

for(i = 0; i < strlen(lista[j].adresa.strada); i++)

if(lista[j].adresa.strada[i] == '\n')

lista[j].adresa.strada[i] = '\0';

break;

fflush(stdin);

printf("Introduceti blocul: ");

scanf("%d", &lista[j].adresa.bloc);

fflush(stdin);

printf("Introduceti apartamentul: ");

scanf("%d", &lista[j].adresa.apt);

fflush(stdin);

printf("Introduceti taxa abonamentului: ");

scanf("%f", &lista[j].taxa);

//printf("\n(%d %d)\n", j, x);

void afisare(void)

for(i = 0; i < nr_ut; i++)

printf("| %s | ", lista[i].nume);

printf("%s |", lista[i].prenume);


for(j = 0; j < 10; j++)

printf("%d", lista[i].telefon[j]);

printf(" ");

printf("| %s |", lista[i].adresa.localitate);

printf("%s |", lista[i].adresa.strada);

printf("blocul %d | ", lista[i].adresa.bloc);

printf("apt. %d | ", lista[i].adresa.apt);

printf("taxa %.2f|", lista[i].taxa);

printf("\n");

void corectare(void)

printf("Intoduceti numarul utilizatorului: ");

int nr;

scanf("%d", &nr);

INCEPUT:

printf("Ce doriti sa corectati?\n");

printf("\t1.Nume.\n");//char

printf("\t2.Prenume.\n");//char

printf("\t3.Telefonul.\n");

printf("\t4.Localitatea.\n");//char

printf("\t5.Strada.\n");//char

printf("\t6.Blocul;.\n");

printf("\t7.Apartamentul.\n");

printf("\t8.Taxa.\n");

int optiune = 0;

scanf("%d", &optiune);
char cnou[25];

int inou;

printf("Introduceti ");

if(optiune == 1) printf("numele: ");//

else if(optiune == 2) printf("prenumele: ");//

else if(optiune == 3) printf("telefonul: ");

else if(optiune == 4) printf("localitatea: ");//

else if(optiune == 5) printf("strada: ");//

else if(optiune == 6) printf("blocul: ");

else if(optiune == 7) printf("apartamentul: ");

else if(optiune == 8) printf("taxa: ");

fflush(stdin);

//se citeste un string de la tastatura

if(optiune == 1 || optiune == 2 || optiune == 4 || optiune == 5)

fgets(cnou, 24, stdin);

//acest for elimina '\n' de la sfarsitul stringului citit

for(i = 0; i < strlen(cnou); i++)

if(cnou[i] == '\n')

cnou[i] = '\0';

break;

//daca nu e necesar un string se citeste un int

else if (optiune == 6 || optiune == 7 || optiune == 8)

fscanf(stdin, "%d", &inou);

if(optiune == 3) //pentru corectarea telefonului

{
int a;

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

fscanf(stdin, "%1d", &a);

lista[nr-1].telefon[k] = a;

if(optiune == 1) strcpy(lista[nr-1].nume, cnou);

else if(optiune == 2) strcpy(lista[nr-1].prenume, cnou);

else if(optiune == 4) strcpy(lista[nr-1].adresa.localitate, cnou);

else if(optiune == 5) strcpy(lista[nr-1].adresa.strada, cnou);

else if(optiune == 6) lista[nr-1].adresa.bloc = inou;

else if(optiune == 7) lista[nr-1].adresa.apt = inou;

else if(optiune == 8) lista[nr-1].taxa = inou;

printf("Mai corectati ceva?(d/n)");

fflush(stdin);

char ch;

scanf("%c", &ch);

if(ch == 'd') goto INCEPUT;

void adaugare(void)

fflush(stdin);

char str[25];

printf("Introduceti numele utilizatorului: ");

scanf("%s", str);

strcpy(lista[nr_ut].nume, str);

printf("Introduceti prenumele utilizatorului: ");


scanf("%s", str);

strcpy(lista[nr_ut].prenume, str);

int a;

printf("Introduceti telefonul utilizatorului: ");

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

fscanf(stdin, "%1d", &a);

lista[nr_ut].telefon[k] = a;

printf("Introduceti localitatea utilizatoruui: ");

fflush(stdin);

fgets(str, 24, stdin);

for(i = 0; i < strlen(str); i++)

if(str[i] == '\n')

str[i] = '\0';

break;

strcpy(lista[nr_ut].adresa.localitate, str);

fflush(stdin);

printf("Introduceti strada utilizatorului: ");

fflush(stdin);

fgets(str, 24, stdin);

for(i = 0; i < strlen(str); i++)

if(str[i] == '\n')

str[i] = '\0';

break;
}

strcpy(lista[nr_ut].adresa.strada, str);

printf("Introduceti blocul utilizatorului: ");

fflush(stdin);

scanf("%d", &a);

lista[nr_ut].adresa.bloc = a;

printf("Introduceti apartamentul utilizatorului: ");

fflush(stdin);

scanf("%d", &a);

lista[nr_ut].adresa.apt = a;

float f;

printf("Introduceti taxa abonamentului: ");

fflush(stdin);

scanf("%f", &f);

lista[nr_ut].taxa = f;

fflush(stdin);

nr_ut++;

void interschimb(int a, int b)

//metoda celor 3 pahare pentru fiecare camp din structura

utilizator aux;

strcpy(aux.nume, lista[a].nume);

strcpy(aux.prenume, lista[a].prenume);

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

aux.telefon[k] = lista[a].telefon[k];

}
strcpy(aux.adresa.localitate, lista[a].adresa.localitate);

strcpy(aux.adresa.strada, lista[a].adresa.strada);

aux.adresa.bloc = lista[a].adresa.bloc;

aux.adresa.apt = lista[a].adresa.apt;

aux.taxa = lista[a].taxa;

///////////

///////////

strcpy(lista[a].nume, lista[b].nume);

strcpy(lista[a].prenume, lista[b].prenume);

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

lista[a].telefon[k] = lista[b].telefon[k];

strcpy(lista[a].adresa.localitate, lista[b].adresa.localitate);

strcpy(lista[a].adresa.strada, lista[b].adresa.strada);

lista[a].adresa.bloc = lista[b].adresa.bloc;

lista[a].adresa.apt = lista[b].adresa.apt;

lista[a].taxa = lista[b].taxa;

//////////

//////////

strcpy(lista[b].nume, aux.nume);

strcpy(lista[b].prenume, aux.prenume);

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

lista[b].telefon[k] = aux.telefon[k];

strcpy(lista[b].adresa.localitate, aux.adresa.localitate);

strcpy(lista[b].adresa.strada, aux.adresa.strada);

lista[b].adresa.bloc = aux.adresa.bloc;
lista[b].adresa.apt = aux.adresa.apt;

lista[b].taxa = aux.taxa;

void sortare(void)

for(i = 0; i < nr_ut-1; i++)

int schimbat = 0;

for(j = 0; j < nr_ut-1; j++)

if(lista[j].taxa > lista[j+1].taxa)

interschimb(j, j+1);

schimbat = 1;

if(!schimbat) break;

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