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

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

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

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

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

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

Вызов функции. - C++
Здрасти, у меня есть функция вычесления суммы цифр числа int sum_digit(int x) { int sum=0; while (x!=0){ ...

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

Вызов функции - C++
Арифметические операции с длинными числами, которые представлены в виде массивов: есть функция умножения двух длинных чисел...

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

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

Вызов функции - C++
Имеется такая вот функция, и к ней нужно написать вызов. #include <stdio.h> char *F12(char **p, int n) { int k,i,j; for...

вызов функции - C++
как правильно вызвать данную функцию? typedef int key_t; typedef double value_t; value_t find(key_t key);

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
schdub
2940 / 1284 / 238
Регистрация: 19.01.2009
Сообщений: 3,360
Завершенные тесты: 1
19.06.2010, 01:28     Вызов функции #21
Тут вообще нужно для начала определиться на каком языке Вам нужно, а бещеный микс старого С и STL это нонсенс имхо. Можно STL использовать?
DanielDefo
5 / 5 / 0
Регистрация: 13.09.2009
Сообщений: 225
19.06.2010, 01:30  [ТС]     Вызов функции #22
меня смущает то что в условии дано что m,l,e - вводимые данные, а в самой программе нужно воодить n. Оно так и нужно?

Добавлено через 1 минуту
может кто пожалуйста выложить скриншот результата программы? и если можно exe-шник.
schdub
2940 / 1284 / 238
Регистрация: 19.01.2009
Сообщений: 3,360
Завершенные тесты: 1
19.06.2010, 01:43     Вызов функции #23
Цитата Сообщение от DanielDefo Посмотреть сообщение
меня смущает то что в условии дано что m,l,e - вводимые данные, а в самой программе нужно воодить n. Оно так и нужно?
нет конечно это в корне не верно, в коде проги они перебиваются нулями
C++
1
m=1=e=0;
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 может не хватать для отображения полученной суммы.. и на больших цифрах будет выводить бред.
JamesBlack
37 / 37 / 3
Регистрация: 28.07.2009
Сообщений: 144
19.06.2010, 04:05     Вызов функции #25
Цитата Сообщение от mrMRak Посмотреть сообщение
и здается мне что тут просто типа long может не хватать для отображения полученной суммы.. и на больших цифрах будет выводить бред.
Учитывая, что там факториалы - так оно и будет.
DanielDefo
5 / 5 / 0
Регистрация: 13.09.2009
Сообщений: 225
19.06.2010, 07:58  [ТС]     Вызов функции #26
всем большое спасибо. вы мне очень помогли
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 минуты
НАшел ошибку, все сделал, но выводит в порядке возрастания, а нада убывания, как передалать?
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])

а при выводе макс элементов выводить нулевые а не последние.
DanielDefo
5 / 5 / 0
Регистрация: 13.09.2009
Сообщений: 225
20.06.2010, 22:03  [ТС]     Вызов функции #29
спасибо
mrMRak
38 / 38 / 3
Регистрация: 02.06.2010
Сообщений: 105
20.06.2010, 22:04     Вызов функции #30
слово "на" значит заменить то что стоит слева, на то, что стоит справа.
DanielDefo
5 / 5 / 0
Регистрация: 13.09.2009
Сообщений: 225
20.06.2010, 22:07  [ТС]     Вызов функции #31
чтото не могу найти этих срок в программе

Добавлено через 2 минуты
Очень сильно извиняюсь, нашел, просто очень много проблем навалилось сразу и голова не тем занята.
З.Ы, и всеравно выдает в порядке возрастания
mrMRak
38 / 38 / 3
Регистрация: 02.06.2010
Сообщений: 105
20.06.2010, 23:09     Вызов функции #32
эм чета я с индексами тогда натупил..
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
#include<cmath>
#include<iostream>
#include<iomanip>
using namespace std;
long double m,l,e;
long n=0;// глобальные переменные.
unsigned long double fact(unsigned long double n)// поиск факториала числа
{
if(n<=1)
return 1;
return n*fact(n-1);
}
long double alpha(long double x) {return(x*x+m*m*x);} //уравнение альфа от Х
long double beta(long double x) {return(x+21*alpha(x));} //уравнение бета от Х
long double double_fact(long double k, long double p) {return fact(3*k)/fact(2*k+p);} //это кусок вашего вычисления там где (3k)!/(2k+p)!
long double sum1(int k)// сумма для Х по к(длинное произведение)
{
long double result=0;
for(long double p=k;p<=n;p++)
{
result+=(long double) double_fact(k,p)*pow(e,(k-p))*alpha(k-2*p);
}
return result;
}
long double sum2(int k)//сумма для Y по к(длинное произведение)
{
long double result=0;
for(long double p=k;p<=n;p++)
{
result+=(long  double) double_fact(k,p)*pow((1+e),(k+p))*pow (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 double *arr1= new long double[n];
long double *arr2= new long double[n];
for(int k=0;k<n;k++)
{
arr1[k]=1+(k+1)*alpha(k+1)*(4*(k+1))+sum1(k+1);
arr2[k]=2*beta(k+1)+sum2(k+1);
}
long hold=0;
//code to sort arrays
 for(int i = n-1; i > 0 ; i--)
    for(int j = 0 ; j < i ; j++)
    {
        if(arr1[j+1]>arr1[j])
        {
            
            hold=arr1[j+1];
            arr1[j+1]=arr1[j];
            arr1[j]=hold;
        }
        if(arr2[j+1]>arr2[j])
        {
            hold=arr2[j];
            arr2[j]=arr2[j+1];
            arr2[j+1]=hold;
        }
    }
//code to display max value
cout<<"\n arr1 max: "<<arr1[0];
cout<<"\n arr2 max: "<<arr2[0]<<endl;
cout<<setprecision(10);
for ( int i=0; i<n; i++)
cout<<setw(20)<<arr1[i]<<setw(20)<<arr2[i]<<endl;
system("pause");
delete [] arr1;
delete [] arr2;
}
Добавлено через 21 минуту
подправил..
DanielDefo
5 / 5 / 0
Регистрация: 13.09.2009
Сообщений: 225
21.06.2010, 11:13  [ТС]     Вызов функции #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
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
#include<math.h>
#include<iostream.h>
#include<iomanip.h>
long double m,l,e;
long n=0;// глобальные переменные.
unsigned long double fact(unsigned long double n)    // поиск факториала числа
{
if(n<=1)
return 1;
return n*fact(n-1);
}
long double alpha(long double x) {return(x*x+m*m*x);} //уравнение альфа от Х
long double beta(long double x) {return(x+21*alpha(x));} //уравнение бета от Х
long double double_fact(long double k, long double p) {return fact(3*k)/fact(2*k+p);} //это кусок вашего вычисления там где (3k)!/(2k+p)!
long double sum1(int k)// сумма для Х по к(длинное произведение)
{
long double result=0;
for(long double p=k;p<=n;p++)
{
result+=(long double) double_fact(k,p)*pow(e,(k-p))*alpha(k-2*p);
}
return result;
}
long double sum2(int k)//сумма для Y по к(длинное произведение)
{
long double result=0;
for(long double p=k;p<=n;p++)
{
result+=(long  double) double_fact(k,p)*pow((1+e),(k+p))*pow (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 double *arr1= new long double[n];
long double *arr2= new long double[n];
for(int k=0;k<n;k++)
{
arr1[k]=1+(k+1)*alpha(k+1)*(4*(k+1))+sum1(k+1);
arr2[k]=2*beta(k+1)+sum2(k+1);
}
long hold=0;
//code to sort arrays
 for(int i = n-1; i > 0 ; i--)
     for(int j = 0 ; j < i ; j++)
          {
                     if(arr1[j+1]>arr1[j])
                     {
 
                                hold=arr1[j+1];
                                arr1[j+1]=arr1[j];
                                arr1[j]=hold;
                     }
                     if(arr2[j+1]>arr2[j])
                     {
                                hold=arr2[j];
                                arr2[j]=arr2[j+1];
                                arr2[j+1]=hold;
                     }
          }
//code to display max value
cout<<"\n arr1 max: "<<arr1[0];
cout<<"\n arr2 max: "<<arr2[0]<<endl;
cout<<setprecision(10);
for ( i=0; i<n; i++)
cout<<setw(20)<<arr1[i]<<setw(20)<<arr2[i]<<endl;
delete [] arr1;
delete [] arr2;
}
Выдает 2 ошибки в 6 строке.
Error A1111111.CPP 6: Too many types in declaration
Error A1111111.CPP 6: Too many types in declaration
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
22.06.2010, 01:56     Вызов функции #34
unsigned long double

unsigned - это только для целых
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.06.2010, 01:59     Вызов функции
Еще ссылки по теме:

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

Вызов функции - C++
Здравствуйте! Такая задача:Разработать и испытать функцию, которая удаляет из целочисленного одномерного массива все элементы, совпадающие...

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

Вызов функции - C++
Написать вызов функции для строковых переменных, помогите!

Вызов функции - C++
Привет всем. Вот такая структура кода: void Sailary() void SetShop() void SetMenu() void ResetData() int main()


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

Или воспользуйтесь поиском по форуму:
mrMRak
38 / 38 / 3
Регистрация: 02.06.2010
Сообщений: 105
22.06.2010, 01:59     Вызов функции #35
да я автозаменой менял.. не проверил все типы. там был long почти везде.. сменил на long double
Yandex
Объявления
22.06.2010, 01:59     Вызов функции
Ответ Создать тему
Опции темы

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