نمایش نتایج 1 تا 6 از 6

نام تاپیک: فایل {جستجوی ترتیبی}

  1. #1

    فایل {جستجوی ترتیبی}

    سلام

    کدزیر را مشاهده کنید :::

    #include<iostream>
    #include<conio.h>
    #include<fstream>
    using namespace std;
    class Aliweb
    {
    public:
    string name;
    string famil;
    int id;
    };
    int main()
    {
    Aliweb a[10];
    for(int i=0;i<1;i++)
    {
    cout<<"Enter a id:";
    cin>>a[i].id;
    cout<<"Enter a name:";
    cin>>a[i].name;
    cout<<"Enter a famil:";
    cin>>a[i].famil;
    }
    ofstream fout("C:\\Aliweb.txt");
    for(int j=0;j<1;j++)
    {
    fout<<a[j].id<<"|";
    fout<<a[j].name<<"|";
    fout<<a[j].famil<<"|";
    fout<<endl;
    }
    fout.close();

    ifstream out("C:\\Aliweb.txt");
    string res="";
    char ch;
    while(out)
    {
    ch=out.get();
    res+=ch;
    }
    cout<<res;
    out.close();

    getch();
    return 0;
    }


    حالا من میخوام یک جستجوی ترتیبی انجام بدم ابتدا یک کلید میگیرم کلید ما a.id هست و بعد یک ورودی میگیریم که چک کنه آیا این رکورد وجود دارد یا نه الان مشکل من همین خوندن فایل {فیلد a.id}هست و چک کردن البته چک کردن هم با یک if ساده ولی نمیدونم به چه شکلی استقاده کنم :

    char ab;
    cin>>ab;
    if(a.id==ab)
    {
    cout<<"found";
    }

  2. #2
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران سرای من است
    پست
    2,655

    نقل قول: فایل {جستجوی ترتیبی}

    جستجو داخل یک فایل متنی اون هم یا طراحی صورت بگیره و معلوم نباشه طول داده ها چقدره سرعت جستجو رو پایین میاره اما این کاری که قصد دارید انجام بدید باید به شکل زیر صورت بگیره

    //---------------------------------------------------------------------------
    #include <vcl.h>
    #include<iostream>
    #include<conio.h>
    #include<fstream>
    using namespace std;
    class Aliweb
    {
    public:
    string name;
    string famil;
    int id;
    };
    int main()
    {
    Aliweb a[10];
    for(int i=0;i<1;i++)
    {
    cout<<"Enter a id:";
    cin>>a[i].id;
    cout<<"Enter a name:";
    cin>>a[i].name;
    cout<<"Enter a famil:";
    cin>>a[i].famil;
    }
    ofstream fout("C:\\Aliweb.txt");
    for(int j=0;j<1;j++)
    {
    fout<<a[j].id<<"|";
    fout<<a[j].name<<"|";
    fout<<a[j].famil<<"|";
    fout<<endl;
    }
    fout.close();
    ifstream out("C:\\Aliweb.txt");
    string res="";
    char ch;
    while(out)
    {
    ch=out.get();
    res+=ch;
    }
    cout<<res;
    out.close();
    ifstream in("C:\\Aliweb.txt");
    int ab;
    cin>>ab;
    char tmpch;
    bool FindOut=false;
    while(!in.eof())
    {
    in>>a[0].id; in>>tmpch;
    in>>a[0].name; in>>tmpch;
    in>>a[0].famil; in>>tmpch;
    if(a[0].id==ab){
    FindOut = true;
    break;
    }
    if( FindOut)
    cout<<"found";
    else
    cout<<"not found";
    in.close();
    }
    getch();
    return 0;
    }


  3. #3

    نقل قول: فایل {جستجوی ترتیبی}

    ممنون

    اون هدر vcl.h برای چی هست همون {Visual compomnent Libtary} ?


    من از کامپایلر dev C++‎ استفاده میکنم جوابی نگرفتم{هدر vcl.h} پاک کردم در dev

    یه کوچلو تغییر دادم:

    //---------------------------------------------------------------------------2
    #include<iostream>
    #include<conio.h>
    #include<fstream>
    using namespace std;
    class Aliweb
    {
    public:
    string name;
    string famil;
    int id;
    };
    int main()
    {
    Aliweb a[10];
    ifstream in("C:\\Aliweb.txt");
    int ab;
    cin>>ab;
    char tmpch;
    bool FindOut=false;
    while(!in.eof())
    {
    in>>a[0].id; in>>tmpch;
    in>>a[0].name; in>>tmpch;
    in>>a[0].famil; in>>tmpch;
    if(a[0].id==ab){
    FindOut = true;
    break;
    }
    if(FindOut)
    cout<<"found";
    else
    cout<<"not found";
    in.close();
    }
    getch();
    return 0;
    }


    قبل از اجرای برنامه بالا فایل من داری فیلد های زیر هست::
    12|aaaa|dddd|


    بعد از اجرای برنامه عدد 12 را وارد میکنم جواب نمیگیرم

  4. #4
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران سرای من است
    پست
    2,655

    نقل قول: فایل {جستجوی ترتیبی}

    شرمنده اشتباه از ما بود

    #include<iostream>
    #include<conio.h>
    #include<fstream>
    using namespace std;
    class Aliweb
    {
    public:
    string name;
    string famil;
    int id;
    };
    void GetStr( char *text, char token, ifstream *in)
    {
    bool value=false;
    int c=0;
    text[c]=0;
    while(!in->eof() && !value)
    {
    *in>>text[c];
    if(text[c]==token){
    value = true;
    text[c] = 0;
    }
    C++‎;
    }
    }
    int main()
    {
    Aliweb a[10];
    for(int i=0;i<1;i++)
    {
    cout<<"Enter a id:";
    cin>>a[i].id;
    cout<<"Enter a name:";
    cin>>a[i].name;
    cout<<"Enter a famil:";
    cin>>a[i].famil;
    }
    ofstream fout("C:\\Aliweb.txt");
    for(int j=0;j<1;j++)
    {
    fout<<a[j].id<<"|";
    fout<<a[j].name<<"|";
    fout<<a[j].famil<<"|";
    fout<<endl;
    }
    fout.close();
    ifstream out("C:\\Aliweb.txt");
    string res="";
    char ch;
    while(out)
    {
    ch=out.get();
    res+=ch;
    }
    cout<<res;
    out.close();
    ifstream in("C:\\Aliweb.txt");
    int ab;
    cin>>ab;
    char tmpch[10];
    bool FindOut=false;
    while(!in.eof())
    {
    GetStr(tmpch, '|', &in);
    a[0].id = atoi(tmpch);
    GetStr((char *)a[0].name.c_str(), '|', &in);
    GetStr((char*)a[0].famil.c_str(), '|', &in);
    if(a[0].id==ab){
    FindOut = true;
    break;
    }
    }
    if( FindOut)
    cout<<"found";
    else
    cout<<"not found";
    in.close();
    getch();
    return 0;
    }


  5. #5
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران سرای من است
    پست
    2,655

    نقل قول: فایل {جستجوی ترتیبی}

    GetStr فایل رو که باز شده است رو میخونه و تا رسیدن به علامت | ادامه میده و با پیدا شدن این علامت میفهمه که اونجا اولین فیلد هست و اون رشته رو برگشت میده.
    داخل کد هم چون شما سه دونه فیلد به اسم
    idو nameو famili دارید باید getstr رو سه بار صدا بزنید تا بتونه اون داده هایی که که قبلا داخل فایل نوشتید رو برگشت بدید.

    اما داخل کد شما یک شرط هست که باید بصورت عددی بررسی بشه ولی چون چیزی که از فایل میخونید رشته هست به همین دلیل با
    atoi رشته رو به عدد تبدیل میکنید تا بعد از اون با ab مقایشه کنید تا از این طریق تشخیص بدید داده پیدا شده است یا نه برای تشخیص هم یک متغییر از نوع bool به اسم findout قرار داده شده تا از اون طریق عمل تشخیص رو انجام بدید.

  6. #6

    نقل قول: فایل {جستجوی ترتیبی}

    حالا من یک سئوال این برنامه بخوام بگم هرچی 5 کاراکتر هست رو برام نشون بده چه کنم

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •