Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.10.2015, 21:36   #1
Sashaa_i
Пользователь
 
Регистрация: 04.10.2015
Сообщений: 15
По умолчанию

Нужно решить вот такую вот задачку

Решить надо по примеру этой задачи.
Код:
#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);
}
Изображения
Тип файла: jpg Снимок экрана (66).jpg (12.1 Кб, 128 просмотров)

Последний раз редактировалось Stilet; 06.10.2015 в 09:43.
Sashaa_i вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка файлов STUDENT16 Помощь студентам 0 04.01.2014 15:43
Создание и обработка текстовых файлов в vba(нужна помощь) rambo07 Помощь студентам 0 18.11.2013 08:56
обработка файлов vitaxa3581 Общие вопросы C/C++ 3 11.03.2013 00:45
Создание и обработка файлов Анчел Помощь студентам 0 02.06.2012 23:03
Создание и обработка файлов =\ dima0268 Общие вопросы C/C++ 0 14.12.2009 23:06