Informatică, întrebare adresată de Tudor99747, 8 ani în urmă

Biblioteca. Informaţiile despre n cărţi ale unei biblioteci sunt stocate în fişierul textual Carti.txt, fiecare linie a cărui corespunde unei singure cărţi din fondul bibliotecii şi reciproc. O linie a fişierului include atribute ale cărţii respective, separate printr-un spaţiu: CodCarte (Codul cărţii); Num_Pren_Autor (Numele şi prenumele autorului); Titlul (Titlul cărţii); AnEd (Anul editării); Limba (Limba în care este editată cartea); Pret (preţul cărţii); Npag (Numărul de pagini ale cărţii); Tema (Tematica).
1. Să se elaboreze în limbaj de nivel înalt un program care, folosind meniuri şi subprograme, să realizeze, la solicitarea utilizatorului, următoarele prescripţii:
1) Înregistrează o nouă carte;
2) Exclude din fişierul Carti.txt, liniile, ce corespund cărţilor cu tematica indicată de la tastatură;
3) Afişează pe ecran seturile de atribute ale tuturor cărţilor, editate după anul introdus de la tastatură, ordonându-le alfabetic după numele_prenumele autorilor;
3. Creează fişierul textual Romana.txt, ce va înregistra atributele cărţilor scrise în limba română, având titlul indicat de la tastatură;
4. Afişează pe ecran seturile de atribute ale cărţilor cu numărul maximal de pagini; 5. Determină preţul mediu al unei cărţi editate în limbă străină.​

Răspunsuri la întrebare

Răspuns de riuytgame
3

Răspuns:

AM cam asa ceva din cei ceam reusit sa fac

Explicație:

# include <stdio.h>

# include <string.h>

# include <conio.h>

typedef struct

{  char titlu[50];

   char autor[50];

   char dom[50];

   char pret[50];

   char editare[50];

} bib;

void citire (bib x[50],int *n)

{ printf("Titlul cartii: ");

  fflush(stdin);

  gets(x[*n].titlu);

  printf("Autorul cartii: ");

  fflush(stdin);

  gets(x[*n].autor);

  printf("Domeniul cartii: ");

  fflush(stdin);

  gets(x[*n].dom);

  printf("Pretul cartii: ");

  fflush(stdin);

  gets(x[*n].pret);

  printf("Editarea cartii: ");

  fflush(stdin);

  gets(x[*n].editare);

  (*n)++;}

void afisare(bib x[50],int n)

{ int i; FILE *f;

f=fopen("exam1.txt","wb");

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

  { printf("\n");

    printf("Titlul cartii este %s\n",x[i].titlu);

    printf("Autorul cartii este %s\n",x[i].autor);

    printf("Domeniul cartii este %s\n",x[i].dom);

    printf("Pretul cartii este %s\n",x[i].pret);

    printf("Editarea cartii %s\n",x[i].editare);

    if (f==NULL)

printf("Fisierul nu poate fi deschis");

else

fwrite(&x[i],sizeof(bib),1,f);

}

fclose(f);

}

void ord1 (bib x[50],int n,int b)

{ int i,ok; bib temp;

do

  {ok=0;

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

    if (strcmp(x[i+1].autor,x[i].autor)>0)

      { temp=x[i];

        x[i]=x[i+1];

        x[i+1]=temp;

        ok=1;}

}

while (ok!=0);

}

void ord2 (bib x[50], int n,bib z[50])

{int i,ok,j; bib temp; char dm[50];

strcpy(dm,"tehnic");

j=0;

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

  if (strcmp(x[i].dom,dm)==0)

   { z[j]=x[i];

     j++;}

do

  {ok=0;

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

     if (strcmp(z[i].pret,z[i+1].pret)>0)

      { temp=z[i];

        z[i]=z[i+1];

        z[i+1]=temp;

        ok=1;}

        }

while (ok!=0);

afisare (z,j);

}      

void ord3 (bib x[50], int n,int b, bib y[50])

{int i,ok,j; bib temp; char dm[50],ed[50];

if (b==0)

  do

  {ok=0;

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

    if (strcmp(x[i+1].autor,x[i].autor)>0)

      { temp=x[i];

        x[i]=x[i+1];

        x[i+1]=temp;

        ok=1;}

}

while (ok!=0);

     else

     {  

strcpy(dm,"literar");

strcpy(ed,"da");

j=0;

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

  if ((strcmp(x[i].dom,dm)==0) && (strcmp(x[i].editare,ed)==0))

   {y[j]=x[i];

    j++;}

do

  {ok=0;

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

     if (strcmp(y[i].autor,y[i+1].autor)>0)

      { temp=y[i];

        y[i]=y[i+1];

        y[i+1]=temp;

        ok=1;}

        }

while (ok!=0);

afisare (y,j);

}

}      

void pretmic(bib x[50],int n)

{    char pret[50]; int i,c;

     c=0;

     printf("Pretul introdus: ");

     fflush(stdin);

     gets(pret);

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

      if (strcmp(x[i].pret,pret)<0)

        c++;

     printf("\n");

     printf("Sunt %d carti",c);  

}

int main()

{ int op,n,b;

  bib x[50],z[50],y[50];

n=0;

do

{

  printf("\n1.Introducere carti\n");

  printf("2.Afisare\n");

  printf("3.Listare ord alfabetica descrescatoare\n");

  printf("4.Listare in ordine crescatoare a pretului\n");

  printf("5.Ord alfabetica dupa autori\n");

  printf("6.Pret mic\n");

  printf("0.Exit\n");

  printf("Introduceti optiunea voastra ");

  scanf("%d",&op);

  switch(op)

  { case 1: citire(x,&n); break;

    case 2: afisare(x,n); break;

    case 3: b=0;ord3(x,n,b,y); afisare(x,n); break;

    case 4: ord2(x,n,z); break;

    case 5: b=1;ord3(x,n,b,y); break;

    case 6: pretmic(x,n); break;

    case 0: break;}

}

while (op!=0);

return 0;

}

Alte întrebări interesante