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

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

17.11.2013, 16:13. Показов 508. Ответов 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;
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.11.2013, 16:13
Ответы с готовыми решениями:

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

Выдаёт ошибку: Program2.pas(9) : Нет перегруженной подпрограммы с такими типами параметров
program sdfsd; var b,x,y,a,k,stoi,moze,stoi2:real; begin writeln('Введите...

Не могу нечего поделать, выбивает ошибку(Нет перегруженной подпрограммы с такими типами параметров)
var f, g, q: text; c, v: char; begin assign(f, 'f1.txt'); //text.txt - исходный файл ...

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

12
шКодер самоучка
2143 / 1855 / 906
Регистрация: 09.10.2013
Сообщений: 4,051
Записей в блоге: 7
17.11.2013, 16:47 2
строку 13 замените на return proizv;
1
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 36
24.11.2013, 16:13  [ТС] 3
Не работает всё равно - теперь выдаёт какое-то странное число.

Добавлено через 2 часа 21 минуту
Ошибка не исчезла, только изменилась.
0
43 / 41 / 2
Регистрация: 21.09.2009
Сообщений: 145
24.11.2013, 16:25 4
Не работает всё равно - теперь выдаёт какое-то странное число.
выдавать должно произведение положительных элементов - ваше странное число...
0
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 36
24.11.2013, 17:42  [ТС] 5
Ну да, только оно отрицательное.
0
5480 / 4875 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
24.11.2013, 20:09 6
Цитата Сообщение от A0A Посмотреть сообщение
Ну да, только оно отрицательное.
С чего бы это? Код показывайте.
0
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 36
24.11.2013, 20:17  [ТС] 7
Он и есть, только в первой функции return p,n; изменено на return proizv;
0
43 / 41 / 2
Регистрация: 21.09.2009
Сообщений: 145
24.11.2013, 20:20 8
Цитата Сообщение от A0A Посмотреть сообщение
Он и есть, только в первой функции return p,n; изменено на return proizv;
Значит смотрите код заполнения массива
1
5480 / 4875 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
24.11.2013, 20:24 9
Цитата Сообщение от A0A Посмотреть сообщение
Он и есть, только в первой функции return p,n; изменено на return proizv;
Скрин с выводом результатов покажите.
1
5480 / 4875 / 831
Регистрация: 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;
}
1
Миниатюры
Найти ошибку в перегруженной функции  
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 36
24.11.2013, 21:19  [ТС] 11
Вот
0
Миниатюры
Найти ошибку в перегруженной функции  
5480 / 4875 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
24.11.2013, 21:26 12
Слишком большое число для int получается. Задайте другой тип.
1
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 36
24.11.2013, 21:35  [ТС] 13
Изменил тип, и на всякий случай уменьшил диапазон чисел.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.11.2013, 21:35

Ошибка вызов перегруженной функции
epswidth = ceil(-log10(eps)); stepwidth = ceil(log10(nsteps) + 1); iterwidth =...

Неоднозначный вызов перегруженной функции
Ошибка 1 error C2668: hash_helper::hash: неоднозначный вызов перегруженной функции...

Сравнение строк в перегруженной функции
Здравствуйте! есть перегруження функция Block* BlocksList::Find(string text) const { ...

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


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

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

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