1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

سورس های نوشته شده به زبان C و ++C

شروع موضوع توسط hector2141 ‏28/9/12 در انجمن C #C++

  1. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,318
    تشکر شده:
    2,702
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : سورس های نوشته شده به زبان C و ++C

    جمع عناصر روی قطر اصلی ماتریس n در n


    کد:

    #include <iostream.h>
    #include <conio.h>

    main()
    {
    int A[10][10],n, i ,j,sum;
    cout<<"tedad Rows ? ";
    cin>>n;

    for(i=0;i<n;i++)
    for(j=0;j<n;j++)
    cout<<A[j];

    for(i=0,j=0;i<n;i++,j++)
    sum+=A[j];

    cout<<"sum : "<<sum;

    }
     
  2. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,318
    تشکر شده:
    2,702
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : سورس های نوشته شده به زبان C و ++C

    این پروژه یک دفترچه تلفن با امکان ثبت و جستجو ، ویرایش ، مرتب سازی و ذخیره اطلاعات در فایل می باشد

    قابلیت ها:
    1- امکان افزودن شماره جدید
    2- امکان جستجو بر اساس نام
    3- امکان جستجو بر اساس شماره
    4- مرتب سازی بر اساس نام یا نام خانوادگی
    5- نمایش کل اطلاعات دفترچه تلفن
    6- ذخیره سازی اطلاعات در فایل

    کد:

    #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=========================*/