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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
DanielDefo
5 / 5 / 0
Регистрация: 13.09.2009
Сообщений: 225
#1

Вызов функции - C++

17.06.2010, 13:56. Просмотров 1937. Ответов 34
Метки нет (Все метки)

Помогите пожалуйста решить завтра зачет, а задачу не могу решить последнюю.
Составить программу формирования элементов массивов Х, У и упорядочивания их в порядке убывания значений элементов и вывода максимальных элементов, если
Вызов функции
буду очень благодарен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.06.2010, 13:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вызов функции (C++):

Вызов функции внутри другой функции с передачей локальной переменной по ссылке - C++
Столкнулся с очень с интересной проблемой. Можно ли так делать? #include <iostream> using std::cout; void f(const int &ref){...

Вызов родовой функции (нужно передать массив в качестве аргумента функции через указатель) - C++
#include <iostream> using namespace std; template <class T1> class mas { public: T1 n; T1 a; void input() ...

Вызов функции в возврате значения функции - C++
Есть функция: int function1(a) { ...... return function2(function1(b),function1(c)); } Как работает такая хитрая система?

Вызов функции в параметре другой функции - C++
программа: #include <iostream> using namespace std; struct E { E() {} }; void f(const E& e)

вызов функции из под функции - C++
Добрый вечер. Такая ситуация: есть функция, назовем ее MainThreadFunc. Как можно сделать так, чтобы любая другая функция, которую я напишу,...

Вызов функции в C++ - C++
есть циклический вызов функции: for (int i=0; i<start; i++) { if (classicZOT())...

34
mrMRak
38 / 38 / 3
Регистрация: 02.06.2010
Сообщений: 105
19.06.2010, 01:15 #16
создайте пустой проэкт - консольный. добавтье код - только #include "stdafx.h" не удалите)
запуск - f5 - Дебаг+запуск

Добавлено через 44 секунды
а насчет проверки - вы предлагаете мне сидеть с листочком и считать сумму этих рядов?)
1
schdub
2952 / 1297 / 239
Регистрация: 19.01.2009
Сообщений: 3,411
Завершенные тесты: 1
19.06.2010, 01:20 #17
Цитата Сообщение от mrMRak Посмотреть сообщение
что за заголовок algorithm?
это хидер стандартных алгоритмов библиотеки STL
http://www.cppreference.com/wiki/stl/algorithm/start
1
DanielDefo
5 / 5 / 0
Регистрация: 13.09.2009
Сообщений: 225
19.06.2010, 01:21  [ТС] #18
не решать, а в общем ) выдает хоть то что должно выдавать?
0
schdub
2952 / 1297 / 239
Регистрация: 19.01.2009
Сообщений: 3,411
Завершенные тесты: 1
19.06.2010, 01:23 #19
И вообще, если юзаете в проге STL, то никаких функций из старой С-шной библотеки (типа printf() и т.д.): хз, какой препод примет такой код?
1
DanielDefo
5 / 5 / 0
Регистрация: 13.09.2009
Сообщений: 225
19.06.2010, 01:24  [ТС] #20
тоесть поменять на cout и cin ?
0
schdub
2952 / 1297 / 239
Регистрация: 19.01.2009
Сообщений: 3,411
Завершенные тесты: 1
19.06.2010, 01:28 #21
Тут вообще нужно для начала определиться на каком языке Вам нужно, а бещеный микс старого С и STL это нонсенс имхо. Можно STL использовать?
1
DanielDefo
5 / 5 / 0
Регистрация: 13.09.2009
Сообщений: 225
19.06.2010, 01:30  [ТС] #22
меня смущает то что в условии дано что m,l,e - вводимые данные, а в самой программе нужно воодить n. Оно так и нужно?

Добавлено через 1 минуту
может кто пожалуйста выложить скриншот результата программы? и если можно exe-шник.
0
schdub
2952 / 1297 / 239
Регистрация: 19.01.2009
Сообщений: 3,411
Завершенные тесты: 1
19.06.2010, 01:43 #23
Цитата Сообщение от DanielDefo Посмотреть сообщение
меня смущает то что в условии дано что m,l,e - вводимые данные, а в самой программе нужно воодить n. Оно так и нужно?
нет конечно это в корне не верно, в коде проги они перебиваются нулями
C++
1
m=1=e=0;
1
mrMRak
38 / 38 / 3
Регистрация: 02.06.2010
Сообщений: 105
19.06.2010, 02:07 #24
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include<math.h>
#include<iostream>
using namespace std;
long m,l,e,n=0;// глобальные переменные.
unsigned long fact(unsigned long n)// поиск факториала числа
{
    if(n<=1)
        return 1;
    return n*fact(n-1);
}
long alpha(long x)      {return(x*x+m*m*x);}            //уравнение альфа от Х
long beta(long x)       {return(x+21*alpha(x));}        //уравнение бета  от Х
long long_fact(long k, long p)  {return fact(3*k)/fact(2*k+p);}     //это кусок вашего вычисления там где (3k)!/(2k+p)!
 
long sum1(int k)// сумма для Х  по к(длинное произведение)
{
    long result=0;
    for(long p=k;p<=n;p++)
    {
        result+=long_fact(k,p)*pow((float)e,(k-p))*alpha(k-2*p);
    }
    return result;
}
long sum2(int k)//сумма для Y по к(длинное произведение)
{
    long result=0;
    for(long p=k;p<=n;p++)
    {
    result+=long_fact(k,p)*pow((float)(1+e),(k+p))*pow((float)l,p)*alpha(k+2*p);
    }
return result;
}
void main ()
{
    cout<<"Enter m,l,e \n";
 
    cin>>m>>l>>e;
    cout<<"Enter n>0 \n";
    do
    cin>>n;
    while(n<1);
    long *arr1=new long[n+1];
    long *arr2=new long[n+1];
    for(long k=1;k<=n;k++)
    {
        arr1[k]=1+k*alpha(k)*(4*k)+sum1(k);
        arr2[k]=2*beta(k)+sum2(k);
    }
    //code to sort arrays
    for (int i=1; i<n; i++)
        for (int j=0;j<n-1;j++)
        {
            if(arr1[i]>arr1[i+1])
            {
                long hold;
                hold=arr1[n];
                arr1[n]=arr1[n-1];
                arr1[n-1]=hold;
            }
            if(arr2[i]>arr2[i+1])
            {
                long hold;
                hold=arr2[n];
                arr2[n]=arr2[n-1];
                arr2[n-1]=hold;
            }
        }
    //code to display max value
    cout<<"\n arr1 max:  "<<arr1[n];
    cout<<"\n arr2 max:  "<<arr2[n]<<endl;
    
    for (int i=1; i<=n; i++)
        cout<<arr1[i]<<"      "<<arr2[i]<<endl;
    system("pause");
    delete [] arr1;
    delete [] arr2;
    
}
убрал сорт - сделал простым пузырьком. данные получаются с клавы.. вот только результаты вам следует проверить самостоятельно - то есть на взятых элементах посчитать все.

Добавлено через 2 минуты
и здается мне что тут просто типа long может не хватать для отображения полученной суммы.. и на больших цифрах будет выводить бред.
1
JamesBlack
37 / 37 / 3
Регистрация: 28.07.2009
Сообщений: 144
19.06.2010, 04:05 #25
Цитата Сообщение от mrMRak Посмотреть сообщение
и здается мне что тут просто типа long может не хватать для отображения полученной суммы.. и на больших цифрах будет выводить бред.
Учитывая, что там факториалы - так оно и будет.
1
DanielDefo
5 / 5 / 0
Регистрация: 13.09.2009
Сообщений: 225
19.06.2010, 07:58  [ТС] #26
всем большое спасибо. вы мне очень помогли
0
DanielDefo
5 / 5 / 0
Регистрация: 13.09.2009
Сообщений: 225
20.06.2010, 21:48  [ТС] #27
НУ вот чтото получилось.

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include<math.h>
#include<iostream.h>
long m,l,e,n=0;// глобальные переменные.
unsigned long fact(unsigned long n)// поиск факториала числа
{
if(n<=1)
return 1;
return n*fact(n-1);
}
long alpha(long x) {return(x*x+m*m*x);} //уравнение альфа от Х
long beta(long x) {return(x+21*alpha(x));} //уравнение бета от Х
long long_fact(long k, long p) {return fact(3*k)/fact(2*k+p);} //это кусок вашего вычисления там где (3k)!/(2k+p)!
long sum1(int k)// сумма для Х по к(длинное произведение)
{
long result=0;
for(long p=k;p<=n;p++)
{
result+=long_fact(k,p)*pow((float)e,(k-p))*alpha(k-2*p);
}
return result;
}
long sum2(int k)//сумма для Y по к(длинное произведение)
{
long result=0;
for(long p=k;p<=n;p++)
{
result+=long_fact(k,p)*pow((float)(1+e),(k+p))*pow ((float)l,p)*alpha(k+2*p);
}
return result;
}
void main ()
{
cout<<"Enter m,l,e \n";
cin>>m>>l>>e;
cout<<"Enter n>0 \n";
do
cin>>n;
while(n<1);
long *arr1=new long[n+1];
long *arr2=new long[n+1];
for(long k=1;k<=n;k++)
{
arr1[k]=1+k*alpha(k)*(4*k)+sum1(k);
arr2[k]=2*beta(k)+sum2(k);
}
//code to sort arrays
for (int i=1; i<n; i++)
for (int j=0;j<n-1;j++)
{
if(arr1[i]>arr1[i+1])
{
long hold;
hold=arr1[n];
arr1[n]=arr1[n-1];
arr1[n-1]=hold;
}
if(arr2[i]>arr2[i+1])
{
long hold;
hold=arr2[n];
arr2[n]=arr2[n-1];
arr2[n-1]=hold;
}
}
//code to display max value
cout<<"\n arr1 max: "<<arr1[n];
cout<<"\n arr2 max: "<<arr2[n]<<endl;
 
for ( i=1; i<=n; i++)
cout<<arr1[i]<<" "<<arr2[i]<<endl;
system("pause");
delete [] arr1;
delete [] arr2;
}
Выдает ошибку в 71 строке. Помогите решить, СРОЧНО ППЦ

Добавлено через 4 минуты
НАшел ошибку, все сделал, но выводит в порядке возрастания, а нада убывания, как передалать?
0
mrMRak
38 / 38 / 3
Регистрация: 02.06.2010
Сообщений: 105
20.06.2010, 22:00 #28
if(arr2[i]>arr2[i+1]) на if(arr2[i]<arr2[i+1])
if(arr1[i]>arr1[i+1]) на if(arr1[i]<arr1[i+1])

а при выводе макс элементов выводить нулевые а не последние.
0
DanielDefo
5 / 5 / 0
Регистрация: 13.09.2009
Сообщений: 225
20.06.2010, 22:03  [ТС] #29
спасибо
0
mrMRak
38 / 38 / 3
Регистрация: 02.06.2010
Сообщений: 105
20.06.2010, 22:04 #30
слово "на" значит заменить то что стоит слева, на то, что стоит справа.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2010, 22:04
Привет! Вот еще темы с ответами:

Вызов функции - C++
Укажите правильный вариант вызова функции вместо пропуска …….. void func(int *p, int n, float k) { } main( ) { int...

Вызов функции - C++
Здравствуйте! Не могу вызвать функцию, объясните причину. template &lt;typename T&gt; void Calc_etalon (QDir &amp; DirTxt) { ...

Вызов функции - C++
#include &quot;stdafx.h&quot; #include &lt;locale&gt; #include &lt;iostream&gt; using namespace std; class Bankomat { public: Bankomat(){}; ...

Вызов функции! - C++
Почему-то подчеркивает вот этот вызовsum sum(pa,pb,pc); . В чем проблема? #include &lt;iostream&gt; #include &lt;locale.h&gt; #include...


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

Или воспользуйтесь поиском по форуму:
30
Yandex
Объявления
20.06.2010, 22:04
Ответ Создать тему
Опции темы

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