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

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

Восстановить пароль Регистрация
 
ulian
0 / 0 / 0
Регистрация: 28.11.2012
Сообщений: 53
28.11.2012, 02:43     Нужно с помощью показателей большее, меньше, и среднее арифметическое двух чисел, которые генерируются компьютером. #1
Нужно с помощью показателей большее, меньше, и среднее арифметическое двух чисел, которые генерируются компьютером. Буду очень благодарен за помощь.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2012, 02:43     Нужно с помощью показателей большее, меньше, и среднее арифметическое двух чисел, которые генерируются компьютером.
Посмотрите здесь:

среднее арифметическое двух чисел. C++
Найти среднее арифметическое двух чисел C++
C++ Найти среднее арифметическое и геометрическое двух чисел
Если сумма двух чисел меньше 1, то большее из чисел заменить их произведением C++
C++ Нужно найти сколько всего чисел и среднее арифметическое чисел максимального и минимального
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
28.11.2012, 05:19     Нужно с помощью показателей большее, меньше, и среднее арифметическое двух чисел, которые генерируются компьютером. #2
ЧАВО?
... показателей
...это как-то связано со степенями?

Не по теме:

если б у меня чего-то горело, я б уделил несколько больше времени осознанию, что от меня вообще требуется тушить.

ulian
0 / 0 / 0
Регистрация: 28.11.2012
Сообщений: 53
28.11.2012, 21:29  [ТС]     Нужно с помощью показателей большее, меньше, и среднее арифметическое двух чисел, которые генерируются компьютером. #3
Я наверное не так перевел, на украинском "покажчики", (*а) и так далее

Добавлено через 6 минут
Извините, указатели, а не показатели. Указатели
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.11.2012, 21:39     Нужно с помощью показателей большее, меньше, и среднее арифметическое двух чисел, которые генерируются компьютером. #4
Что с помощью указателей сделать?
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
28.11.2012, 21:47     Нужно с помощью показателей большее, меньше, и среднее арифметическое двух чисел, которые генерируются компьютером. #5
По мне, указатели здесь как телеге пятое колесо. Но раз уж требуют, то...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void find_less_and_medium(const int a, const int b, int* less, float* average){
  *less=(a<b)?a:b;
  *average=(a+b)/2.0;
}
int main(){
 int x, y;
 int least;
 float medium;
 srand(time(NULL));
 printf("2 random numbers are %d and %d\n", x=rand()%100, y=rand()%100);
 find_less_and_medium(x, y, &least, &medium);
 printf("least number is %d, average is %f\n", least, medium);
 getchar();
return 0;
}
ulian
0 / 0 / 0
Регистрация: 28.11.2012
Сообщений: 53
29.11.2012, 00:00  [ТС]     Нужно с помощью показателей большее, меньше, и среднее арифметическое двух чисел, которые генерируются компьютером. #6
Спасибо большое!!! безмерно благодарен!!!

Добавлено через 45 минут
У меня еще есть вопрос: Есть задание реализовать генератор псевдослучайныйх чисел(Vi) на основе рекурентного соотношения Vi=(V1*a+V2*b+C)%m, где а,b,c,m - переменные, которые вводятся с клавиатуры, V1,V2 - задаются случайно.

вот код, но у меня эрорит, без рекурсии все работает, но задание с рекурсией. Кто сможет - укажите на ошибки.

#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
float random (float v1,float v2)
{
int v;
int a=1,b=2,c=3,m=10;
v=(int)(a*v1+b*v2+c)%m;
for (int i=1;i<=100;i++)
{
random(v2,v);
}
return v;
}
int main()
{
int n;
//int a,b,c,m;
//cout<<"Input v1 v2 a b c m"<<endl;
//cin>>v1>>v2>>a>>b>>c>>m;
cout<<"Vesti kolichestvo(<100):";
cin>>n;
random(rand()%100,rand()%100);
system("pause");
}
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
29.11.2012, 00:55     Нужно с помощью показателей большее, меньше, и среднее арифметическое двух чисел, которые генерируются компьютером. #7
Цитата Сообщение от ulian Посмотреть сообщение
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
float random (float v1,float v2)
{
int v;
int a=1,b=2,c=3,m=10;
v=(int)(a*v1+b*v2+c)%m;
for (int i=1;i<=100;i++)
{
random(v2,v);
}
return v;
}
int main()
{
int n;
//int a,b,c,m;
//cout<<"Input v1 v2 a b c m"<<endl;
//cin>>v1>>v2>>a>>b>>c>>m;
cout<<"Vesti kolichestvo(<100):";
cin>>n;
random(rand()%100,rand()%100);
system("pause");
}
Эта программа не имеет смысла. Всё что она делает - это вычисляет (a*v1+b*v2+c)%m;
То, что в цикле вызывается функция, никак не влияет на числа v и v2
ulian
0 / 0 / 0
Регистрация: 28.11.2012
Сообщений: 53
29.11.2012, 00:59  [ТС]     Нужно с помощью показателей большее, меньше, и среднее арифметическое двух чисел, которые генерируются компьютером. #8
поместил вычисление v=(int)(a*v1+b*v2+c)%m; в сам цикл for (int i=1;i<=100;i++)
{
v=(int)(a*v1+b*v2+c)%m;
random(v2,v);
}
ошибки те же.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
29.11.2012, 01:05     Нужно с помощью показателей большее, меньше, и среднее арифметическое двух чисел, которые генерируются компьютером. #9
1) какие ошибки?
2) результат не изменится.
это вычисляет (a*v1+b*v2+c)%m; и это число не меняется в цикле
ulian
0 / 0 / 0
Регистрация: 28.11.2012
Сообщений: 53
29.11.2012, 01:10  [ТС]     Нужно с помощью показателей большее, меньше, и среднее арифметическое двух чисел, которые генерируются компьютером. #10
а если так?
for (int i=1;i<=100;i++)
{
v=(int)(a*i+b*i+c)%m;
random(v2,v);
}

ошибка - Unhandled exception at 0x00391499 in laba5.exe: 0xC00000FD: Stack overflow. Она вылетает при любом варианте вычислений.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
29.11.2012, 01:12     Нужно с помощью показателей большее, меньше, и среднее арифметическое двух чисел, которые генерируются компьютером. #11
я не понимаю, что ты хочешь сделать. Где ты взял эту формулу, поэтому не говорю конкретный ответ.
Я даже не сразу заметил, что у тебя тут тупо бесконечная рекурсия.!!
В каждом вызове random (), функция random () вызывается снова без каких либо условий и так бесконечное число раз, пока не закончится память в стеке.
Сколько раз должна вызываться random()? Покажи, дай мне ссылку, откуда ты взял этот алгоритм.
ulian
0 / 0 / 0
Регистрация: 28.11.2012
Сообщений: 53
29.11.2012, 01:17  [ТС]     Нужно с помощью показателей большее, меньше, и среднее арифметическое двух чисел, которые генерируются компьютером. #12
формула задана условием задачи. а бесконечную рекурсию я хотел остановить вызовом функции random(rand()%100,rand()%100) 100 ограничение.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
29.11.2012, 01:23     Нужно с помощью показателей большее, меньше, и среднее арифметическое двух чисел, которые генерируются компьютером. #13
ты просто не понимаешь, что такое рекурсия, поэтому смешиваешь её с итерациями.

Подсказка: у тебя по ходу программы i не превышает единицы, а уж до сотни тем более никогда не дойдёт.
но при этом сама функция всё равно вызывается ДОФИГИЩА раз, пока не заполнит всю память в стеке.
ulian
0 / 0 / 0
Регистрация: 28.11.2012
Сообщений: 53
29.11.2012, 01:30  [ТС]     Нужно с помощью показателей большее, меньше, и среднее арифметическое двух чисел, которые генерируются компьютером. #14
возможно, пробовал без рекурсии - все отлично

#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <time.h>

using namespace std;


int main()
{
int v,v1,v2;
int f2,f1,n;int a; int b; int c; int m;


cout<<"Input v1 v2 a b c m"<<endl;
cin>>v1>>v2>>a>>b>>c>>m;
cout<<"Vesti n:";
cin>>n;
f1=v1;
f2=v2;
for (int i=1;i<=n;i++)
{
v=(a*f1+b*f2+c)%m;
f1=f2;
f2=v;
cout<<" "<<v<<endl;
}


system("pause");
}

а как тогда сюда рекурсию втулить я не пойму
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
29.11.2012, 01:44     Нужно с помощью показателей большее, меньше, и среднее арифметическое двух чисел, которые генерируются компьютером. #15
Я заметил, некоторым людям очень сложно объяснить рекурсию. Я читал книги и скажу, что это даже многие авторы литературы замечают насчёт своих учеников.

Предлагаю такую аналогию того, что за ошибка происходит.
Представь, что твоя функция это веб-страница в браузере. Ты хочешь её прочитать полностью.
Ты открываешь её и видишь на ней колонку из 100 текстовых ссылок.
Ты щёлкаешь первую ссылку и в новом окне поверх старого открывается новая страница по тому же самому адресу
(все ссылки ведут сами на себя, на этот сайт, только открывается он в новом окне)
Итак, ты смотришь в новое окно, видишь колонку из 100 ссылок, щёлкаешь первую и...
открывается новое окно... и.т.д.
Видишь! В результате ты так и не прощёлкаешь не то что ссылку на сотой строчке, но даже до второй не дойдёшь!
Ты будешь открывать новые окна, бесконечно
Не совсем бесконечно, а пока это не вызовет какую-то неполадку в браузере или в системе, например закончится память.
По аналогии с этим у тебя и вываливается ошибка stack overflow!!!

Добавлено через 7 минут
Цитата Сообщение от ulian Посмотреть сообщение
а как тогда сюда рекурсию втулить я не пойму
а это , счас сделаю, но ты понял как работала твоя неверная рекурсия?
ulian
0 / 0 / 0
Регистрация: 28.11.2012
Сообщений: 53
29.11.2012, 02:01  [ТС]     Нужно с помощью показателей большее, меньше, и среднее арифметическое двух чисел, которые генерируются компьютером. #16
да я понял ошибку с бесконечностью, пример с веб-страницой объяснил)
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
29.11.2012, 03:14     Нужно с помощью показателей большее, меньше, и среднее арифметическое двух чисел, которые генерируются компьютером. #17
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>
using namespace std;
int a, b, c, m;
int v1,v2;
int random (int Glubina=100){
    static int prepre;
    int pre, result;
    if (Glubina==2){
        prepre=v1;
        result=v2;
    }
    else{
        pre=random(Glubina-1);
        result=(a*prepre+b*pre+c)%m;
        prepre=pre;
    }
    cout<<" "<<result<<endl;// можно убрать вывод, если интересует лишь последнее число.
    return result;
}
int main()
{
    int f2,f1,n;
    cout<<"Input v1 v2 a b c m"<<endl;  
    cin>>v1>>v2>>a>>b>>c>>m;
    cout<<"Vesti n:";
    cin>>n;
    random(n);
    system("pause");
    return 0;
}
ulian
0 / 0 / 0
Регистрация: 28.11.2012
Сообщений: 53
29.11.2012, 17:44  [ТС]     Нужно с помощью показателей большее, меньше, и среднее арифметическое двух чисел, которые генерируются компьютером. #18
спасибо большое, я даже не знаю как благодарить. Только у меня 1 вопрос по коду - переменная "Glubina" что значит?
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
29.11.2012, 18:00     Нужно с помощью показателей большее, меньше, и среднее арифметическое двух чисел, которые генерируются компьютером. #19
Это глубина рекурсии. Именно тот параметр, который говорит нам "больше 100 окон не открывать",
вызывая каждый раз рекурсивно функцию, мы передаём ей на 1 меньше глубину чем было. А она в свою очередь проверяет, если глубина уменьшилась до 2, больше не открывать окон, а возвращать результат v2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2012, 18:56     Нужно с помощью показателей большее, меньше, и среднее арифметическое двух чисел, которые генерируются компьютером.
Еще ссылки по теме:

C++ среднее арифметическое кубов двух данных чисел
В массиве из целых чисел найти среднее арифметическое тех чисел, которые начинаются с цифры 5 C++
C++ Вычислить среднее арифметическое последовательности чисел, которые вводятся с клавиатуры

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

Или воспользуйтесь поиском по форуму:
ulian
0 / 0 / 0
Регистрация: 28.11.2012
Сообщений: 53
29.11.2012, 18:56  [ТС]     Нужно с помощью показателей большее, меньше, и среднее арифметическое двух чисел, которые генерируются компьютером. #20
спасибо большое, моя аттестация спасена)
Yandex
Объявления
29.11.2012, 18:56     Нужно с помощью показателей большее, меньше, и среднее арифметическое двух чисел, которые генерируются компьютером.
Ответ Создать тему
Опции темы

Текущее время: 00:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru