Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
5 / 5 / 1
Регистрация: 13.09.2009
Сообщений: 225

Вызов функции

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

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста решить завтра зачет, а задачу не могу решить последнюю.
Составить программу формирования элементов массивов Х, У и упорядочивания их в порядке убывания значений элементов и вывода максимальных элементов, если

буду очень благодарен.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.06.2010, 13:56
Ответы с готовыми решениями:

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

Вызов функции из другой функции и обратно. Общие переменные функций
Всем привет. Заранее напишу, что я ещё только изучаю программирование В данной программе генирируются числа заполняющие одним...

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

34
Эксперт С++
 Аватар для schdub
3073 / 1411 / 425
Регистрация: 19.01.2009
Сообщений: 3,894
19.06.2010, 01:28
Студворк — интернет-сервис помощи студентам
Тут вообще нужно для начала определиться на каком языке Вам нужно, а бещеный микс старого С и STL это нонсенс имхо. Можно STL использовать?
1
5 / 5 / 1
Регистрация: 13.09.2009
Сообщений: 225
19.06.2010, 01:30  [ТС]
меня смущает то что в условии дано что m,l,e - вводимые данные, а в самой программе нужно воодить n. Оно так и нужно?

Добавлено через 1 минуту
может кто пожалуйста выложить скриншот результата программы? и если можно exe-шник.
0
Эксперт С++
 Аватар для schdub
3073 / 1411 / 425
Регистрация: 19.01.2009
Сообщений: 3,894
19.06.2010, 01:43
Цитата Сообщение от DanielDefo Посмотреть сообщение
меня смущает то что в условии дано что m,l,e - вводимые данные, а в самой программе нужно воодить n. Оно так и нужно?
нет конечно это в корне не верно, в коде проги они перебиваются нулями
C++
1
m=1=e=0;
1
38 / 38 / 10
Регистрация: 02.06.2010
Сообщений: 105
19.06.2010, 02:07
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
46 / 46 / 5
Регистрация: 28.07.2009
Сообщений: 144
19.06.2010, 04:05
Цитата Сообщение от mrMRak Посмотреть сообщение
и здается мне что тут просто типа long может не хватать для отображения полученной суммы.. и на больших цифрах будет выводить бред.
Учитывая, что там факториалы - так оно и будет.
1
5 / 5 / 1
Регистрация: 13.09.2009
Сообщений: 225
19.06.2010, 07:58  [ТС]
всем большое спасибо. вы мне очень помогли
0
5 / 5 / 1
Регистрация: 13.09.2009
Сообщений: 225
20.06.2010, 21:48  [ТС]
НУ вот чтото получилось.

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
38 / 38 / 10
Регистрация: 02.06.2010
Сообщений: 105
20.06.2010, 22:00
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
5 / 5 / 1
Регистрация: 13.09.2009
Сообщений: 225
20.06.2010, 22:03  [ТС]
спасибо
0
38 / 38 / 10
Регистрация: 02.06.2010
Сообщений: 105
20.06.2010, 22:04
слово "на" значит заменить то что стоит слева, на то, что стоит справа.
0
5 / 5 / 1
Регистрация: 13.09.2009
Сообщений: 225
20.06.2010, 22:07  [ТС]
чтото не могу найти этих срок в программе

Добавлено через 2 минуты
Очень сильно извиняюсь, нашел, просто очень много проблем навалилось сразу и голова не тем занята.
З.Ы, и всеравно выдает в порядке возрастания
0
38 / 38 / 10
Регистрация: 02.06.2010
Сообщений: 105
20.06.2010, 23:09
эм чета я с индексами тогда натупил..
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 минуту
подправил..
0
5 / 5 / 1
Регистрация: 13.09.2009
Сообщений: 225
21.06.2010, 11:13  [ТС]
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
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
22.06.2010, 01:56
unsigned long double

unsigned - это только для целых
0
38 / 38 / 10
Регистрация: 02.06.2010
Сообщений: 105
22.06.2010, 01:59
да я автозаменой менял.. не проверил все типы. там был long почти везде.. сменил на long double
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.06.2010, 01:59

Вызов массива, сформированной в одной функции с другой функции
Здравствуйте! Есть разрабатываемое решение - состоящее из main.cpp и array.cpp Main - выражает собой меню в консольном режиме по...

Не работает без указателя вызов функции в функции
int AmountOfSquares(int **Array) { NumberOfSquares++; for (i = iTempTwo + 1; ((i&lt;(iTemp + SizeOfSquare)) &amp;&amp;...

Вызов функции с массивом указателей на функции
Как вызвать такую функцию в maine? void Grafik(void (*funks)(int), int numberFunks, int x_size) { (*funks)(x_size); } Так не...

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

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


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

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу (вариант №3)
Maks 15.11.2026
Обновленная версия предыдущей обработки. Изменения коснулись букв: Ъ, Ы, Ь, Э, отображения которых зависят от положения реквизита "Транслитерация имён". Изменено отображение буквы Й. Добавлена. . .
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru