Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.69
fluxx
4 / 4 / 1
Регистрация: 31.03.2011
Сообщений: 34
#1

функция square() - C++

06.06.2011, 20:09. Просмотров 4514. Ответов 10
Метки нет (Все метки)

реализовать функцию square() методом повторного сложения (т.е. не используя оператор умножения)


спасибо)

Добавлено через 48 минут
помогите плиз
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2011, 20:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос функция square() (C++):

Класс SQUARE (квадрат) - C++
Создайте класс SQUARE (квадрат). Класс имеет атрибут length. Он имеет функции, которые вычисляют площадь и периметр квадрата. Он также...

Пробема с функцией square - C++
не могу скомпилировать таблицу квадратов от 1 до 100 напишите что не так и как правильно.(учу c++ по книжке страуструпа) сначала...

Ошибка - square не найден - C++
// Perviy_cikl.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include...

ошибка square root - C++
Вообщем переделал программу, которая считает методом Гаусса-Зейделя #include "stdafx.h" #include <math.h> // Матрица порядка 3x3 ...

Вопрос про функцию square в классе Rect - C++
Скажите пожалуйста, что данная функция делает? очень надо, подскажите кто знает

Описать тип struct Square, задающий на плоскости замкнутый квадрат с центром в точке (x, y) - C++
Описать тип struct Square, задающий на плоскости замкнутый квадрат с центром в точке (x, y), длиной стороны a и сторонами,...

10
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
06.06.2011, 20:31 #2
А можно поподробнее, что должна делать эта функция? Точнее, какие аргументы она должна принимать, и что возвращать.
0
fluxx
4 / 4 / 1
Регистрация: 31.03.2011
Сообщений: 34
06.06.2011, 20:39  [ТС] #3
она должна возводить в квадрат числа от 1 до 10 , вывести на экран

1 1
2 4
3 9
4 16
...
10 100
0
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
06.06.2011, 20:56 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
int mult(int a,int b){
    int temp=a;
    while (--b)
        a+=temp;
    return a;
}
int square(int n){
    return mult(n,n);
}
int main(){
    for (int i=1; i < 11;i++)
        std::cout << i << ' ' << square(i) << std::endl;
    return 0;
}
1
Anton223
23.04.2012, 23:13 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
    using namespace std;
 
int square (int x)
{
    int k=0;
    for (int i=0;i<x;++i)
    k+=x;
    return k;
}
 
 
int main()
{
    for (int i=1; i<=100; i++ )
        cout << i << " " << square(i) << endl;
}
upiter789
0 / 0 / 0
Регистрация: 04.12.2015
Сообщений: 1
04.12.2015, 17:20 #6
Цитата Сообщение от Anton223 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
    using namespace std;
 
int square (int x)
{
    int k=0;
    for (int i=0;i<x;++i)
    k+=x;
    return k;
}
 
 
int main()
{
    for (int i=1; i<=100; i++ )
        cout << i << " " << square(i) << endl;
}
Объясните мне, пожалуйста, как работает цикл в int square.
Какое значение изначально присвоено х? Где участвует i?
Я только начинаю изучать С++ и, вроде бы, программа не сложная, но сам разобраться не могу.
0
DOLINSKYI
0 / 0 / 0
Регистрация: 16.08.2015
Сообщений: 28
23.03.2017, 02:16 #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//Программа возводит в квадрат числа от 0-99 и выводит на экран.
#include <locale>
#include <std_lib_facilities.h>
int square(int x) { //Функция square, каторая использует только оператор сложения.
    int c = 0;
    for (int y = 1; y <= x; ++y) {
        c += x;
    }
    return c;
}
 
int main()
{
    std::locale::global(std::locale("")); //Выводит кирилицу.
    for (int i = 0; i < 100; ++i) {
        cout << i << '\t' << square(i) << '\n';
    }
    system("pause");
    return 0;
 
}
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3945 / 2169 / 553
Регистрация: 18.10.2014
Сообщений: 3,783
23.03.2017, 04:01 #8
Цитата Сообщение от fluxx Посмотреть сообщение
функцию square() методом повторного сложения (т.е. не используя оператор умножения)
Не совсем понятно, что является "повторным сложением", а что нет.

Реализовать степень через сложение можно по той же схеме, по которой реализуется возведение в степень через умножение: Создать функцию вычисления степени числа с показателем (без использования функции pow)

То есть если нам надо вычислить произведение a*b и мы знаем разложение множителя b в сумму степеней двойки b = b1+b2+...+bk, то a*b = a*b1+a*b2+...+a*bk и каждое слагаемое в этой сумме легко вычислимо через последовательные операции сложения a с самим собой a+=a.

Получаем такую функцию вычисления квадрата через сложение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
unsigned square(unsigned x)
{
  unsigned s = 0;
  
  for (unsigned add = x; x != 0; add += add, x >>= 1)
    if ((x & 1) != 0)
      s += add;
      
  return s;
}
 
int main()
{
  std::cout << square(123) << std::endl;
}
Цикл при этом выполняет не x итераций, как в "наивном" методе, а только примерно log2 x итераций.

Это является "повторным сложением" или нет?
0
_Ivana
3185 / 1801 / 153
Регистрация: 01.03.2013
Сообщений: 5,030
Записей в блоге: 3
23.03.2017, 04:14 #9
Ну да, именно так.
C++
1
2
3
4
5
unsigned d(unsigned x) { return x + x; }
 
unsigned go(unsigned x, unsigned y) { return !y ? 0 : d(go(x,y>>1)) + (y&1 ? x : 0); }
 
unsigned square(unsigned x) { return go(x,x); }
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3945 / 2169 / 553
Регистрация: 18.10.2014
Сообщений: 3,783
23.03.2017, 04:15 #10
Delete
0
_Ivana
3185 / 1801 / 153
Регистрация: 01.03.2013
Сообщений: 5,030
Записей в блоге: 3
23.03.2017, 04:23 #11
Ну или чуть поварьировав
C++
1
2
3
4
5
typedef const unsigned cu_t; 
 
cu_t go(cu_t x, cu_t y) { return !y ? 0 : (go(x,y>>1)<<1) + (y&1 ? x : 0); }
 
cu_t square(cu_t x) { return go(x,x); }
1
23.03.2017, 04:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2017, 04:23
Привет! Вот еще темы с ответами:

Square Head на прямоугольном поле - C++
Народ! Помогите пожалуйста. Есть 4 задачи на выбор, нужно решить любую! Не скрою, C++, знаю плоховато, а задачу надо сдать сегодня. Кому не...

Floating Point:Square Root of Negative Number - C++
После запуска программы в Borland C++ вылезает следующая ошибка Floating Point:Square Root of Negative Number. В чем причина и как ее...

Перегрузка операций: friend-функция или функция-член класса - C++
Здравствуйте, меня интересует вопрос, в чем разница при перегрузке операторов через operator и friend. Вот к примеру такой код. class...

Функция удаления текста в скобках [2], непосредственно функция + 12кб вложений - C++
Доброго времени суток, случилось так, что пришлось работать с с-строками (лаба, угу), в которой нужно удалить весь текст в скобках,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru