Форум программистов, компьютерный форум CyberForum.ru

возведение в степень - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Задачка. массив указателей на одномерный массив http://www.cyberforum.ru/cpp-beginners/thread1038970.html
Привет всем. Помогите, пожалуйста. Два дня мучился, писал, оказалось, что писал совсем не то, что нужно. Исходное задание такое: Создайте массив указателей на одномерный массив, содержащий 9 элементов целого типа (элементы массива вводятся пользователем). Выведите на экран адрес каждого четного элемента. Выведете на экран значение элемента, индекс которого меньше индекса, введенного...
C++ Почему не сортирует Дан массив из N целых чисел. Получить из него массив отрицательных чисел и отсортировать его по возрастанию методом выбора //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused #include<iostream.h> #define n 8 http://www.cyberforum.ru/cpp-beginners/thread1038969.html
Какой ответ получим после запуска следующей программы C++
Какой ответ получим после запуска следующей программы( пожалуйста не работает с++) : #include"stdafx.h" #include<iostream> Using namespace std; int main() { int x,y; x=1; y=50; y=y%x-89;
Ввести с клавиатуры целое число N. Используя рекурсию распечатать сначала последовательность, состоящую из N букв 'А', а затем из N букв 'В' C++
Помогите пожалуйста
C++ Создать указатель на структуру http://www.cyberforum.ru/cpp-beginners/thread1038953.html
Информация об участниках спортивных соревнований содержит название страны, название команды, ФИО игрока, игровой номер, возраст, рост и вес. Реализовать функцию Sort для сортировки списка спортсменов методом «вставки» по возрасту и функцию Display для вывода данных о спортсменах. Тип возвращаемых значений определить самостоятельно. #include "stdafx.h" #include <iostream> #include <string>...
C++ двумерный массив дан двумерный массив(n*m). вывести все НЕ повторяющиеся элементы. не использую другии массивы. просто, сразу из двумерного подробнее

Показать сообщение отдельно
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,039
13.12.2013, 10:08     возведение в степень
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
long int pow(long int a, long int k){
* * return pow(a,k);
}
попробуй словами описать что делает эта функция
Цитата Сообщение от genaryok Посмотреть сообщение
Функция возведения числа в степень на основе его двоичного представления.
а что числа в компьютере лежат не в двоичном формате?
Цитата Сообщение от genaryok Посмотреть сообщение
Проверьте, если не верите.
проверяем
32
простой способ
3*3 одно действие 6-12 тактов процессора
твой алгоритм
Цитата Сообщение от genaryok Посмотреть сообщение
while *(n != 0)
3!=0 истина ветвление
Цитата Сообщение от genaryok Посмотреть сообщение
if (n % 2 == 1)
3%2=1 деление с остатком 40 тактов ( здесь правда это будет 3&1 один такт) плюс ветвление
Цитата Сообщение от genaryok Посмотреть сообщение
r=r*x;
1*3 r=3умножение 6-12 тактов процессора
Цитата Сообщение от genaryok Посмотреть сообщение
x=x*x;
3*3 x=9 умножение 6-12 тактов процессора
Цитата Сообщение от genaryok Посмотреть сообщение
n=n / 2;
3/2=1 n=1 деление около 40 тактов( здесь правда будет сдвиг 1 такт)
Цитата Сообщение от genaryok Посмотреть сообщение
while *(n != 0)
1!=0 истина ветвление
Цитата Сообщение от genaryok Посмотреть сообщение
if (n % 2 == 1)
1%2=1 деление с остатком 40 тактов ( здесь правда это будет 1&1 один такт) плюс ветвление
Цитата Сообщение от genaryok Посмотреть сообщение
r=r*x;
3*9 r= 27 умножение 6-12 тактов процессора
Цитата Сообщение от genaryok Посмотреть сообщение
x=x*x;
9*9 x=81 умножение 6-12 тактов процессора
Цитата Сообщение от genaryok Посмотреть сообщение
n=n / 2;
1/2=0 деление около 40 тактов( здесь правда будет сдвиг 1 такт)
Цитата Сообщение от genaryok Посмотреть сообщение
while *(n != 0)
0!=0 ложь -выход ветвление

итого гораздо медленней
плюс неправильный результат
может на больших числах и будет выигрыш, если подправишь свой алгоритм
и заменишь n=n / 2; на сдвиг вправо
а n % 2 на n&0x01
не все компиляторы деление на степень двойки переводят в сдвиг
 
Текущее время: 19:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru