تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 3 از 3

نام تاپيک: کمک خیلی مهم نشان دادن تابع حذف اضافه

  1. #1
    در آغاز فعالیت
    تاريخ عضويت
    Dec 2011
    پست ها
    15

    پيش فرض کمک خیلی مهم نشان دادن تابع حذف اضافه

    سلام دوستان

    این برنامه باید تا دو روز دیگه تحویل بدم اگه کمک کنید ممنون میشم

    سوال: الگوریتم و برنامه که نشان دهنده add, delete در زبان c++

    مرسی.

  2. #2
    در آغاز فعالیت
    تاريخ عضويت
    Nov 2013
    پست ها
    4

    پيش فرض

    این برنامه دفترچه تلفن است که می تواند به عنوان مثال اسامی کاربران را اضافه و یا حذف کند، ببینید که به دردتان می خورد.
    #include <iostream.h>
    #include <stdlib.h>
    #include <cstring.h>
    #include <iomanip.h>
    #include <conio.h>
    #include <fstream.h>






    struct Phone
    {
    char name[15];
    char family[15];
    char tel[12];

    Phone *next;
    };


    Phone* Start_ptr = NULL;
    Phone* current = NULL;


    void Select ( int ); // which choice user selected;
    void Add_new();
    void Print_all();
    void Menu1();
    void Menu2();
    void Edit_current();


    void Delete_current ();
    void Delete_all();
    void Tel_or_name( int );
    void Read_from_file();
    void Write_to_file();


    void Sort_name( int );
    void Add_tail_from_file( Phone* );


    Phone* Search( char* , int);




    enum MENU{ ADD=1, SEARCH_NAME, SEARCH_NO, SORT_NAME, SORT_FAMIL, SHOW_ALL, SAVE, EXPORT_CSV, EXIT, UNINSTALL };


    int main()
    {
    Read_from_file();


    int choice;


    do
    {
    Menu1();
    cin >> choice;
    clrscr();
    Select ( choice );

    }while ( choice != EXIT );

    Write_to_file();


    cout <<"Thank you" << endl;
    Delete_all();


    return 0;
    }


    /*===================Select=======================*/
    void Select( int choose )
    {
    switch ( choose )
    {
    case ADD :
    Add_new(); break;

    case SEARCH_NAME :
    Tel_or_name(1); break;

    case SEARCH_NO :
    Tel_or_name(2); break;

    case SORT_NAME :
    Sort_name(1); break;


    case SORT_FAMIL :
    Sort_name(2); break;

    case SHOW_ALL :
    Print_all(); break;


    case SAVE :
    Write_to_file();
    cout <<"We will save your data automatically when your work finished" << endl;
    getch();
    break;






    case EXIT :
    return;





    default :
    cout <<"Select again :" << endl;
    }
    return;
    }
    /*=================Add_new=====================*/
    void Add_new()
    {
    Phone* temp = new Phone;
    Phone* temp2 = Start_ptr;

    clrscr();

    cout << "Enter the name : ";
    cin >> temp->name;
    cout << "Family : ";
    cin >> temp->family;
    cout << "Phone number : ";
    cin >> temp->tel;

    temp->next = NULL;

    if ( Start_ptr == NULL )
    {
    Start_ptr = temp;
    }

    else
    {
    while( temp2->next != NULL )
    {
    temp2 = temp2->next;
    }
    temp2->next = temp;
    }

    return;
    }
    /*==============Print_all=======================*/
    void Print_all()
    {
    Phone* temp = Start_ptr;
    char show[35];


    if ( Start_ptr == NULL )
    {
    cout <<"The list is empty!" << endl;
    getch();
    return;
    }
    else
    {
    cout<<"\nName Phone "
    <<"\n----------------------------------- ------------" << endl;
    do
    {
    strcpy(show, "");
    strcat(show, temp->family);
    strcat(show, ", ");
    strcat(show, temp->name);
    show[0] = toupper(show[0]);
    cout << setiosflags( ios::left )
    << setw(36) << show << setw(12) <<temp->tel <<endl;


    temp = temp->next;
    }while(temp != NULL);
    }
    cout << endl;
    getch();
    return;
    }


    /*=================Search=======================*/
    Phone* Search( char* temp_search , int choice )
    {
    /* If list is empty */
    if ( Start_ptr == NULL )
    {
    cout <<"List is empty!" << endl;
    return NULL;
    }


    /* Search by name */
    if ( choice == 1 )
    {
    while( current != NULL && strcmp( current->name, temp_search ) != 0 )
    {
    current = current->next;
    }
    }


    /* Search by tel */
    if ( choice == 2 )
    {
    while( current != NULL && strcmp( current->tel, temp_search ) != 0 )
    {
    current = current->next;
    }

    }


    /* If record found */
    if ( current != NULL )
    {
    cout << "Record found" << endl
    << current->name << " " << current->family << " : " << current->tel << endl;

    return current;
    }


    /* If record !found */
    else
    {
    cout <<"Record NOT found" << endl;
    current = Start_ptr; //move back the current pointer to fisrt node
    return NULL;
    }
    }


    /*====================Delete_current=============== =====*/
    void Delete_current()
    {
    Phone* temp = NULL;
    Phone* prev = NULL;


    /* If it`s the fisrt node */
    if ( current == Start_ptr )
    {
    temp = Start_ptr;
    Start_ptr = Start_ptr->next; //If we have only 1 node, start_ptr will point to NULL
    delete temp;
    temp = NULL;
    }


    /* If it`s in the middle of list or the last node */
    else
    {
    prev = Start_ptr;
    while( prev->next != current )
    {
    prev = prev->next;
    }
    prev->next = current->next;// If it`s the last node prev will point to NULL
    delete current;
    current = Start_ptr;
    }
    }


    /*=================Delete_all=================*/
    void Delete_all()
    {
    if ( Start_ptr == NULL )
    {
    return; // we have no memory allocated
    }


    Phone* temp = Start_ptr;
    while( Start_ptr != NULL )
    {
    temp = Start_ptr;
    Start_ptr = Start_ptr->next;
    delete temp;
    }
    }


    /*=================Tel_or_name================*/
    void Tel_or_name(int choose)
    {
    Phone* temp_del = NULL;
    char temp_search[15];
    int choice;

    current = Start_ptr;

    cout <<"Enter the "<<(choose == 1 ? "name" : "tel") <<" to search : ";
    cin >> temp_search;

    temp_del = Search( temp_search, choose );

    while ( temp_del != NULL )
    {
    Menu2();
    cin >> choice;

    switch( choice )
    {
    case 1: current = current->next; temp_del = Search( temp_search, choose ); break;
    case 2: Delete_current(); break;
    case 3: Edit_current(); break;
    case 4: return;
    }
    }
    getch();

    }
    /*==============Write_to_file====================== =======*/
    void Write_to_file()
    {
    Phone* temp = Start_ptr;
    ofstream outFile("Data.dat" , ios::out );

    if( !outFile )
    {
    cerr << "Some error ocured during writing to file." << endl;
    getch();
    return;
    }

    while( temp != NULL )
    {
    outFile << temp->name << " " << temp->family << " " << temp->tel;
    if( temp->next != NULL )
    {
    outFile << endl;
    }
    temp = temp->next;

    }


    outFile.close();


    cout <<"Data saved successfully." << endl;
    }
    /*===============Read_from_file==================== =========*/
    void Read_from_file()
    {
    ifstream inputFile("Data.dat" , ios::in );

    if ( !inputFile )
    {
    cout << "Data couldn`t be loaded." << endl;
    getch();
    return;
    }


    do
    {
    Phone* temp = new Phone;

    inputFile >> temp->name;
    inputFile >> temp->family;
    inputFile >> temp->tel;
    temp->next = NULL;

    Add_tail_from_file( temp );


    //Where should I place delete temp?????
    }while( !inputFile.eof() );


    cout <<"Data loaded successfully" << endl;
    }


    /*==============Add_tail_from_file================= */
    void Add_tail_from_file( Phone* temp )
    {

    if ( Start_ptr == NULL )
    {
    Start_ptr = temp;
    }
    else
    {
    Phone* temp2 = Start_ptr;
    while ( temp2->next != NULL )
    {
    temp2 = temp2->next;
    }
    temp2->next = temp;
    }
    }


    /*================Sort_name======================== =========*/


    void Sort_name(int choice)
    {
    /* If list is empty */
    if ( Start_ptr == NULL )
    {
    cout <<"The list is empty!" << endl;
    getch();
    return;
    }

    /* Determine the size of list */
    int counter = 1;
    Phone* temp = Start_ptr;

    while( temp->next != NULL )
    {
    temp = temp->next;
    counter++;
    }

    /* an Array of pointers to struct Phone. I couldn`t do this part by dynamic memory
    allocation i.e Phone* sort = new Phone[counter]
    or some thing like that. if you could help, please send me your suggestion .*/
    Phone* sort[1000];


    sort[0] = Start_ptr;
    for ( int cnt = 1; cnt < counter; cnt++ )
    {
    sort[cnt] = sort[cnt-1]->next;
    }
    sort[counter] = NULL;

    /* bubble sort */
    /* This part could be better too.for example if user enter capital 'F' it comes
    before 'a'. I had to change all letter to lower case but has no time. */

    for ( int i = 0; i < counter; i++ )
    {
    for ( int j = 0; j < counter - i - 1; j++)
    {
    /* Sort by name */
    if ( choice == 1 )
    {
    if ( strcmp(sort[j]->name, sort[j+1]->name) > 0 )
    {
    Phone* temp2 = sort[j];
    sort[j] = sort[j+1];
    sort[j+1] = temp2;
    }
    }


    /* Sort by family */
    else
    {
    if ( strcmp(sort[j]->family, sort[j+1]->family) > 0 )
    {
    Phone* temp2 = sort[j];
    sort[j] = sort[j+1];
    sort[j+1] = temp2;
    }
    }
    }
    }

    /* Showing sorted list */
    char show[35];
    int index= 0;

    cout<<"\nName Phone "
    <<"\n----------------------------------- ------------" << endl;
    do
    {
    strcpy(show, "");
    strcat(show, sort[index]->family);
    strcat(show, ", ");
    strcat(show, sort[index]->name);
    show[0] = toupper(show[0]);
    cout << setiosflags( ios::left )
    << setw(36) << show << setw(12) <<sort[index]->tel <<endl;

    }while(sort[++index] != NULL);

    cout << endl;
    getch();
    return;
    }
    /*====================Menu1=======================*/
    void Menu1()
    {
    clrscr();
    cout << "1. Add new phone"
    <<"\n2. Search for name"
    <<"\n3. Search for number"
    <<"\n4. Sort by name"
    <<"\n5. Sort by family"
    <<"\n6. Show all list"
    <<"\n7. Save data"
    <<"\n9. Exit"
    <<"\n\nYour choice : ";
    }


    /*====================Menu2=======================*/
    void Menu2()
    {
    cout << "\n1. Find next"
    <<"\n2. Delete current person"
    <<"\n3. Edit current person"
    <<"\n4. continue" << endl
    <<"\nYour choice : ";
    }




    void Edit_current()
    {
    strcpy(current->name,"");
    strcpy(current->family,"");


    cout << "Enter the name : ";
    cin >> current->name;
    cout << "Family : ";
    cin >> current->family;
    cout << "Phone number : ";
    cin >> current->tel;


    clrscr();
    }
    /*====================End=========================*/

  3. این کاربر از mahdi2728 بخاطر این مطلب مفید تشکر کرده است


  4. #3
    در آغاز فعالیت
    تاريخ عضويت
    Dec 2011
    پست ها
    15

    پيش فرض

    مرسی دوست عزیز اما فک نکنم اینطوری باشه بدون این برنامه نمیشه با چند خط کد الگوریتم حذف اضافه در سی پلاس پلاس نمایش داد؟؟

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •