Sunteți pe pagina 1din 14

Universitatea Tehnică a Moldovei

Catedra Automatică și Tehnologii Informaționale

Disciplina Structuri de date si algoritmi

Varianta 7

Raport

Tema: Prelucrarea fisierelor

A realizat student grupa TI-

A verificat Moțpan Serghei

Chisinău 2018
Cuprin

2
s

1. Scopul și obiectivele lucrării....................................................................................................3


2. Sarcina......................................................................................................................................4
3. Schema bloc.............................................................................................................................5
4. Realizarea.................................................................................................................................7
Concluzii..........................................................................................................................................8
Bibliografie......................................................................................................................................9
Anexa A.........................................................................................................................................10
Anexa B.........................................................................................................................................11

3
1. Scopul și obiectivele lucrării

a. Familiarizarea cu principiile prelucrării fisierelor


b. Algoritmizarea şi însuşirea procedeelor stereotipe de citire, scriere si lucru cu fisiere
c.

4
2. Sarcina
7. Dintr-un fisier se citesc 15 caractere distincte, care codifica cifrele zecimale 0,1,2...9 si operatorii
+,-,*,/ si =. Tot din fisier se citeste un sir de maxim 80 de caractere, terminat prin caracterul '='si care
reprezinta o expresie aritmetica cu operanzi intregi fara semn. Se considera expresie corecta cea care
satisface urmatoarele conditii:
nu contine doi operatori succesivi
nu contine impartiri la zero.

5
3. Schema bloc

START

char
*a,*a1,*a2,*ex;

Prelucrare(a,a1,a2,ex);

Verificare(ex);

Calcul(ex);

Eliberare(a,a1,a2,ex);

STOP

6
Figura 1 Schema bloc pentru functia main

7
Figura 2 Schema bloc pentru functia calcul

8
4. Realizarea

Programul dat are ca scop să citescă o doua siruri din fisier. Primul sir este codat, al doilea
este expresia.
FILE *fisier;

if((fisier=fopen("E:\\UTM\\SDA\\Lab3v2\\fis1.txt", "r"))==NULL)

perror("A aparut o eroare la deschiderea fisierului fis1.txt");

exit(0);

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

if(fscanf(fisier,"%c",&a[i])==EOF) break;

fclose(fisier);

a1=calloc(15,sizeof(char*));

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

a1[i]=a[i];

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

printf("\n");

a2=calloc(16,sizeof(char*));

for(i=15;i<n;i++)
9
{

a2[i-16]=a[i];

printf("%c",a2[i-16]);

printf("\n\n");

Concluzii

Lucrarea dată a avut ca scop să ne facă cunostinta cu fisierele si operarea cu ele.

10
Bibliografie

1. The GNU C Reference Manual. [Interactiv] https://www.gnu.org/software/gnu-c-


manual/gnu-c-manual.html.
2. The C Library Reference Guide. [Interactiv] https://www-
s.acm.illinois.edu/webmonkeys/book/c_guide/.

[ CITATION The1 \l 1033 ]

Anexa A

Figura 3 Rezultatul executiei programului

11
Anexa B
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void verificare(char *ex)


{
int i;
for(i=0;i<16;i++)
{
if((ex[i]=='/')&&(ex[i+1]=='0'))
{
printf("Expresia este incorecta");
exit(0);
}
}
}
void calcul(char *ex)
{
float rez=0;
int i;
rez=atof(ex+0);

for(i=1;i<16;i++)
{
if(ex[i]=='+') rez=rez+atof(ex+i+1);
if(ex[i]=='-') rez=rez-atof(ex+i+1);
if(ex[i]=='*') rez=rez*atof(ex+i+1);
if(ex[i]=='/') rez=rez/atof(ex+i+1);
}
printf("%f",rez);
}

void eliberare(char *a, char *a1, char *a2, char *ex)


{
12
free(a);
free(a1);
free(a2);
free(ex);
}

int main(void)
{
int i,n=32;
char *a,*a1,*a2,*ex;
a=calloc(32,sizeof(char*));
FILE *fisier;
if((fisier=fopen("E:\\UTM\\SDA\\Lab3v2\\fis1.txt", "r"))==NULL)
{
perror("A aparut o eroare la deschiderea fisierului fis1.txt");
exit(0);
}

for(i=0;i<n;i++){
if(fscanf(fisier,"%c",&a[i])==EOF) break;

}
fclose(fisier);

a1=calloc(15,sizeof(char*));
for(i=0;i<15;i++)
{
a1[i]=a[i];
printf("%c ",a1[i]);
}

printf("\n");

a2=calloc(16,sizeof(char*));
13
for(i=15;i<n;i++)
{
a2[i-16]=a[i];
printf("%c",a2[i-16]);
}
printf("\n\n");

ex=calloc(16,sizeof(char*));
for(i=0;i<16;i++)
{
if(a2[i]=='q') ex[i]='0';
if(a2[i]=='w') ex[i]='1';
if(a2[i]=='e') ex[i]='2';
if(a2[i]=='r') ex[i]='3';
if(a2[i]=='t') ex[i]='4';
if(a2[i]=='y') ex[i]='5';
if(a2[i]=='u') ex[i]='6';
if(a2[i]=='i') ex[i]='7';
if(a2[i]=='o') ex[i]='8';
if(a2[i]=='p') ex[i]='9';
if(a2[i]=='a') ex[i]='+';
if(a2[i]=='s') ex[i]='-';
if(a2[i]=='d') ex[i]='*';
if(a2[i]=='f') ex[i]='/';
if(a2[i]=='g') ex[i]='=';
printf("%c",ex[i]);
}
verificare(ex);
calcul(ex);
eliberare(a,a1,a2,ex);

return 0;
}

14

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

  • IoT Laborator NR 2
    IoT Laborator NR 2
    Document10 pagini
    IoT Laborator NR 2
    crismaruion
    Încă nu există evaluări
  • Raport4 Lab4 AC
    Raport4 Lab4 AC
    Document3 pagini
    Raport4 Lab4 AC
    crismaruion
    Încă nu există evaluări
  • Lab 4 Apa
    Lab 4 Apa
    Document21 pagini
    Lab 4 Apa
    crismaruion
    Încă nu există evaluări
  • IoT2 Raport
    IoT2 Raport
    Document10 pagini
    IoT2 Raport
    crismaruion
    Încă nu există evaluări
  • Raport 5 CDE
    Raport 5 CDE
    Document7 pagini
    Raport 5 CDE
    crismaruion
    Încă nu există evaluări
  • Lab 7 Sda
    Lab 7 Sda
    Document12 pagini
    Lab 7 Sda
    crismaruion
    Încă nu există evaluări
  • Lab 6 Sda
    Lab 6 Sda
    Document16 pagini
    Lab 6 Sda
    crismaruion
    Încă nu există evaluări
  • Laboratorul 2 PPE
    Laboratorul 2 PPE
    Document4 pagini
    Laboratorul 2 PPE
    crismaruion
    Încă nu există evaluări
  • Examen PPe
    Examen PPe
    Document11 pagini
    Examen PPe
    crismaruion
    100% (2)
  • Raport CDE Lab.2
    Raport CDE Lab.2
    Document7 pagini
    Raport CDE Lab.2
    crismaruion
    100% (1)