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

Работа с аргументами - C++

Восстановить пароль Регистрация
 
 
Ronnie_
 Аватар для Ronnie_
4 / 4 / 0
Регистрация: 10.10.2013
Сообщений: 91
17.12.2013, 19:41     Работа с аргументами #1
Задание такое: Написать программу с использованием функции, которая сравнивает две строки, заданные в качестве её аргументов. Если аргумент только один, то найти длину этой строки.
Программа есть, но нужно доработать, а именно в той части где должно выполняться условие, что если аргумент один, найти длину этой строки. Помогите доделать согласно условию.

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
#include <iostream>
#include <string>
 
using namespace std;
 
// прототипы
void func(string, string);
void func(string);
 
int main()
{
    setlocale(LC_ALL,"Russian");
    string first, second;
 
    cout << "Введите первую строку: ";
    getline(cin, first);
    cout << "Введите вторую строку: ";
    getline(cin, second);
 
    func(first, second);
    func(first);
    func(second);
 
    system("pause");
    return 0;
}
 
// функция сравнивает строки
void func(string first, string second)
{
    if (first == second)
    {
        cout << "Строки одинаковы" << endl;
    }
    else
    {
        cout << "Строки различны" << endl;
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
17.12.2013, 20:00     Работа с аргументами #2
C++
1
int func(string s) { return s.size(); }
Добавлено через 25 секунд
Цитата Сообщение от Ronnie_ Посмотреть сообщение
void func(string);
Это вообще к чему?!
Ronnie_
 Аватар для Ronnie_
4 / 4 / 0
Регистрация: 10.10.2013
Сообщений: 91
17.12.2013, 20:09  [ТС]     Работа с аргументами #3
Можете конкретно целый код дать уже отредактированный. Потому что я вставил в программу ваш ответ, подчёркивает ошибку.
Обратите внимание на условие если аргумент один, найти длину этой строки.
lpvoid
 Аватар для lpvoid
318 / 301 / 17
Регистрация: 06.03.2013
Сообщений: 869
17.12.2013, 20:11     Работа с аргументами #4
Цитата Сообщение от Ronnie_ Посмотреть сообщение
void func(string);
а реализацию по-вашему Страуструп компилятор сгенерирует?
Ronnie_
 Аватар для Ronnie_
4 / 4 / 0
Регистрация: 10.10.2013
Сообщений: 91
17.12.2013, 20:14  [ТС]     Работа с аргументами #5
Ну что вы хотите я новичок ещё не опытный, мне нужно как-то разобраться и нужна помощь.
lpvoid
 Аватар для lpvoid
318 / 301 / 17
Регистрация: 06.03.2013
Сообщений: 869
17.12.2013, 20:17     Работа с аргументами #6
Ronnie_, объявили прототип и вызываете - будьте добры реализовать функцию с подходящей сигнатурой. в вашем случае код будет выглядеть как-то так:
C++
1
2
3
4
5
6
7
void func(string);
 
// многокода ...
 
void func(string s) {
    // реализуем сравнение
}
Ronnie_
 Аватар для Ronnie_
4 / 4 / 0
Регистрация: 10.10.2013
Сообщений: 91
17.12.2013, 20:19  [ТС]     Работа с аргументами #7
Да....я прямо вас так понял.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.12.2013, 20:19     Работа с аргументами #8
Цитата Сообщение от Ronnie_ Посмотреть сообщение
Потому что я вставил в программу ваш ответ, подчёркивает ошибку.
Код нужно показывать, ясновидящих тут нет...
lpvoid
 Аватар для lpvoid
318 / 301 / 17
Регистрация: 06.03.2013
Сообщений: 869
17.12.2013, 20:21     Работа с аргументами #9
Ronnie_, да чорд же!
Код
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
#include <iostream>
#include <string>
 
using namespace std;
 
// прототипы
void func(string, string);
void func(string);
 
int main()
{
    setlocale(LC_ALL,"Russian");
    string first, second;
 
    cout << "Введите первую строку: ";
    getline(cin, first);
    cout << "Введите вторую строку: ";
    getline(cin, second);
 
    func(first, second);
    func(first);
    func(second);
 
    system("pause");
    return 0;
}
 
// функция сравнивает строки
void func(string first, string second)
{
    if (first == second)
    {
        cout << "Строки одинаковы" << endl;
    }
    else
    {
        cout << "Строки различны" << endl;
    }
}
 
void func(string s) {
    std::cout << "String length: " << s.size() << std::endl;
}


если еще будут ошибки - постите здесь.
Ronnie_
 Аватар для Ronnie_
4 / 4 / 0
Регистрация: 10.10.2013
Сообщений: 91
17.12.2013, 20:34  [ТС]     Работа с аргументами #10
скажите мне я что-то не допонял в задании, вот там говорится, что если аргумент один, то найти длину этой строки. Значит значение длины строки должно выводиться только когда введена одна строка. А когда две строки введены то длина не должна выводиться? По идеи должно быть условие, что если одна из строк не введена, т.е. аргумент один, то выводить длину, а иначе если введены две строки не выводить. Или не так?
lpvoid
 Аватар для lpvoid
318 / 301 / 17
Регистрация: 06.03.2013
Сообщений: 869
17.12.2013, 20:36     Работа с аргументами #11
Ronnie_, когда введена одна строка, вызывается функция с сигнатурой void func(string), когда две - void func(string, string). почитайте про перегрузку функций в c++.
Ronnie_
 Аватар для Ronnie_
4 / 4 / 0
Регистрация: 10.10.2013
Сообщений: 91
17.12.2013, 20:41  [ТС]     Работа с аргументами #12
а почему же длина выводится и в том и в другом случае, ведь по условию получается длина строки должна выводиться получается когда void func(string)
lpvoid
 Аватар для lpvoid
318 / 301 / 17
Регистрация: 06.03.2013
Сообщений: 869
17.12.2013, 20:45     Работа с аргументами #13
Цитата Сообщение от Ronnie_ Посмотреть сообщение
func(first);
* * func(second);
вы ведь два раза вызываете.
Ronnie_
 Аватар для Ronnie_
4 / 4 / 0
Регистрация: 10.10.2013
Сообщений: 91
17.12.2013, 20:48  [ТС]     Работа с аргументами #14
а как тогда сделать, чтобы длина выводилась только тогда когда есть только один аргумент(т.е. введена толька одна строка), а в других случаях не выводить длину.
или это невозможно?
lpvoid
 Аватар для lpvoid
318 / 301 / 17
Регистрация: 06.03.2013
Сообщений: 869
17.12.2013, 20:51     Работа с аргументами #15
Ronnie_,
C++
1
2
3
4
5
if(second == "") {
    // .. 
} else {
    // ..
}
Ronnie_
 Аватар для Ronnie_
4 / 4 / 0
Регистрация: 10.10.2013
Сообщений: 91
17.12.2013, 21:02  [ТС]     Работа с аргументами #16
Как правильно, у меня ошибка.
error C2084: функция "void func(std::string,std::string)" уже имеет текст реализации

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
#include <iostream>
#include <string>
 
using namespace std;
 
// прототипы
void func(string, string);
void func(string);
 
int main()
{
    setlocale(LC_ALL,"Russian");
    string first, second;
 
    cout << "Введите первую строку: ";
    getline(cin, first);
    cout << "Введите вторую строку: ";
    getline(cin, second);
 
    func(first, second);
    func(first);
    func(second);
 
    system("pause");
    return 0;
}
 
// функция сравнивает строки
void func(string first, string second)
{
    if (first == second)
    {
        cout << "Строки одинаковы" << endl;
    }
    else
    {
        cout << "Строки различны" << endl;
    }
}
 
void func(string second, string first)
    {if(second == "")
{
    cout << "Длина строки одного аргумента: " << first.size() << endl; 
} 
    else
    {
    cout << "Аргумент не один: ";
}
}
S_el
1906 / 1501 / 295
Регистрация: 15.12.2013
Сообщений: 5,912
17.12.2013, 21:13     Работа с аргументами #17
Посмотрите внимательно,вы пытаетесь дважды реализовать одну и ту же функцию.
Ronnie_
 Аватар для Ronnie_
4 / 4 / 0
Регистрация: 10.10.2013
Сообщений: 91
17.12.2013, 21:15  [ТС]     Работа с аргументами #18
где именно ошибка, помогите исправить, я уже ничего не догоняю
Progers
New to C++
 Аватар для Progers
83 / 44 / 5
Регистрация: 14.01.2013
Сообщений: 258
17.12.2013, 21:36     Работа с аргументами #19
Ronnie_, Вы дважды реализуйте, одну и туже функцию, это строка 29,и строка 41
У вас 2 объявления функции это
C++
1
2
void func(string, string);
void func(string);
А вы прописывайте
C++
1
2
void func(string first, string second)
void func(string second, string first)
Если говорить простым языком, то у вас в первой функции 2 аргумента а во второй функции 1 аргумент, а в
C++
1
2
void func(string first, string second)
void func(string second, string first)
То тут у вас по 2 аргумента на каждую функцию.....
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2013, 21:50     Работа с аргументами
Еще ссылки по теме:

C++ Конструкторы с тремя аргументами
C++ Непонятки с аргументами функции
C++ Макросы с аргументами

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

Или воспользуйтесь поиском по форуму:
Ronnie_
 Аватар для Ronnie_
4 / 4 / 0
Регистрация: 10.10.2013
Сообщений: 91
17.12.2013, 21:50  [ТС]     Работа с аргументами #20
исправил я как вы сказали, теперь ещё больше ошибок, в чём проблема? я не пойму программа хорошо работала мне только нужно добавить вывод длины если введён только один аргумент, почему так всё усложнено, нельзя просто помочь сделать нормально работающий код
error C2660: func: функция не принимает 1 аргументов
error C2660: func: функция не принимает 1 аргументов
error C2084: функция "void func(std::string,std::string)" уже имеет текст реализации
IntelliSense: слишком мало аргументов в вызове функции

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
#include <iostream>
#include <string>
 
using namespace std;
 
// прототипы
void func(string first, string second);
void func(string second, string first);
 
int main()
{
    setlocale(LC_ALL,"Russian");
    string first, second;
 
    cout << "Введите первую строку: ";
    getline(cin, first);
    cout << "Введите вторую строку: ";
    getline(cin, second);
 
    func(first, second);
    func(first);
    func(second);
 
    system("pause");
    return 0;
}
 
// функция сравнивает строки
void func(string first, string second)
{
    if (first == second)
    {
        cout << "Строки одинаковы" << endl;
    }
    else
    {
        cout << "Строки различны" << endl;
    }
}
 
void func(string second, string first)
    {if(second == "")
{
    cout << "Длина строки одного аргумента: " << first.size() << endl; 
} 
    else
    {
    cout << "Аргумент не один: ";
}
}
Yandex
Объявления
17.12.2013, 21:50     Работа с аргументами
Ответ Создать тему
Опции темы

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