Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

Значение, возвращаемое функцией (C++) - C++

22.02.2015, 12:40. Просмотров 514. Ответов 7
Метки нет (Все метки)

В общем, задача такая. Написать программу, печатающую все вводимые символы в нижнем регистре. Программа должна использовать цикл while. Входные данные поступают с клавиатуры. Результат выводится на экран в десятичной, шестнадцатеричной и восьмеричной системе.
Насколько я понял, чтобы вывести на экран строку поочередно во всех системах счисления, нужно это делать через функцию и глобальную переменную с оператором выбора, но проблема не в этом. Вот примерно такой код получился. Выводит при запуске ошибку, что функция generator должна возвращать значение. Понятно, что это делается с помощью return, вот только не понимаю, какое именно значение должна возвращать функция, чтобы она работала в main и выводила функцию так, как сказано в задании? Если это делать без функции в main, то все работает, но функция мне нужна для того, чтобы вывести поочередно во всех системах счисления. Сам не понимаю, зачем, но задача именно такая.

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
#include <iostream>
#include <iomanip>
#include <conio.h>
using namespace std;
ostream& man1(ostream &stream)
{
stream.setf(ios::left);
stream << setw(10) << setprecision (4);
return stream;
}
 
int generator(int i, int j, char str[80], char character) {
    while (str[i]) 
    {
    character = str[i];
 
    if (character == ' ') 
    {
    character = '&';
    break;
    }
 
    switch(j)
    {
    case 0: cout << man1 << oct << (char)tolower(character); break;
    case 1: cout << man1 << dec << (char)tolower(character); break;
    case 2: cout << man1 << hex << (char)tolower(character); break;
    }
    i++;
        }
}
 
int main() {
    setlocale(LC_ALL, "Russian");
    int i=0, j=0;
    char character, str[80];
    cout << "Enter your symbols: ";
    cin >> str;
    while (j<=2) 
    {
    generator(i, j, str, character);
    j++;
    }
    getch();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2015, 12:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Значение, возвращаемое функцией (C++) (C++):

Как присвоить значение возвращаемое функцией? - C++
#include &lt;iostream.h&gt; char* abc(int num){ static char masiv; masiv = num+'0'; return masiv; } main(){ char...

Указатель на функцию, укзатель на воид и возвращаемое функцией значение - C++
Есть функции, идентичные по функционалу, но возвращающие значения разных типов(сами значения не важны). double a() { cout &lt;&lt; 123...

Непонятно выражение "значение, возвращаемое функцией" - C++
Уважаемые господа. Мне немного непонятно выражение &quot;значение, возвращаемое функцией&quot;. Возвращаемое чему? и зачем?

Множество возвращаемое функцией как результат - C++
Помогите пожалуйста с возвратом множества, как результата работы функции. int Cross(){ set&lt;int&gt; b; ...

Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time (). - C++
Помогите пожалуйста написать программу на С++. Просто скоро курсовую сдавать, а классы мы еще не разобрали и не успеваем. Поэтому не знаю...

Возвращаемое значение - C++
Как сделать так, что бы в зависимости от подаваемых аргументов, функция возвращала разные значения? Пробовал через шаблоны, но не...

7
nmcf
5535 / 4845 / 1642
Регистрация: 14.04.2014
Сообщений: 19,657
22.02.2015, 12:50 #2
Ну а зачем ты int сделал? Поставь void.
1
cazorla19
0 / 0 / 0
Регистрация: 01.12.2014
Сообщений: 8
22.02.2015, 13:14  [ТС] #3
Спасибо, теперь вот в чем проблема. Построение успешно завершается, но IDE выдает вот такое предупреждение и в результате строка не переносится при переходе на другую систему счисления. Не подскажете по этому поводу?
0
Миниатюры
Значение, возвращаемое функцией (C++)   Значение, возвращаемое функцией (C++)  
nmcf
5535 / 4845 / 1642
Регистрация: 14.04.2014
Сообщений: 19,657
22.02.2015, 13:21 #4
Убери character из списка формальных параметров и из main(), объяви внутри функции.
1
cazorla19
0 / 0 / 0
Регистрация: 01.12.2014
Сообщений: 8
22.02.2015, 13:32  [ТС] #5
Еще раз спасибо. Теперь возникла другая проблема: нужно сделать повторный запрос на эту функцию, то есть чтобы пользователь выбрал, хочет он ее повторить или нет. Прописал оператор условия и получился вот такой main. При запуске IDE сначала не принимает никакой символ, а потом выдает ошибку. Что нужно здесь исправить?
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
int main() {
    setlocale(LC_ALL, "Russian");
    int i=0, j=0;
    char str[80], str2[80];
    int k;
    cout << "Enter your symbols: ";
    cin >> str;
    loop_generator(i, j, str);
    int l;
    cout << "Try again?[y/n]: ";
    cin >> str2;
    if (str2 == "y" || str2 == "Y") {
    return k;
    }
    else if (str2 == "n" || str2 == "N") {
    cout << "Go to the manipulators." << endl;
    }
    else {
    cout << "Incorrect value.\nTry again?[y/n]: ";
    cin >> str2;
    return l;
    }
    getch();
    return 0;
}
0
Миниатюры
Значение, возвращаемое функцией (C++)  
zss
Модератор
Эксперт С++
6531 / 6093 / 2007
Регистрация: 18.12.2011
Сообщений: 15,845
Завершенные тесты: 1
22.02.2015, 14:03 #6
Привел Ваш код в божеский вид
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 <iomanip>
#include <conio.h> 
using namespace std;
ostream& man1(ostream &stream)
{
    stream.setf(ios::left);
    stream << setw(4) << setprecision (4);
    return stream;
}
void generator(int i, int j, char str[80]) 
{
    char character;
    while (str[i]) 
    {
        character = str[i];
 
        if (character == ' ')  // что Вы тут хотите сделать
        {
            character = '&';
            break;             // завершаем вывод
        }
 
        switch(j)
        {
        case 0: cout << man1 << oct << (char)tolower(character); break;
        case 1: cout << man1 << dec << (int)tolower(character); break;
        case 2: cout << man1 << hex << (int)tolower(character); break;
        }
        i++;
    }
    cout<<endl;
}
 
int main() 
{
    setlocale(LC_ALL, "Russian");
    int i=0,s;
    char str[80];
    do
    {
        cout << "Enter your symbols: ";
        cin >> str;
        for(int j=0;j<3;j++)
            generator(i, j, str);
        cout << "\nTry again?[y/n]: ";
        s=getch();
    }while(s=='y' || s == 'Y');
    return 0;
}
1
cazorla19
0 / 0 / 0
Регистрация: 01.12.2014
Сообщений: 8
22.02.2015, 14:21  [ТС] #7
Точно, ведь есть же for и do-while, а я все это в функцию запихал. Спасибо. Там, где вы закомментировали, нужно преобразовать пробелы в строке на &. Тогда можете объяснить, почему возврат делается именно через getch, как это вообще работает?
0
zss
Модератор
Эксперт С++
6531 / 6093 / 2007
Регистрация: 18.12.2011
Сообщений: 15,845
Завершенные тесты: 1
22.02.2015, 15:07 #8
getch() - это низкоуровневая функция, которая берет символ прямо с клавиатуры (без буферизации)
и не отображает его.
Если хочется, то можно заменить ее на
C++
1
(cin>>s).get();
Но тогда после ввода символа надо нажимать Enter.
Этот Enter считывается методом .get , чтобы не остался в потоке ввода.
Иначе следующий cin >> str; прочтет пустую строку.
0
22.02.2015, 15:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2015, 15:07
Привет! Вот еще темы с ответами:

Возвращаемое ссылочное значение - C++
int a = 1; int&amp; func(){return a;} void main() { int b = func(); b+=111; cout &lt;&lt; b &lt;&lt; &quot; &quot; &lt;&lt; a; system(&quot;pause&quot;); ...

Возвращаемое значение метода - C++
Здравствуйте Подскажите пожалуйста что неправильно указано в в объявлении метода и возвращаемом значении (компилятор выдает...

Возвращаемое значение функции - C++
Добрый день. Есть функция: TextString InfoBox::name(unsigned int i) const { if(i&lt;this-&gt;count()) { TextLabel...

Возвращаемое значение функции - C++
void tokenize(string str_translate){ char char_translate; strcpy(char_translate, str_translate.c_str()); // string to char* ...


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

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

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