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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2017, 21:39   #1
Lucky_Vadim
Пользователь
 
Регистрация: 12.12.2017
Сообщений: 22
По умолчанию Завтра последний день, помогите! Ошибка при вводе(не выводит после пробела).

Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <locale.h>
#include <Windows.h> 

#define DATA struct data
#define MARK "---------------------------------------------------------------------"

DATA
{
    char name[40];
    int numf;
    int numk;
};

DATA a,b;

void Purpose(FILE *f)
{
    fseek(f,0,SEEK_END);
    int er=0,i=0,end=ftell(f);
    int fil;
    printf("\nВведите количество филиалов: ");
    do
    {
        if((scanf("%d",&fil))!=1)
        {
            printf("Используйте символы для ввода 0-9\n");
            er=1;
        }
    }
    while(er);
    printf("\n\t\tБанки с числом филиалов больше %d",fil);
    printf("\n%s\n|\tНаименование\t\t| Число филиалов | Капитал(млн.руб) |\n%s\n",MARK,MARK);
    while(i<end)
    {
        fseek(f,i,SEEK_SET);
        fread(a.name,sizeof(a.name),1,f);
        fread(&a.numf,sizeof(a.numf),1,f);
        fread(&a.numk,sizeof(a.numk),1,f);
        if(a.numf>fil)
        {
            printf("| %-30s|\t%-9d|\t  %-10d|\n%s\n",a.name,a.numf,a.numk,MARK);
        }
        i+=sizeof(a.name)+sizeof(a.numf)+sizeof(a.numk);
    }
}

void display(FILE *f)
{
    fseek(f,0,SEEK_END);
    int i=0,end=ftell(f);
    printf("\n%s\n|\tНаименование\t\t| Число филиалов | Капитал(млн.руб) |\n%s\n",MARK,MARK);
    while(i<end)
    {
        fseek(f,i,SEEK_SET);
        fread(a.name,sizeof(a.name),1,f);
        fread(&a.numf,sizeof(a.numf),1,f);
        fread(&a.numk,sizeof(a.numk),1,f);
        printf("| %-30s|\t%-9d|\t  %-10d|\n%s\n",a.name,a.numf,a.numk,MARK);
        i+=sizeof(a.name)+sizeof(a.numf)+sizeof(a.numk);
    }
}

void Addfile_and_Deal(FILE *f,FILE *fr)
{
    char c=' ';
    int er;
    f=fopen("output.txt","w");
    fr=fopen("deal.txt","w");
    fseek(f,0,SEEK_SET);
    fseek(fr,0,SEEK_SET);
    do
    {
        er=0;
        printf("Введите название банка: ");
        scanf("%s",a.name);
        fwrite(a.name,sizeof(a.name),1,f);
        fflush(stdin);
        printf("Количество филиалов: ");
        if((scanf("%d",&a.numf))!=1)
        {
            printf("Используйте символы для ввода 0-9\n");
            er=1;
        }
        fwrite(&a.numf,sizeof(a.numf),1,f);
        printf("Капитал: ");
        if((scanf("%d",&a.numk))!=1)
        {
            printf("Используйте символы для ввода 0-9\n");
            er=1;
        }
        fwrite(&a.numk,sizeof(a.numk),1,f);
        fflush(stdin);
        if(a.numk<70)
        {
            fwrite(a.name,sizeof(a.name),1,fr);
            fwrite(&a.numf,sizeof(a.numf),1,fr);
            fwrite(&a.numk,sizeof(a.numk),1,fr);
        }
        printf("Для продолжения введите + : ");
        scanf("%c",&c);
        fflush(stdin);
    }
    while((c=='+')||(er==1));
    fclose(f);
    fclose(fr);
}

int main()
{
    setlocale(LC_ALL, "rus");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    system("color F0");
    setlocale(0,"");
    FILE *f,*fr;
    printf("Данные:\n");
    Addfile_and_Deal(f,fr);
    system("cls");
    printf("\t\tПоказатели развития банков России к 1914г.");
    if((f=fopen("output.txt","rb"))==NULL)
    {
        printf("Не удалось открыть файл!");
        return 0;
    }
    display(f);
    Purpose(f);
    fclose(f);
    if((fr=fopen("deal.txt","rb+"))==NULL)
    {
        printf("Не удалось открыть файл!");
        return 0;
    }
    fseek(fr,0,SEEK_END);
    int end=ftell(fr);
    int pos,j,i=0;
    while(i<(end-sizeof(a.name)-sizeof(a.numf)-sizeof(a.numk)))
    {
        fseek(fr,i,SEEK_SET);
        fread(a.name,sizeof(a.name),1,fr);
        fread(&a.numf,sizeof(a.numf),1,fr);
        fread(&a.numk,sizeof(a.numk),1,fr);
        j=i+sizeof(a.name)+sizeof(a.numf)+sizeof(a.numk);
        while(j<end)
        {
            fseek(fr,j,SEEK_SET);
            fread(b.name,sizeof(b.name),1,fr);
            fread(&b.numf,sizeof(b.numf),1,fr);
            fread(&b.numk,sizeof(b.numk),1,fr);
            if(strcmp(a.name,b.name)<0)
            {
                pos=i;
                fseek(fr,pos,SEEK_SET);
                fwrite(b.name,sizeof(b.name),1,fr);
                fwrite(&b.numf,sizeof(b.numf),1,fr);
                fwrite(&b.numk,sizeof(b.numk),1,fr);
                pos=j;
                fseek(fr,pos,SEEK_SET);
                fwrite(a.name,sizeof(a.name),1,fr);
                fwrite(&a.numf,sizeof(a.numf),1,fr);
                fwrite(&a.numk,sizeof(a.numk),1,fr);
                a.numf=b.numf;
                a.numk=b.numk;
                strcpy(a.name,b.name);
            }
            j+=sizeof(a.name)+sizeof(a.numf)+sizeof(a.numk);
        }
        i+=sizeof(a.name)+sizeof(a.numf)+sizeof(a.numk);
    }
    getch();
    printf("\n\t\tБанки с капиталом меньше 70 млн");
    display(fr);
    fclose(fr);
    return 0;
}
Изображения
Тип файла: jpg Безымянный.jpg (116.6 Кб, 106 просмотров)
Lucky_Vadim вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ Ошибка при вводе Кристина1998 Помощь студентам 2 19.03.2017 18:48
завтра последний день сдачи.С массивами что то туго у меня...может подскажет кто-нибудь wolf0010 Помощь студентам 0 30.05.2013 21:09
Процедура должна выводить сумму при вводе номера, но кроме суммы выводит еще что такого номера нет yohurt Помощь студентам 1 09.01.2012 07:35
Помогите решить одну задачку! Никак не врубаюсь. На завтра надо. Сделайте подарок на день рождения:) Женек Помощь студентам 2 01.10.2008 19:48