Cod sursa(job #2750741)

Utilizator qwerty63Andrei Farcasanu qwerty63 Data 13 mai 2021 01:07:07
Problema Problema rucsacului Scor 0
Compilator c-64 Status done
Runda Arhiva educationala Marime 2.52 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

struct sev
{
    char nume[30];
    char prenume[50];
    double age;
};
void citire(FILE *f, FILE *g,int n)
{
    f=fopen("binar","wb");
    g=fopen("text.txt","w");
    struct sev *c;
    c=calloc(n,sizeof(struct sev));
    int i;
    for(i=0; i<n; i++)
    {
        puts("____________________");

        scanf("%s",&c[i].nume);
        fprintf(g,"%s\n",c[i].nume);
        getchar();
        scanf("%s",&c[i].prenume);
        fprintf(g,"%s\n",c[i].prenume);
        getchar();
        scanf("%lf",&c[i].age);
        fprintf(g,"%lf\n",c[i].age);
        getchar();
    }
    fwrite(c,sizeof(struct sev),n,f);
    free(c);
    fclose(f);
    fclose(g);
}
void afisarefisier(FILE *f, FILE *g,int n)
{   int i;
    struct sev ca;
    f=fopen("binar","rb");
    g=fopen("text.txt","r");
    printf("Din fisier binar");
    for(i=0; i<n; i++)
    {
        fread(&ca,sizeof(struct sev),1,f);
        printf("\n%d\n",i+1);
        puts(ca.nume);
        puts(ca.prenume);
        printf("%f",ca.age);
    }

    printf("Din fisier text");
    for(i=0; i<n; i++)
    {
        printf("\n%d\n",i+1);
        fscanf(g,"%s",&ca.nume);
        puts(ca.nume);
        fscanf(g,"%s",&ca.prenume);
        puts(ca.prenume);
        fscanf(g,"%lf",&ca.age);
        printf("%f",ca.age);
    }
    fclose(f);
    fclose(g);
}
void cautare (FILE *f, FILE *g, int *n)
{   int siz=0,i;
    f=fopen("binar","rb");
    g=fopen("text.txt","r");
    struct sev ca,ga;
    printf("\nCaut:\n");
    scanf("%s",&ca.nume);

    getchar();
    scanf("%s",&ca.prenume);

    getchar();
    scanf("%lf",&ca.age);

    getchar();

    for(i=0; i<(*n); i++)
    {
        fread(&ga,sizeof(struct sev),1,f);
        if(strcmp(ga.nume,ca.nume)==0&&strcmp(ga.prenume,ca.prenume)==0)
        {
            siz=1;
            break;
        }
    }
    fclose(f);
    fclose(g);
    if(siz==1)
        printf("\nExista!\n");
    else
        adaugare(f,g,ca,n);

}
void adaugare(FILE *f, FILE *g,struct sev ca, int *n)
{
    f=fopen("binar","ab");
    g=fopen("text.txt","a");
    fwrite(&ca,sizeof(struct sev),1,f);
    fprintf(g,"%s\n",ca.nume);
    fprintf(g,"%s\n",ca.prenume);
    fprintf(g,"%lf\n",ca.age);
    fclose(f);
    fclose(g);
    (*n)++;
}
int main()
{   int m;
    scanf("%d",&m);
    getchar();
    FILE *f,*g;
    citire(f,g,m);
    afisarefisier(f,g,m);
    cautare(f,g,&m);

    return 0;
}