Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Rusl_v
13 / 12 / 2
Регистрация: 22.12.2010
Сообщений: 67
1

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

27.02.2012, 22:38. Просмотров 466. Ответов 6
Метки нет (Все метки)

Доброго времени суток
Нужно написать ф-цию,которая вводит целое число из диапазона от 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;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2012, 22:38
Ответы с готовыми решениями:

Передача ф-ции как параметра другой ф-ции
struct pupil{ char surname; int school; int answer; int num; } tmp, a; ...

Узнать в ф-ции имя вызвавшей ф-ции
Это возможно? Т.е. есть некая ф-ция debug(msg), передавать имя вызвавшей ее процедуры в параметрах...

Задача на написание формулы
Как известно из курса физики период полураспада – это такой промежуток времени, к концу которого...

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

Посоветуйте литературу по написание основам написание плагинов
пишу курсовую на тему, основы написание плагинов. Посоветуйте литературу.

6
Dani
1394 / 638 / 134
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 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;
}
1
Rusl_v
13 / 12 / 2
Регистрация: 22.12.2010
Сообщений: 67
27.02.2012, 22:58  [ТС] 3
Спасибо очень хороший пример)
if (!n) return; Что он проверяет?
0
Dani
1394 / 638 / 134
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
Завершенные тесты: 1
27.02.2012, 23:02 4
C++
1
if (n==0)
1
Rusl_v
13 / 12 / 2
Регистрация: 22.12.2010
Сообщений: 67
27.02.2012, 23:15  [ТС] 5
Split (n/10); Опиши пожалуйста как она делит и что передаёт оператору cout не могу понять(((
std:: cout << n%10 << " ";

Как я понимаю она делит бесконечно.
Например 253/10 потом 25/10 потом 2/10 и т.д.
0
Dani
1394 / 638 / 134
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 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.
1
Rusl_v
13 / 12 / 2
Регистрация: 22.12.2010
Сообщений: 67
27.02.2012, 23:30  [ТС] 7
Спасибо за разъяснение а я рекурсию лепил в return и ничего не выходило.
Надо будет перечитать рекурсию,что то она плохо даётся мне
0
27.02.2012, 23:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.02.2012, 23:30

Where в ф-ции
Здравствуйте. Есть ф-ция для запроса public function get_table($table, $where, $fields='*'){ ...

Шаблон ф-ции
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; template &lt;class T&gt; T min(T...

Ф-ции с рекурсиями
Ребята в этой проге реверс первой строки делается без проблем, но почему-то в последующих строках...


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

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

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