Documente Academic
Documente Profesional
Documente Cultură
Varianta 7
Raport
Chisinău 2018
Cuprin
2
s
3
1. Scopul și obiectivele lucrării
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)
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
10
Bibliografie
Anexa A
11
Anexa B
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
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);
}
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