1. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

Help!

Тема в разделе "Вопросы новичков и не только", создана пользователем Orion4ik, 15 окт 2010.

  1. Orion4ik

    Orion4ik Гость

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

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

    DarkKnight Well-Known Member

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

    Код:
    #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

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

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

    Код:
    #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 Гость

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

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

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

    Orion4ik Гость

    Репутация:
    0
    вот файл СФС:
     
Загрузка...

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