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

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

Войти
Регистрация
Восстановить пароль
 
A0A
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 36
#1

Найти ошибку в перегруженной функции - C++

17.11.2013, 16:13. Просмотров 309. Ответов 12
Метки нет (Все метки)

Почему-то произведению присваивется размер массива.

C++ (Qt)
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
#include "stdafx.h"
#include <iostream>
#include <fstream> 
#include <time.h> 
#include <conio.h>
using namespace std;
 
int Fun(int *p,int n)
{   int i, proizv=1;
    for(i = 0; i < n; i++)
        if (p[i]>0)
        proizv *= p[i]; 
    return p, n;
}
int Fun(int *p,int n,int imin)
{
    int sum = 0;
for (int i=0; i<imin; i++)
        sum += p[i];
       return sum;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"russian");
 
    int *p,A,B, summ; 
    int n,j,s;
    ofstream out("fail.txt"); 
    srand(time(0));
    cout << "Число элементов массива: "; cin >> n;
            p=new int[n];
    for(j=0;j < n;p[j++]=(rand()-16384)/100); 
    for(j=0;j < n;cout << p[j++] << '\t'); cout << endl;
        cout << "Произведение положительных элементов " <<Fun(p,n)<<endl;
            int min=0, imin;
           for(int i = 0; i < n; i++)
  if (p[i] < min)
    {min = p[i];
  imin = i;}
        cout << "Минимальный элемент " <<min<<endl;
        cout<< "Номер минимального элемента: "<<imin<<endl;
       cout << "Сумма элементов до минимального элемента " <<Fun(p,n,imin)<<endl;
    system ("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2013, 16:13     Найти ошибку в перегруженной функции
Посмотрите здесь:

Создание перегруженной функции - C++
Создайте перегруженные функции для вычисления абсолютной величины числа. Одна функция работает с числами типа int, другая с типом double....

Pow: нет перегруженной функции - C++
Ошибка 2 error C2661: pow: нет перегруженной функции, принимающей 1 аргументов C:\Users\student\Desktop\Языки программирования\zada4a...

Неоднозначный вызов перегруженной функции - C++
#include &quot;stdafx.h&quot; #include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;Windows.h&gt; #include &lt;iomanip&gt; #include...

неоднозначый вызов перегруженной функции - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; int _tmain(int argc, _TCHAR* argv) { float...

Неоднозначный вызов перегруженной функции - C++
Ввести с клавиатуры число n. Динамически выделить память для массива целых чисел размером n. Заполнить массив данными с клавиатуры....

сравнение строк в перегруженной функции - C++
Здравствуйте! есть перегруження функция Block* BlocksList::Find(string text) const { BlockNode * pNode = 0; int...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Max Dark
шКодер самоучка
1783 / 1584 / 575
Регистрация: 09.10.2013
Сообщений: 3,544
Записей в блоге: 6
Завершенные тесты: 2
17.11.2013, 16:47     Найти ошибку в перегруженной функции #2
строку 13 замените на return proizv;
A0A
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 36
24.11.2013, 16:13  [ТС]     Найти ошибку в перегруженной функции #3
Не работает всё равно - теперь выдаёт какое-то странное число.

Добавлено через 2 часа 21 минуту
Ошибка не исчезла, только изменилась.
fridi
-8 / 40 / 1
Регистрация: 21.09.2009
Сообщений: 145
24.11.2013, 16:25     Найти ошибку в перегруженной функции #4
Не работает всё равно - теперь выдаёт какое-то странное число.
выдавать должно произведение положительных элементов - ваше странное число...
A0A
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 36
24.11.2013, 17:42  [ТС]     Найти ошибку в перегруженной функции #5
Ну да, только оно отрицательное.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.11.2013, 20:09     Найти ошибку в перегруженной функции #6
Цитата Сообщение от A0A Посмотреть сообщение
Ну да, только оно отрицательное.
С чего бы это? Код показывайте.
A0A
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 36
24.11.2013, 20:17  [ТС]     Найти ошибку в перегруженной функции #7
Он и есть, только в первой функции return p,n; изменено на return proizv;
fridi
-8 / 40 / 1
Регистрация: 21.09.2009
Сообщений: 145
24.11.2013, 20:20     Найти ошибку в перегруженной функции #8
Цитата Сообщение от A0A Посмотреть сообщение
Он и есть, только в первой функции return p,n; изменено на return proizv;
Значит смотрите код заполнения массива
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.11.2013, 20:24     Найти ошибку в перегруженной функции #9
Цитата Сообщение от A0A Посмотреть сообщение
Он и есть, только в первой функции return p,n; изменено на return proizv;
Скрин с выводом результатов покажите.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.11.2013, 20:25     Найти ошибку в перегруженной функции #10
Вот код и вывод. Где здесь отрицательное произведение?
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
#include <iostream>
#include <fstream> 
#include <time.h> 
#include <conio.h>
using namespace std;
 
int Fun(int *p,int n)
{   int i, proizv=1;
    for(i = 0; i < n; i++)
        if (p[i]>0)
        proizv *= p[i]; 
    return proizv;
}
int Fun(int *p,int n,int imin)
{
    int sum = 0;
for (int i=0; i<imin; i++)
        sum += p[i];
       return sum;
}
 
int main()
{
    setlocale(LC_ALL,"russian");
 
    int *p,A,B, summ; 
    int n,j,s;
    ofstream out("fail.txt"); 
    srand(time(0));
    cout << "Число элементов массива: "; cin >> n;
            p=new int[n];
    for(j=0;j < n;p[j++]=(rand()-16384)/100); 
    for(j=0;j < n;cout << p[j++] << '\t'); cout << endl;
        cout << "Произведение положительных элементов " <<Fun(p,n)<<endl;
            int min=0, imin;
           for(int i = 0; i < n; i++)
  if (p[i] < min)
    {min = p[i];
  imin = i;}
        cout << "Минимальный элемент " <<min<<endl;
        cout<< "Номер минимального элемента: "<<imin<<endl;
       cout << "Сумма элементов до минимального элемента " <<Fun(p,n,imin)<<endl;
    system ("pause");
    return 0;
}
Миниатюры
Найти ошибку в перегруженной функции  
A0A
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 36
24.11.2013, 21:19  [ТС]     Найти ошибку в перегруженной функции #11
Вот
Миниатюры
Найти ошибку в перегруженной функции  
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.11.2013, 21:26     Найти ошибку в перегруженной функции #12
Слишком большое число для int получается. Задайте другой тип.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2013, 21:35     Найти ошибку в перегруженной функции
Еще ссылки по теме:

pow: неоднозначный вызов перегруженной функции - C++
#include &lt;iostream&gt; using namespace std; int main() { int i; double res= {0},r; i=0;r=0; cout.setf(ios::fixed); ...

Неоднозначный вызов перегруженной функции (sqrt) - C++
Вот в программе написано: int n, b; n = sqrt(b); // &lt;-- Неоднозначный вызов перегруженной функции... Может формат записи не тот ?

Передача перегруженной функции как аргумента - C++
Есть 3 метода: static int readInteger() { double temp = readDouble(); int result = temp; if (result != temp) throw new...

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


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

Или воспользуйтесь поиском по форуму:
A0A
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 36
24.11.2013, 21:35  [ТС]     Найти ошибку в перегруженной функции #13
Изменил тип, и на всякий случай уменьшил диапазон чисел.
Yandex
Объявления
24.11.2013, 21:35     Найти ошибку в перегруженной функции
Ответ Создать тему
Опции темы

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