Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 01.10.2010
Сообщений: 24
1

перегружаемые функции

16.12.2011, 20:12. Просмотров 569. Ответов 6
Метки нет (Все метки)

Есть задание для массивов типа int и double: 1. найти сумму положительных элементов массива 2. произведение элементов, находящихся между минимальным и максимальным по модулю значениями 3. и упорядочить массив по возрастанию... и всё бы ничего, да только при вызове функций для работы со значениями типа double, программа отказывается запускаться.
Помогите, пожалуйста, решить проблему и по возможности объясните, в чём тут дело. Спасибо.
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#include <iostream>
#include <conio.h>
#include <time.h>
#include <math.h>
 
using namespace std;
 
int fSumma(int *, int);
double fSumma(double *, int);
 
int fProizvedenie(int *, int);
double fProizvedenie(double *, int);
 
void fSortirovka(int [], int);
void fSortirovka(double [], int);
 
void main(void){ 
    int *A, N, TYPE;
    double *B;
    cout<<"Vvedite chislo N ";
    cin>>N;
    do{
        cout<<"Vvedite tip: 1 - int, 2 - double ";
        cin>>TYPE;
    }while(TYPE!=1 && TYPE !=2);
    if(TYPE==1){
        A=new int[N];
        srand(time(0));
        for(int i=0;i<N;i++){
            A[i]=rand()%10-5;
            cout<<A[i]<<"  ";
        }
        cout<<endl<<"Summa polozhitelnyh elementov massiva ravna "<<fSumma(A,N);
        cout<<endl<<"Proizvedenie elementov, raspolozhennyh mezhdu maksimalnysm i minimalnym po modulu elementov, ravno "<<fProizvedenie(A,N)<<endl;
        fSortirovka(A,N);
        for(int i=0;i<N;i++) cout<<A[i]<<"  ";
    }
    else{
        B=new double[N];
        srand(time(0));
        for(int i=0;i<N;i++){
            B[i]=rand()%10-5;
            B[i]/=10;
            cout<<B[i]<<"  ";
        }
        cout<<endl<<"Summa polozhitelnyh elementov massiva ravna "<<fSumma(B,N);
        cout<<endl<<"Proizvedenie elementov, raspolozhennyh mezhdu maksimalnysm i minimalnym po modulu elementov, ravno "<<fProizvedenie(B,N)<<endl;
        fSortirovka(B,N);
        for(int i=0;i<N;i++) cout<<B[i]<<"  ";
    }
    getch();
}
 
int fSumma(int *A, int N){
    int Summ=0;
    for(int i=0;i<N;i++)
        if(A[i]>0) Summ+=A[i];
    return Summ;
}
double fSumma(double *A, double N){
    double Summ=0;
    for(int i=0;i<N;i++)
        if(A[i]>0) Summ+=A[i];
    return Summ;
}
 
int fProizvedenie(int *A, int N){
    int min=0, max=0, Proizv=1;
    for(int i=1;i<N;i++){
        if(abs(A[i])<abs(A[min])) min=i;
        if(abs(A[i])>abs(A[max])) max=i;
    }
    if(max>min)
        for(int i=min+1;i<max;i++) Proizv*=A[i];
    if(max<min)
        for(int i=max+1;i<min;i++) Proizv*=A[i];
    return Proizv;
}
double fProizvedenie(double *A, int N){
    int min=0, max=0;
    double Proizv=1;
    for(int i=1;i<N;i++){
        if(abs(A[i])<abs(A[min])) min=i;
        if(abs(A[i])>abs(A[max])) max=i;
    }
    if(max>min)
        for(int i=min+1;i<max;i++) Proizv*=A[i];
    if(max<min)
        for(int i=max+1;i<min;i++) Proizv*=A[i];
    return Proizv;
}
 
void fSortirovka(int A[], int N){
    int swap;
    for(int i=0;i<N;i++)
        for(int j=1;j<N-i;j++)
            if(A[j]<A[j-1]){
                swap=A[j-1];
                A[j-1]=A[j];
                A[j]=swap;
            }
}
void fSortirovka(double A[], int N){
    double swap;
    for(int i=0;i<N;i++)
        for(int j=1;j<N-i;j++)
            if(A[j]<A[j-1]){
                swap=A[j-1];
                A[j-1]=A[j];
                A[j]=swap;
            }
}
Добавлено через 9 часов 48 минут
никто не знает что ли?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.12.2011, 20:12
Ответы с готовыми решениями:

Перегружаемые функции
помогите с программой, и если с можете поясните сами функции, а то совсем в них запуталась, сколько...

Перегружаемые функции
Помогите привести в рабочее состояние, а то хз че - не компилиться((( Надо создать 3 перегружаемые...

Написать перегружаемые функции умножения разного количества параметров
Помогите пожалуйста с задачей ничего не понимаю: Написать перегружаемые функции умножения...

Создать перегружаемые функции и шаблоны для типов int и double
Создать перегружаемые функции и шаблоны для типов int и double. Передачу параметров в функцию...

6
4849 / 3270 / 466
Регистрация: 10.12.2008
Сообщений: 10,569
16.12.2011, 20:15 2
что выводит программа, когда вводишь 2 ?
0
0 / 0 / 0
Регистрация: 01.10.2010
Сообщений: 24
16.12.2011, 20:17  [ТС] 3
1>------ Построение начато: проект: brute, Конфигурация: Release Win32 ------
1>Компиляция...
1>main.cpp
1>.\main.cpp(28) : warning C4244: аргумент: преобразование 'time_t' в 'unsigned int', возможна потеря данных
1>.\main.cpp(40) : warning C4244: аргумент: преобразование 'time_t' в 'unsigned int', возможна потеря данных
1>.\main.cpp(51) : warning C4996: 'getch': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _getch. See online help for details.
1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\conio.h(145): см. объявление 'getch'
1>Компоновка...
1>main.obj : error LNK2001: неразрешенный внешний символ ""double __cdecl fSumma(double *,int)" (?fSumma@@YANPANH@Z)"
1>C:\Users\Илья\Documents\Visual Studio 2008\Projects\brute\Release\brute.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
1>Журнал построения был сохранен в "file://c:\Users\Илья\Documents\Visual Studio 2008\Projects\brute\brute\Release\BuildLog.htm"
1>brute - ошибок 2, предупреждений 3
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========


Если закоментировать блок else, то со значениями типа int всё работает
0
4849 / 3270 / 466
Регистрация: 10.12.2008
Сообщений: 10,569
16.12.2011, 20:43 4
удали включение conio.h
getch() замени на cin.get() (два раза)

C++
1
    srand((unsigned) time(0));
0
0 / 0 / 0
Регистрация: 01.10.2010
Сообщений: 24
16.12.2011, 20:54  [ТС] 5
Не запускается, вот такие вещи выдаёт:

1>------ Построение начато: проект: brute, Конфигурация: Release Win32 ------
1>Компиляция...
1>main.cpp
1>Компоновка...
1>main.obj : error LNK2001: неразрешенный внешний символ ""double __cdecl fSumma(double *,int)" (?fSumma@@YANPANH@Z)"
1>C:\Users\Илья\Documents\Visual Studio 2008\Projects\brute\Release\brute.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
1>Журнал построения был сохранен в "file://c:\Users\Илья\Documents\Visual Studio 2008\Projects\brute\brute\Release\BuildLog.htm"
1>brute - ошибок 2, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
0
4849 / 3270 / 466
Регистрация: 10.12.2008
Сообщений: 10,569
16.12.2011, 21:12 6
C++
1
double fSumma(double *A, int N){
1
0 / 0 / 0
Регистрация: 01.10.2010
Сообщений: 24
17.12.2011, 00:27  [ТС] 7
accept, точно, невнимательность
благодарю
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.12.2011, 00:27

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Написать перегружаемые функции, которые считают среднее значение массива чисел
Написать перегружаемые функции, которые считают среднее значение массива чисел типа float или double

можно ли делать виртуальными перегружаемые операторы?
например так: virtual a&amp; a::operator=(a&amp; b);

Как совместить код, реализующий методы и перегружаемые операции
Есть такое задание::::) Разработать класс «Вектор» – Vektor размерности n . Определить несколько...

Перегружаемые и виртуальные методы (ошибка)
Ребята, выручайте! Программа должна выводить рандомные числа. Возникает ошибка при запуске. ...

Функции. Как после одного возвратного значения функции отталкиваться от возврата другой функции
Написал код, в котором 2 функции одна возвращает стринговое значение, вторая должна бы вернуть...

excel. создать таблицу значение кусочно-непрерывной функции y на интервале [xmin; xmax] с шагом h, для расчета функции y используя логические функции


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

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

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