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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2015, 18:05   #1
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию Си, упрощение программы по коду (по количеству строк)

Ребят, привет, есть некоторые вопросы по программе:

1) возможно ли выполнять поиск по бинарному файлу, не используя массив? (после условия menu==3).

2) кто-нибудь может подправить программу так, чтоб в char добавлялись еще пробелы, а то могу вводить только одно слово, либо строку без пробелов, с разделителями-запятыми. (menu==1)

cin.getline(); пробовал, не помогло.

Код:
#include <QCoreApplication>
#include <fstream>
#include <iostream>

using namespace std;

struct about_books
{
  char familiua_avtora[25];
    char names_book[100];
    int count_str;
};


int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);


    about_books book;



    int menu=0;
    do
    {system("cls");
        cout<<"Vibirite operaciu: \n";
        cout<<"1-add \n";
        cout<<"2-vivod \n";
        cout<<"3-vivod samoi tolst knigi\n";
        cout<<"0-exit \n";
        cin>>menu;
        system("cls");
        if (menu==1)
        {
            int kolich=0;
            cout<<"BBedite kolich zapisei: ";
            cin>>kolich;

            ofstream fout;
            fout.open("file.txt",ios::out|ios::binary);

            for (int i=0; i<kolich;i++)
            {
                cout<<"zapis nomber: " <<i+1<<"\n";
                cout<<"Familiya avtora:";
                cin.getline(book.familiua_avtora,25);
                cout<<"Names books:";
                cin.getline(book.names_book,100);
                cout<<"count stranici:";
                cin>>book.count_str;


                fout.write((char*)&book,sizeof(book));

            }

            cout<<"Dobavleno zapisei: "<<kolich<<"\n";
            cout<<"OK...press cifra: \n";
            cin>>kolich;

            fout.close();


        }

        if (menu==2)
        { int kolich=0;
            ifstream inFileBin;
            inFileBin.open("file.txt",ios::in|ios::binary);
            if(!inFileBin)
                cout<<"impossible to open file";
            else
            {
                while(!inFileBin.eof())
                {
                    if ( inFileBin.read((char*)&book,sizeof(book)))
                    {
                        cout<<"Familiya avtora: "<<book.familiua_avtora<<"\n";
                        cout<<"names books: "<<book.names_book<<"\n";
                        cout<<"kolich stranic: "<<book.count_str<<"\n\n";

                    }
                }


            }

            cout<<"OK...press cifra: \n";
            cin>>kolich;
            inFileBin.close();

        }


        if (menu==3)
        { int kolich=0;
            ifstream inFileBin;
            inFileBin.open("file.txt",ios::in|ios::binary);
            if(!inFileBin)
                cout<<"impossible to open file";
            else
            {
                while(!inFileBin.eof())
                {
                    if ( inFileBin.read((char*)&book,sizeof(book)))
                    {
                        kolich++;

                    }
                }
                inFileBin.close();

                about_books massiv[kolich];

                inFileBin.open("file.txt",ios::in|ios::binary);



                int i=0,maxindex=0;




                while(!inFileBin.eof())
                {
                    if ( inFileBin.read((char*)&book,sizeof(book)))
                    {
                        massiv[i]=book;
                        i++;

                    }
                }


                int count_str=massiv[0].count_str;


                for(i=1;i<kolich;i++)
                {
                    if (massiv[i].count_str > count_str)
                    {
                        maxindex = i;
                        count_str= massiv[i].count_str;
                    }

                }


                system("cls");
                cout<<"Samii bolshoi obiem stranic u knigi: \n";
                cout<<"Familiya avtora: "<<massiv[maxindex].familiua_avtora<<"\n";
                cout<<"names books: "<<massiv[maxindex].names_book<<"\n";
                cout<<"Kolich stranic: "<<massiv[maxindex].count_str<<"\n\n";


            }

            cout<<"OK...press cifra: \n";
            cin>>kolich;
            inFileBin.close();

        }



    }
    while (menu!=0);
    printf("POKA");



    return a.exec();
}
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана матрица. Рассмотривая ее как вектор строк, упорядочить по количеству не четных элементов в каждой строке (Паскаль) Dannymad Помощь студентам 0 23.03.2012 12:38
Программы на упрощение выражения Phoenix01 Паскаль, Turbo Pascal, PascalABC.NET 0 19.01.2012 19:54
Упрощение кода программы Alex TGM Общие вопросы C/C++ 7 30.06.2010 22:40
Упрощение кода программы за счет использования процедур uraura Общие вопросы Delphi 10 26.03.2009 21:54
Высота RichEdit по количеству строк. Компоратор Компоненты Delphi 2 15.05.2007 23:57