0 / 0 / 0
Регистрация: 11.05.2011
Сообщений: 71
1

Перегрузка функций

19.01.2013, 22:41. Показов 657. Ответов 3
Метки нет (Все метки)

Задание: Написать перегруженные функции и основную программу, которая их вызывает.
а) для массива целых чисел находит количество нечетных элементов;
б) для строки находит количество слов в ней.
Вот код:
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 <conio.h>
// #include <stdio.h>
using namespace std;
 
int func (char S [])
    {
        //int i;
    //  char a[30];
    int space=0;
    for (int i = 1; i<= strlen(S); i++)
    {
        if (S[i] == ' ')
        {
            space++;
        }
    }
    return space+1;
}
 
int func (int s)
{ 
    double a[20];
    int i,p;
    s=0;
    for (i=0; i<20; i++)
        if (a[i]/2==0)
    {
    s++;
    }
        return s;
}
 
int main ()
{
    
    char a[20];
    int i, s;
    cout <<"Vvedite massiv strok ili chisel: ";
    for (i=0; i>20; i++);
    cin >> a[i];
    cout<< func (s);
    
    getch ();
}

Программа запускается но аварийно завершается. Это первая попытка создания перегруженных функций. Не очень понятно как в функции int main про инициализировать массив и каким типом объявлять. Ведь в зависимости от желания пользователя могут в него вводится или числа или символы. И от этого уже зависит какая функция именно будет вызываться, для подсчета слов или четных чисел.
Очень прошу указать на мои ошибки(( По возможности объяснить.)
Заранее спасибо)
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.01.2013, 22:41
Ответы с готовыми решениями:

Множественное наследование, Перегрузка функций, Перегрузка операторов, Использование дружественных функций и классов, Использование шаблонов классов
Здравствуйте!!! Я бы хотел попросить помоч решить...ну или скинуть примеры таких задач, если вдруг...

Перегрузка функций. Реализация функций
Разработать функцию f(x) , которая возвращает младшую цифру натурального числа x . Вычислить с ее...

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

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

3
2016 / 1615 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
20.01.2013, 16:44 2
Цитата Сообщение от pr1me222 Посмотреть сообщение
Не очень понятно как в функции int main про инициализировать массив и каким типом объявлять. Ведь в зависимости от желания пользователя могут в него вводится или числа или символы. И от этого уже зависит какая функция именно будет вызываться, для подсчета слов или четных чисел.
Весь смысл перегрузки - объединение множества различных функций, выполняющих по сути одни и те же действия, но имеющие специфичную для определённых типов и/или числа параметров реализацию, под одним именем. Какая из функций будет вызвана определяется ещё во время компиляции. Если вам нужен массив чисел, объявляете массив чисел, если нужен массив символов, соответственно объявляете массив символов.
Цитата Сообщение от pr1me222 Посмотреть сообщение
Очень прошу указать на мои ошибки(( По возможности объяснить.)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int func (char S [])
    {
        //int i;
    //  char a[30];
    int space=0;
    for (int i = 1; i<= strlen(S); i++)
    {
        if (S[i] == ' ')
        {
            space++;
        }
    }
    return space+1;
}
Цикл for не мешало бы переписать так
C++
1
2
3
// индекс первого элемента массива всегда 0
// признак конца С-строки символ '\0'
for (int i = 0; S[i] != '\0'; i++)
более удачный алгоритм подсчёта слов в строке можете посмотреть здесь
C++
1
2
3
4
5
6
7
8
9
10
11
12
int func (int s)
{ 
    double a[20];
    int i,p;
    s=0;
    for (i=0; i<20; i++)
        if (a[i]/2==0)
    {
    s++;
    }
        return s;
}
C++
1
2
3
4
5
6
7
8
int func (int a[], int n) // a - массив; n - количество символов в массиве
{ 
    int s = 0;
    for (int i = 0; i < n; i++)
        if (a[i] % 2 == 0) s++; // подсчёт чётных чисел (% - извлечь остаток от деления двух целых чисел)
 
    return s;
}
Функцию main можете оформить приблизительно так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
const int s_len = 256;
char s[s_len];
 
cin.getline(s, s_len); // ввод строки
if(!cin) return 1; // ошибка ввода        
 
// вызов func и вывод результата
 
//---------
 
const int a_len = 10;
int a[a_len];
 
// ввод элементов целочисленного массива
for(int i = 0; i < a_len; ++i)
{
    cin >> a[i];
    if(!cin) return 1; // ошибка ввода    
}
 
// вызов func и вывод результата
0
0 / 0 / 0
Регистрация: 11.05.2011
Сообщений: 71
22.01.2013, 02:12  [ТС] 3
Спасибо огромнейшее.)
ну вот еще один маленький вопросик..
подсчет слов работает, но вот когда вызываешь функцию для подсчета количество нечетных элементов

C++
1
cout << func (a[n]);
выбивает следующую ошибку : "error C2665: func: ни одна из 2 перегрузок не может преобразовать все типы аргументов."
а если вызываешь функцию так:
C++
1
cout << func (a[], n);
(понимаю что бред но все же..) выдает ошибку: "error C2059: синтаксическая ошибка: ] "
при чем первоначальная функция для подсчета количества слов вызвана вот так:

C++
1
cout << func(s);
как правильно вызват вторую функцию?..подскажите пожалуйста...
0
433 / 368 / 149
Регистрация: 06.08.2012
Сообщений: 961
22.01.2013, 14:44 4
Цитата Сообщение от pr1me222 Посмотреть сообщение
как правильно вызват вторую функцию?
C++
1
cout << func (a, n);
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.01.2013, 14:44
Помогаю со студенческими работами здесь

Перегрузка функций
Есть функция Message которую я пытаюсь перегрузить. Вроде все правильно, но не работает:cry: ....

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru