Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
cazorla19
0 / 0 / 0
Регистрация: 01.12.2014
Сообщений: 8
#1

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

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

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

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++):

Указатель на функцию, укзатель на воид и возвращаемое функцией значение
Есть функции, идентичные по функционалу, но возвращающие значения разных...

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

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

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

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

7
nmcf
6237 / 5549 / 2524
Регистрация: 14.04.2014
Сообщений: 23,331
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
6237 / 5549 / 2524
Регистрация: 14.04.2014
Сообщений: 23,331
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
Модератор
Эксперт С++
6952 / 6514 / 4135
Регистрация: 18.12.2011
Сообщений: 17,179
Завершенные тесты: 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
Модератор
Эксперт С++
6952 / 6514 / 4135
Регистрация: 18.12.2011
Сообщений: 17,179
Завершенные тесты: 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
Привет! Вот еще темы с решениями:

Template возвращаемое значение
функция принимает различные типы и делает с ними операцию. И не известно какой...

Возвращаемое значение (класс)
class shtraf { public: struct sh { int vel; char number; sh...

Реакция на возвращаемое значение
Здравствуйте, Есть программа которая выполняеться и после всех действий...

Возвращаемое значение функции
void tokenize(string str_translate){ char char_translate; ...


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

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

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