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

перегруженные функции - C++

Восстановить пароль Регистрация
 
romanhaisarov
0 / 0 / 0
Регистрация: 11.11.2013
Сообщений: 12
28.11.2013, 16:03     перегруженные функции #1
Вариант 18. В одномерном массиве, состоящем из п элементов, вычислить:
1) номер минимального по модулю элемента массива;
2) сумму модулей элементов массива, расположенных после первого отрицательного элемента.


Есть код, но он вылетает после ввода размера массива. На этом и других форумах есть обсуждение этого задания, но без перегрузки функции. Преподу сдал такое - он мне отдал на доработку. Надо сказать, программирование мне дается тяжко. Подскажите, пожалуйста, как это исправить ?
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
// лаба9 - дубль 2.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include<iostream>
#include<time.h>
#include<math.h>
using namespace std;
 
int n;
 
    
    void func (int *a, int min) {
                
        min=a[0];
        for (int i=0; i<n; i++)
            if (a[min]>a[i])
            min=i;
                cout<<"Минимальный по модулю элемент"<<a[min]<<endl;
    }
 
void func (int *a, float ot, int n) {
        for (int i=0; i<n; i++)
            if (a[i]<0) {
                ot=i;
                break;}
    }
    void func (int *a, float ot, float s=0) {
        for (int i=ot+1; i<n; i++)
            s+=a[i]; 
        cout<<"Сумма модулей эл. массива, расп. после первого отр. элемента="<<s<<endl;
    }
 
    
 
 
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, "russian");
cout<<"Размер массива n="; cin>>n;
int *a=new int[n];
srand(time(0));
for(int i=0;i<n;i++)
    a[i]=1+rand() %109 + (-37);
cout<<"Массив:              "; cout<<endl;
for (int i=0;i,n;i++)
    cout<<a[i]<<"  "; cout<<endl;
 
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2013, 16:03     перегруженные функции
Посмотрите здесь:

Перегруженные функции. C++
C++ Перегруженные функции
перегруженные функции C++
Перегруженные функции C++
C++ Перегруженные функции
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ShadowFirst
54 / 47 / 1
Регистрация: 31.10.2013
Сообщений: 161
28.11.2013, 16:37     перегруженные функции #2
Цитата Сообщение от romanhaisarov Посмотреть сообщение
Вариант 18. В одномерном массиве, состоящем из п элементов, вычислить:
1) номер минимального по модулю элемента массива;
2) сумму модулей элементов массива, расположенных после первого отрицательного элемента.


Есть код, но он вылетает после ввода размера массива. На этом и других форумах есть обсуждение этого задания, но без перегрузки функции. Преподу сдал такое - он мне отдал на доработку. Надо сказать, программирование мне дается тяжко. Подскажите, пожалуйста, как это исправить ?
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
// лаба9 - дубль 2.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include<iostream>
#include<time.h>
#include<math.h>
using namespace std;
 
int n;
 
    
    void func (int *a, int min) {
                
        min=a[0];
        for (int i=0; i<n; i++)
            if (a[min]>a[i])
            min=i;
                cout<<"Минимальный по модулю элемент"<<a[min]<<endl;
    }
 
void func (int *a, float ot, int n) {
        for (int i=0; i<n; i++)
            if (a[i]<0) {
                ot=i;
                break;}
    }
    void func (int *a, float ot, float s=0) {
        for (int i=ot+1; i<n; i++)
            s+=a[i]; 
        cout<<"Сумма модулей эл. массива, расп. после первого отр. элемента="<<s<<endl;
    }
 
    
 
 
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, "russian");
cout<<"Размер массива n="; cin>>n;
int *a=new int[n];
srand(time(0));
for(int i=0;i<n;i++)
    a[i]=1+rand() %109 + (-37);
cout<<"Массив:              "; cout<<endl;
for (int i=0;i,n;i++)
    cout<<a[i]<<"  "; cout<<endl;
 
 
    return 0;
}
C++
1
2
for (int i=0;i,n;i++)
    cout<<a[i]<<"  "; cout<<endl;
Нет условия выхода из цикла нормального или это ваша опечатка или так восприняло здесь, не знаю но это единственное что я увидел что могло вызвать ошибку, думаю имелось ввиду i<n
romanhaisarov
0 / 0 / 0
Регистрация: 11.11.2013
Сообщений: 12
28.11.2013, 18:27  [ТС]     перегруженные функции #3
Цитата Сообщение от ShadowFirst Посмотреть сообщение
C++
1
2
for (int i=0;i,n;i++)
    cout<<a[i]<<"  "; cout<<endl;
Нет условия выхода из цикла нормального или это ваша опечатка или так восприняло здесь, не знаю но это единственное что я увидел что могло вызвать ошибку, думаю имелось ввиду i<n
Спасибо за ответ,.. да это была моя опечатка.. это я уже нашел и исправил, но.. программа завершается на выдаче на экран срандомленного массива из n эл-тов.
код таков:
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
// лаба9 - дубль 2.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include<iostream>
#include<time.h>
#include<math.h>
using namespace std;
 
 
void func (int *a, int min, int n) {
                
        min=a[0];
        for (int i=0; i<n; i++)
            if (a[min]>a[i])
            min=i;
                cout<<"Минимальный по модулю элемент"<<a[min]<<endl;
                cout<<"Его номер"<<min<<endl;
    }
 
void func (int *a, float ot, int n) {
        for (int i=0; i<n; i++)
            if (a[i]<0) {
                ot=i;
                break;}
    }
    void func (int *a, int n, float ot, float s=0) {
        for (int i=ot+1; i<n; i++)
            s+=a[i]; 
        cout<<"Сумма модулей эл. массива, расп. после первого отр. элемента="<<s<<endl;
    
    }
    
    
 
    
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    int n;
setlocale(LC_ALL, "russian");
cout<<"Размер массива n="; cin>>n;
int *a=new int[n];
srand(time(0));
for(int i=0;i<n;i++)
    a[i]=1+rand() %109 + (-37);
cout<<"Массив:              "; cout<<endl;
for (int i=0;i<n;i++)
    cout<<a[i]<<"  "; cout<<endl;
system("pause");
return 0;
 
}
Добавлено через 1 час 37 минут
up! помогите, пожалуйста, найти ошибку
ShadowFirst
54 / 47 / 1
Регистрация: 31.10.2013
Сообщений: 161
28.11.2013, 19:37     перегруженные функции #4
Код вроде не хитрый и ничего из за чего могла возникнуть ошибка я не увидел. Тем более все таки решил запустить у себя все отлично выводит и никаких ошибок или завершения приложения нет.
romanhaisarov
0 / 0 / 0
Регистрация: 11.11.2013
Сообщений: 12
28.11.2013, 20:06  [ТС]     перегруженные функции #5
Цитата Сообщение от ShadowFirst Посмотреть сообщение
Код вроде не хитрый и ничего из за чего могла возникнуть ошибка я не увидел. Тем более все таки решил запустить у себя все отлично выводит и никаких ошибок или завершения приложения нет.
Наткнулся на одном сайте на полезную информацию и... разобрался!!!!
Вот окончательный код:
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
// лаба9 - дубль 2.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include<iostream>
#include<time.h>
#include<math.h>
using namespace std;
 
 
void func (int *b, int z) {
            int min;    
        min=b[0];
        for (int i=0; i<z; i++)
            if (abs(b[min])>abs(b[i]))
            min=i;
                cout<<"Минимальный по модулю элемент"<<b[min]<<endl;
                cout<<"Его номер"<<min+1<<endl;
    }
 
void func (int *b, int z, float s) {
    float ov;
        for (int i=0; i<z; i++)
            if (b[i]<0) {
                ov=i;
                break;}
    
                    for (int i=ov+1; i<z; i++)
            s+=b[i]; 
        cout<<"Сумма модулей эл. массива, расп. после первого отр. элемента="<<s<<endl;
    
    }
    
    
 
int _tmain(int argc, _TCHAR* argv[])
{
    int n;
    float d=0;
setlocale(LC_ALL, "russian");
cout<<"Размер массива n="; cin>>n;
int *a=new int[n];
srand(time(0));
for(int i=0;i<n;i++)
    a[i]=1+rand() %109 + (-37);
cout<<"Массив:              "; cout<<endl;
for (int i=0;i<n;i++)
    cout<<a[i]<<"  "; cout<<endl;
 
func (a, n);
func (a, n, d); 
system("pause");
 return 0;
 
 
}
Yandex
Объявления
28.11.2013, 20:06     перегруженные функции
Ответ Создать тему
Опции темы

Текущее время: 06:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru