С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 25.10.2014
Сообщений: 3
1

Реверс цифр длинных чисел одномерного массива (итерация и рекурсия)

26.10.2014, 00:51. Показов 2542. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Разработать функцию, которая переставляет в обратном порядке цифры заданного длинного целого числа (например, число 5321 превращается в 1235). С клавиатуры ввести массив длинных целых чисел. Используя разработанную функцию, заменить (прореверсирувать) все числа этого массива и напечатать результат замены.

Надо сделать 2 способами : 1- методом итерации; 2 - рекурсия.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.10.2014, 00:51
Ответы с готовыми решениями:

Рекурсия: количество цифр в числе, сумма цифр и реверс числа
Вот задание: Написать программу, которая запрашивает у пользователя целое число, на экран выводит...

Среднее арифметическое для элементов одномерного массива длинных (4-х байтных) целых чисел
Всем привет, помогите Написать программу вычисляющую среднее арифметическое для элементов...

Рекурсия. Определить максимальный элемент одномерного массива целых чисел
Написать рекурсивную программу которая определяет максимальный элемент одномерного массива целых...

Рекурсия. Определить максимальный элемент одномерного массива целых чисел
Написать рекурсивную программу которая определяет максимальный элемент одномерного массива целых...

5
343 / 343 / 331
Регистрация: 02.10.2014
Сообщений: 666
26.10.2014, 11:09 2
Лучший ответ Сообщение было отмечено Denchuk как решение

Решение

Код на С++
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <iostream>
 
#define N 100
 
void reverse_i(char*);
void reverse_r(char*, int);
 
using namespace std;
 
int main(){
    
    char c[N][N];
    
    int n;
    do{
        cout << "Ââåäèòå êîëëè÷åñòâî ÷èñåë: ";
        cin >> n;
    }while(n > N);
    
    for (int i = 1; i <= n; ++i){
        cout << "Ââåäèòå c[" << i << "] = ";
        cin >> c[i - 1];        
    }
    
    for (int i = 0; i < n; ++i)
        reverse_i(c[i]);
    
        
    for (int i = 0; i < n; ++i)
        cout << c[i] << endl;
        
    for (int i = 0; i < n; ++i)
        reverse_r(c[i], 0);
        
    for (int i = 0; i < n; ++i)
        cout << c[i] << endl;
        
    return 0;
}
 
void reverse_i(char* input){
    
    int n = -1;
    while(input[++n]!='\0'){};
    
    for (int i = 0; i < (n + 1)/2; ++i){
        char buf = input[i];
        input[i] = input[n - i - 1];
        input[n - i - 1] = buf;
    }       
}
 
void reverse_r(char* input, int i){
    
    int n = -1;
    while(input[++n]!='\0'){};
    
    if (i < (n + 1) / 2){
        char buf = input[i];
        input[i] = input[n - i - 1];
        input[n - i - 1] = buf;
        reverse_r(input, ++i);
    }       
}
1
0 / 0 / 0
Регистрация: 25.10.2014
Сообщений: 3
27.10.2014, 22:05  [ТС] 3
Спасибо. Но рекурсией что то не работает, возможно из-за того что в цикле while ничего нету.
0
343 / 343 / 331
Регистрация: 02.10.2014
Сообщений: 666
28.10.2014, 09:39 4
Рекурсивная функция:
C++
1
void reverse_r(char* input, int i)
переворачивает в данной программе уже перевернутые числа
то есть восстанавливает.
Цикл это альтернатива рекурсии, либо цикл либо рекурсия.
Эти строчки вычисляют число цифр в input:
C++
1
2
int n = -1;
while(input[++n]!='\0'){};
1
0 / 0 / 0
Регистрация: 25.10.2014
Сообщений: 3
08.11.2014, 15:47  [ТС] 5
Преподаватель сказал переделать, чтобы массив был типа long и реверс цифр делается арифметическим методом, то есть a = n% 10; n = n / 10; Также он сказал что бы на вход в функцию было число а не массив. Помогите пожалуйста никак не получается переделать.
0
343 / 343 / 331
Регистрация: 02.10.2014
Сообщений: 666
10.11.2014, 10:22 6
Denchuk,
Код на С++
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
#include <iostream>
 
using namespace std;
 
long reverse_i(long n){
    
    long r = 0;
    while(n != 0){
        r = r * 10 + n % 10;
        n /= 10;
    }
    
    return r;
}
long reverse_r(long n, long r){
    
    if (n == 0)
        return r;
    else{
        r = r * 10 + n % 10;
        reverse_r(n / 10, r);
    }   
}
 
int main(){
    
    long n;
    do{
      cout << "Ââåäèòå ÷èñëî (0 - âûõîä): ";
      cin >> n;
      if (n != 0){
        cout << "Ïåðåâåðíóòî èòåðàòèâíî: " << reverse_i(n) << endl;
        cout << "Ïåðåâåðíóòî ðåêóðñèâíî: " << reverse_r(n, 0) << endl;
      }             
    }while(n != 0);
}
1
10.11.2014, 10:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.11.2014, 10:22
Помогаю со студенческими работами здесь

Найти первые N чисел Фибоначчи (рекурсия/итерация, сравнить эффективность)
Найти первые N чисел Фибоначчи двумя способами: с помощью рекурсии и с помощью итерации. Сравнить...

Вычислить произведение ненулевых элементов массива (рекурсия/итерация)
Здравствуйте. Как сделать произведение не нулевых элементов, одномерного массива в виде...

Реверс одномерного массива
задача в следующем: Описать функцию Invert( ), меняющую порядок следования элементов массива A из...

Сумма цифр чисел одномерного массива
Вот такой код получился,выдает ошибку next without for Sub summa(a) Dim i, s s = 0 n =...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru