Help!

Тема в разделе "C/C++/C#", создана пользователем Orion4ik, 15 окт 2010.

  1. Orion4ik

    Orion4ik Гость

    Мне надо сдать лабу в понедельник а я чуть чуть не понимаю C++... Вообщем помогите пожалуйста чем сможете!
    Вот задания:

    1) Оформить в виде подпрограммы (функции) код двоичного возведения в степень. Написать программу, вызывающую эту функцию.
    2) Набрать и отладить код примера использования функций qsort и bsearch для сортировки целочисленного массива и дальнейшего поиска элементов в этом отсортированном массиве из файла СФС. Оформить его в виде подпрограммы (функции). Написать программу, вызывающую эту функцию.
    3) Оформить набранные ранее функции из файла ОМ в виде продпрограмм и написать их вызывающие программы.
     
  2. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    1) Оформить в виде подпрограммы (функции) код двоичного возведения в степень. Написать программу, вызывающую эту функцию.

    Код (C++):
    #include <iostream>

    //Функция бинарного возведения в степень n^m, по принципу представление степени n^m
    int power(int n, int m) {
    int res = 1; //У нас произведение поэтому начинаем с 1 (или n^0 = 1)
    while (m) { //Пока возможен битовый сдвиг m
    if (m & 1) {res *= n;} // используя коньюнцию определим нечетность m, если нечетная домножим на основание n
    n *= n; //Присвоим значению основания его квадрат
    m >>= 1; //Осуществляем бинарный сдвиг m на 1 бит
    }
    return res; //Вернем результат
    }

    void main(void)
    {
    int x, y; //x-основание, y - степень
    std::cout<<"Input X: ";
    std::cin>>x;

    std::cout<<std::endl<<"Input Y: ";
    std::cin>>y;

    std::cout<<std::endl<<"Result: "<<power(x,y);
    }
     
  3. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    А это твои пункты 2-3, если честно не совсем понимаю
    Они как бы сами по себе функции, на кой черт их вообще инкапсулировать в другие, тут же про никакой интерфейс меню или прочее не сказанно.

    И еще раз :)) Вообще какая то охинея :)
    тут как то что то такое что ли выйти должно?
    void Sort1 (int *Arr, int SizeArr)
    {
    qsort(......);
    }
    void Sort2 (int *Arr, int SizeArr)
    {
    Sort1 (Arr,SizeArr);
    }
    :))))))))
    Там с поиском еще ладно))) Там можно параметром сделать значение, но с этим просто не понимаю :)

    Код (C++):
    #include <iostream>
    using namespace std;

    //Функция для qsort(Быстрой сортировки массива), из параметров указатели без типа на 2 рядом стоящих элемента
    int compare (const void * a, const void * b)
    {
    return ( *(int*)a - *(int*)b ); // Если a>b - вернуть >0, если a<b <0, исходя из этого функция qsort делает перестановку
    // по методу пузырька
    // а если a = b, вернет 0, имеено из этого я и не определяю 2 функции для алгоритмов qsort и bsearch - сгодить толька эта функция
    }

    void PrintArr(int *Arr, int SizeArr) // Функция вывода массива, из параметров, Arr - указатель на массив (точнее на его первый элемент), и размер самого массива
    //в Элементах (количество элементов)
    {
    for (int i = 0; i<SizeArr;i++) //Обходим весь массив и выводим на экран его элементы
    {
    cout<< Arr[i]<<'\t';
    }
    }

    void main(void)
    {
    int Arr[] = {4,5,6,32,-12,5}; //Наш искомый массив... Впринципи его можно определять как угодно, хоть динамически хоть статически

    int SizeArray = sizeof(Arr)/sizeof(int); //Запишим в переменную размер массива принцип определения массива в дин. массиве очень прост
    //Размер массива в байтах делим на размер одного элемента в байтах (в нашем случае размер массива
    //24 байта, а размер элемента int =2 байта

    cout<<"Befor qsort :"<<endl;
    PrintArr (Arr,SizeArray); //Выведим массив до сортировки

    qsort(Arr,SizeArray,sizeof(int),compare); //Отсортируем его функцией qsort

    cout<<endl<<"After qsort :"<<endl;
    PrintArr (Arr,SizeArray); //Выведим массив после сортировки

    int key; //Переменная для значения элемента который мы будем искать
    cout<<endl<<"Input value element in Search : ";
    cin>>key; //Введем значение для поиска

    if ((int*) bsearch (&key, Arr, SizeArray, sizeof (int),compare)) //Функция вернет указатель на элемент чье значение соответсвует введенному
    {                                                               //Или вернет NULL, если такого значения в массиве нет
    cout<<"Elements "<<key<<" found in Array";
    }
    else cout<<"Elements "<<key<<" NOT found in Array";

    }
     
  4. Orion4ik

    Orion4ik Гость

    За первое очень благодарен насчёт второго и 3 узнаю...

    Добавлено: ах да вот + =)

    Добавлено: =( неставится
     
  5. Orion4ik

    Orion4ik Гость

    вот файл СФС:
     
Загрузка...

Поделиться этой страницей