Нужно решить вот такую вот задачку
Решить надо по примеру этой задачи.
Код:
#include <stdio.h>
#include <stdlib.h>
#include <fstream>
#include <iostream>
struct DVD{
char naz[20];
char rez[20];
char dlit[20] ;
int pr;
};
void addtofile(int n)
{
DVD*mas;
FILE *f;
f=fopen("DVD.dat","w");
mas=new DVD[n];
for (int i=0 ;i<n;i++){
printf("Vvedite infu po filmu nomer %i",i+1);
printf("\n Nazvaniye: ");scanf("%s",&mas[i].naz);
printf(" Rezhiser: ");scanf("%s",&mas[i].rez);
printf(" Dlitelnost: ");scanf("%s",&mas[i].dlit);
printf(" Price: ");scanf("%i",&mas[i].pr);
}
for (int i=0;i<n;i++){
fwrite(&mas[i],sizeof(DVD),1,f);
}
fclose(f);
}
void print_from_file(int n){
FILE *f;
f=fopen("DVD.dat","r");
DVD *mas;
mas=new DVD[n];
for (int i=0;i<n;i++){
fread(&mas[i],sizeof(DVD),1,f);
printf("\n Infa po filmu nomer %i",i+1);
printf("\n Nazvaniye: %s",mas[i].naz);
printf("\n Rezhiser: %s",mas[i].rez);
printf("\n Dlitelnost: %s",mas[i].dlit);
printf("\n Price: %i",mas[i].pr);
}
fclose(f);
}
int delete_from_file(int n ,int k){
FILE *f;
f=fopen("DVD.dat","r");
FILE*newf;
newf=fopen("buff.dat","w");
DVD *mas;
mas=new DVD[n];
int p=0,price;
for (int i=0;i<n;i++){
fread(&mas[i],sizeof(DVD),1,f);
price=mas[i].pr;
if (price>k){
fwrite(&mas[i],sizeof(DVD),1,newf);
p++;
}
}
fclose(f);
fclose(newf);
remove("DVD.dat");
rename("buff.dat","DVD.dat");
return p ;
}
void add_k(int n,int k){
FILE *f;
f=fopen("DVD.dat","r");
FILE*newf;
newf=fopen("buff.dat","w");
DVD *mas;
DVD *mas2;
mas=new DVD[n];
mas2=new DVD[1];
for (int i=0;i<n;i++){
fread(&mas[i],sizeof(DVD),1,f);
if (i==k) {
printf(" \nVvedite infu po filmu nomer %i",1);
printf("\n Nazvaniye: ");scanf("%s",&mas2[0].naz);
printf(" Rezhiser: ");scanf("%s",&mas2[0].rez);
printf(" Dlitelnost: ");scanf("%s",&mas2[0].dlit);
printf(" Price: ");scanf("%i",&mas2[0].pr);
fwrite(&mas2[0],sizeof(DVD),1,newf);
}
fwrite(&mas[i],sizeof(DVD),1,newf);
}
fclose(f);
fclose(newf);
remove("DVD.dat");
rename("buff.dat","DVD.dat");
}
int main(){
int n;
printf("Vvedite colichestvo elementov: ");
scanf("%i",&n);
addtofile(n);
print_from_file(n);
printf("\n Vvedite price: ");
int k,p;
scanf("%i",&k);
p=delete_from_file(n,k);
n=p;
printf("\n Novii file ");
print_from_file(n);
printf("\n Vvedite nomer posle kotorogo vvodit' elementi: ");
int aftn;
scanf("%i",&aftn);
add_k(n,aftn);
printf("\n Novii file posle dobavlenija");
n=n+1;
print_from_file(n);
}