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

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

Войти
Регистрация
Восстановить пароль
 
 
Diserted
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 15
#1

Необходимо переделать функцию - C++

03.12.2012, 20:14. Просмотров 779. Ответов 28
Метки нет (Все метки)

Подскажите, пожалуйста, весь инет обгуглил, подобного не нашёл.

Есть такой код -

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
 #include <cstdlib>
 using namespace std;
 
 double &f(void)
 {
 static double a,b,c;
 return a;
 }
 
 int main()
 {
 
 cout << f() << ", ";
 f() = 23;
 f() = 12;
 cout << f() << ", ";
 cout << f() << ", ";
 f() = 2;
 f() = -5;
 cout << f() << '.';
 
 system("pause");
 return EXIT_SUCCESS;
 
 }
Условия - main{} не трогать.
Функция должна быть без параметров.
Сделать чтоб при
f() = 23;
a становилась 23
дальше при f() = 12;
b становилась 12
c соответственно 2 дальше, а потом заново - a -5

Вот так написать - double &f(void)
Я придумал методом перебора, как работает не понимаю, но компилируется хоть, мануалы читал - подобного не нашёл.
Как в таком случае присваивать значения стат. переменным внутри функции?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2012, 20:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Необходимо переделать функцию (C++):

Необходимо переделать программу,чтобы список формировался рандомными числами - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;string.h&gt; #include &lt;conio.h&gt; #include &lt;Windows.h&gt; #include &lt;locale&gt; #include...

необходимо переделать программу, чтобы вместо обычных массивов были динмические - C++
всем заранее спасибо :friends: # include &quot;iostream&quot; # include &lt;math.h&gt; # include &quot;iomanip&quot; # include &quot;strstream&quot; # include...

Нужно переделать функцию С++ - C++
Нужно переделать функцию, ну или решить через рекурсию. Задача состоит в том, что надо вывести все возможные индексы массива Рекурсией. я...

Переделать процедуру в функцию - C++
Доброго времени суток! Выполнил условие программы, но оформлена она должна быть в виде функции, но я никак не могу вернуть результат для...

Переделать функцию c указателем на int, на функцию с указателем на void - C++
Есть рабочий код qsort для int: void qsort(int *base, int n) { // Прекратить если количество элементов меньше либо равно единице....

Переделать функцию с помощью шаблонов - C++
оформить в виде шаблона функции,использующие эти шаблоны для типов int, float, double. #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; ...

28
Diserted
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 15
03.12.2012, 21:08  [ТС] #16
Цитата Сообщение от activnaya Посмотреть сообщение
да. Всё тяжело
я там само задание сверху написал, может вообще не в ту степь лезу?
0
activnaya
255 / 45 / 2
Регистрация: 24.11.2012
Сообщений: 466
03.12.2012, 21:11 #17
Цитата Сообщение от Diserted Посмотреть сообщение
я там само задание сверху написал, может вообще не в ту степь лезу?
в ту. Единственно что доставляет неудобство, так это неточность ТЗ, а именно: значения переменных гарантированно не равны прошлому среднему арифметическому. Это значит что надо выполнять проверки, а при первом вызове проверять как бы не с чем. Поэтому условимся что начальное среднее арифметическое равно 0 и при первом вызове ни одна из переменных не равна 0. Сейчас придумаем что-то.
0
Diserted
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 15
03.12.2012, 21:19  [ТС] #18
Цитата Сообщение от activnaya Посмотреть сообщение
в ту. Единственно что доставляет неудобство, так это неточность ТЗ, а именно: значения переменных гарантированно не равны прошлому среднему арифметическому. Это значит что надо выполнять проверки, а при первом вызове проверять как бы не с чем. Поэтому условимся что начальное среднее арифметическое равно 0 и при первом вызове ни одна из переменных не равна 0. Сейчас придумаем что-то.
да эт я сам напишу, мне главное чтоб статическим переменным значения передавались
в данный момент этого не происходит.
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
03.12.2012, 21:31 #19
Diserted, что значит не происходит? Во всех примерах данной темы это как раз и происходит. Вы или не поняли задания или не понимаете что происходит при f() = number;
0
Diserted
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 15
03.12.2012, 21:43  [ТС] #20
Цитата Сообщение от Toshkarik Посмотреть сообщение
Diserted, что значит не происходит? Во всех примерах данной темы это как раз и происходит. Вы или не поняли задания или не понимаете что происходит при f() = number;
Хм, давайте посмотрим.

Делаем

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 int &f()
{
    static int a = (int)f,b=0;
    return b;
}
 
int main()
{
f() = 11;
std::cout << f() << '\n';
return 0;
}
почему я на выходе получаю 11, если у меня return b, а не a?
0
Croessmah
Эксперт CЭксперт С++
13514 / 7673 / 867
Регистрация: 27.09.2012
Сообщений: 18,896
Записей в блоге: 3
Завершенные тесты: 1
03.12.2012, 21:48 #21
Цитата Сообщение от Diserted Посмотреть сообщение
почему я на выходе получаю 11, если у меня return b, а не a?
точно не понимаете что происходит. Я бы посоветовал подтянуть знания по функциям и ссылкам.
0
Diserted
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 15
03.12.2012, 21:51  [ТС] #22
Цитата Сообщение от Croessmah Посмотреть сообщение
точно не понимаете что происходит. Я бы посоветовал подтянуть знания по функциям и ссылкам.
да, я с самого начала писал что не понимаю, и прошу пример как это реализовать.
игде не видел ничего похожего.
0
Croessmah
Эксперт CЭксперт С++
13514 / 7673 / 867
Регистрация: 27.09.2012
Сообщений: 18,896
Записей в блоге: 3
Завершенные тесты: 1
03.12.2012, 21:52 #23
Цитата Сообщение от Diserted Посмотреть сообщение
да, я с самого начала писал что не понимаю, и прошу пример как это реализовать.
игде не видел ничего похожего.
Вы не понимаете как работают ссылки, а значит нужно открыть учебник, почитать, решить пару задач, пока на поймете, что материал усвоен и Вы понимаете с чем есть эти самые ссылки
0
Diserted
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 15
03.12.2012, 22:03  [ТС] #24
Цитата Сообщение от Croessmah Посмотреть сообщение
Вы не понимаете как работают ссылки, а значит нужно открыть учебник, почитать, решить пару задач, пока на поймете, что материал усвоен и Вы понимаете с чем есть эти самые ссылки
прочитал уже раз 5, не нашёл как это может мне помочь, и не нашёл подобных примеров.
Что именно смотреть?
0
Croessmah
Эксперт CЭксперт С++
13514 / 7673 / 867
Регистрация: 27.09.2012
Сообщений: 18,896
Записей в блоге: 3
Завершенные тесты: 1
03.12.2012, 22:09 #25
Цитата Сообщение от Diserted Посмотреть сообщение
Что именно смотреть?
Что-то на подобии "что такое ссылка", "возвращение ссылки", "работа с ссылками"
0
activnaya
255 / 45 / 2
Регистрация: 24.11.2012
Сообщений: 466
03.12.2012, 23:01 #26
вот что-то есть. Но не дотягивает.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
 
const double y = 3.;
const int cnt = 5;
 
double &f()
{
    static int count = cnt;
 
    static double a, b, c;
    static double mean;
 
    (--count > 3 ? a : --count > 1 ? b : c ) = (double)((int64_t)f);
    std::cout << count << '\n';
    std::cout << "a = " << a << '\n';
    std::cout << "b = " << b << '\n';
    std::cout << "c = " << c << '\n';
 
 
    return (count > 3 ? a : count > 1 ? b : count >= 0 ? c : (mean = (a + b + c)/y + (double)!(count = cnt) ));
}
 
int main()
{
    double x = 3;
    f() = x;
    x = 4;
    f() = x;
    x = 2;
    f() = x;
    std::cout << f() << '\n';
    
    return 0;
}
переписала. Но все равно не работает как надо.

Добавлено через 16 минут
ахахах))) решение такое простое. сейчас напишу.

Добавлено через 3 минуты
ой нет. я перепутала.
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
03.12.2012, 23:02 #27
Задание бессмысленное. Как может функция предоставлять доступ к среднему арифметическому?
0
activnaya
255 / 45 / 2
Регистрация: 24.11.2012
Сообщений: 466
03.12.2012, 23:10 #28
я все таки подозреваю что это должен быть метод класса, а не функция в понимании структурного программирования.

Добавлено через 42 секунды
Цитата Сообщение от Toshkarik Посмотреть сообщение
Как может функция предоставлять доступ к среднему арифметическому?
да. меня тоже очень взволновали эти требования.
0
Diserted
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 15
04.12.2012, 00:57  [ТС] #29
Жесть-то какая.
Ладно, всем спасибо за внимание, скажу девушке чтоб сказала преподу что не смогла, я сделал всё что мог

Добавлено через 1 час 33 минуты
И в итоге мне далти такое решение -

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <cstdlib>
using namespace std;
 
double &f()
{
static double var1 = 0, var2 = 0, var3 = 0; 
static double var4=0;
if (var4 != var1)
{
var4=(var1+var2+var3)/3;
var3=var2;
var2=var1;
var1=var4;
}
return var1;
}
int main()
{
cout << f() << endl;
f()=23;
f()=12;
cout<<f() << endl;
cout<<f()<<endl;
f()=2;
f()=-5;
cout<<f()<<endl;
system("pause");
return EXIT_SUCCESS;
}
Не понимаю как оно работает, но работает.
0
04.12.2012, 00:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2012, 00:57
Привет! Вот еще темы с ответами:

Нужно из массива переделать в функцию - C++
Добрый день господа программисты, помогите переделать из массива в функцию, потому как преподаватель сказал, что массив не оправдан=) ...

Как переделать через функцию?( - C++
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;string&gt; /*Составить и проверить функцию, которая переставляет цифры заданного целого...

Перегруженную функцию переделать в виртуальную - C++
Сам как не знаю сделать пожалуйста помогите)) Есть перегруженная функция, нужно сделать из нее виртуальную функцию. Даже не обязательно из...

Переделать кусок программы в функцию - C++
Здравствуйте. Нужно написать программу, для умножения двух матриц. Грубо говоря матрица A умножается на матрицу B и их результат помещается...


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

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

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