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

Задача на написание ф-ции!!! - C++

Восстановить пароль Регистрация
 
Rusl_v
 Аватар для Rusl_v
13 / 12 / 1
Регистрация: 22.12.2010
Сообщений: 67
27.02.2012, 22:38     Задача на написание ф-ции!!! #1
Доброго времени суток
Нужно написать ф-цию,которая вводит целое число из диапазона от 1 до 32767 и печатает его как последовательность цифр,каждая из которых отделена от соседней двумя пробелами.
Например,целое число 4562 должно быть напечатано в виде 4 5 6 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
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <time.h>
using namespace std;
int func(int);
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"Russian");
    int er,number;
    srand(time(NULL));
    number=rand();
    cout<<number<<"\n"<<endl;
    if(number<10) {         //Если число однозначное то нет смысла что то делать дальше
        cout<<number<<endl;   //
        system("pause");        //
        return 0;}             //*****************************
    for(;;){    //вызываем ф-цию пока она не возратит -1 что означает конец вывода чисел
        er=func(number);        //Присваиваем переменной er значение ф-ции и...
        if (er==-1) break;      //....проверяем её на завершение задачи.
        cout<<er<<"  ";}        //печатаем значение ф-ции
    cout<<number%10<<endl;     //
    system("pause");
    return 0;
}
int func(int x){
    static int statica=10;
    if(x>statica){              
        while(x>statica) x=x/10;
        statica=statica*10;
        if(x>=10) x=x%10;
        return x;}
    else return -1;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2012, 22:38     Задача на написание ф-ции!!!
Посмотрите здесь:

C++ Массив. Сортировка. Ф-ции
Ф-ции с рекурсиями C++
C++ Дружественные ф-ции и ввод строки
C++ Прототип ф-ции.
Какой в С++ аналог ф-ции InputBox? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
27.02.2012, 22:49     Задача на написание ф-ции!!! #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
#include <iostream>
 
void Split (int n)
{
    if (!n) return;
    
    Split (n/10);
    std:: cout << n%10 << " ";
}
 
 
int main()
{
    int n;
 
    std:: cin >> n;
 
    if (n==0) std:: cout << "0";
    else Split (n);
    std:: cout << "\n";
 
 
    system ("pause");
    return 0;
}
Rusl_v
 Аватар для Rusl_v
13 / 12 / 1
Регистрация: 22.12.2010
Сообщений: 67
27.02.2012, 22:58  [ТС]     Задача на написание ф-ции!!! #3
Спасибо очень хороший пример)
if (!n) return; Что он проверяет?
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
27.02.2012, 23:02     Задача на написание ф-ции!!! #4
C++
1
if (n==0)
Rusl_v
 Аватар для Rusl_v
13 / 12 / 1
Регистрация: 22.12.2010
Сообщений: 67
27.02.2012, 23:15  [ТС]     Задача на написание ф-ции!!! #5
Split (n/10); Опиши пожалуйста как она делит и что передаёт оператору cout не могу понять(((
std:: cout << n%10 << " ";

Как я понимаю она делит бесконечно.
Например 253/10 потом 25/10 потом 2/10 и т.д.
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
27.02.2012, 23:22     Задача на написание ф-ции!!! #6
1: 253. 253!=0, то передает в рекурсию 253/10=25. И ПОСЛЕ ТОГО КАК ЭТА РЕКУРСИЯ ОТПРАБОТАЕТ, она выведет 253%10=3.
2: 25. 25!=0, то передает в рекурскию 25/10=2. И ПОСЛЕ ТОГО КАК ЭТА РЕКУРСКИЯ(с 2) ОТРАБОТАЕТ,
она выведет 25%10=5.
3: 2. 2!=0, то передает в рекурсию 2. И затем как рекурсия отпработает, она выведет 2.
4: 0=0, то выходим.

Функция не знает, что делает вложенная рекурсия и поэтому она узнает только то, когда отпработает эта рекурсия. А затем выведет n%10. А уж вложенные функции выводят свои n%10 и т.д., пока n!=0.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.02.2012, 23:30     Задача на написание ф-ции!!!
Еще ссылки по теме:

C++ Шаблон ф-ции
Передача ф-ции как параметра другой ф-ции C++
C++ задача на абстрактные классы (создать абстрактный базовый класс с виртуальными методами вычисления ф-ции y=f(x) в заданной точке х)

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

Или воспользуйтесь поиском по форуму:
Rusl_v
 Аватар для Rusl_v
13 / 12 / 1
Регистрация: 22.12.2010
Сообщений: 67
27.02.2012, 23:30  [ТС]     Задача на написание ф-ции!!! #7
Спасибо за разъяснение а я рекурсию лепил в return и ничего не выходило.
Надо будет перечитать рекурсию,что то она плохо даётся мне
Yandex
Объявления
27.02.2012, 23:30     Задача на написание ф-ции!!!
Ответ Создать тему
Опции темы

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