Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++]Записать число в обратном порядке


Автор: vivatpm 10.4.2007, 07:57
Помогите решить задачку на Си
Вообщем вот задача:
Вывести на экран число, полученное выписыванием в обратном порядке цифр, заданного натурального числа.
Надо её как-то сделать без использования массивов и строк.
Помогите пожалуйста!Буду очень благодарен.

Автор: Dov 10.4.2007, 08:12
Код
#include<stdio.h>

int main()
{
     int num;
     
     printf("Enter num  : ");
     scanf("%d", &num);
     printf("Reverse num: ");
     do
     {
          printf("%d", num % 10);
     }while (num /= 10);
     puts("");
     
     return 0;
}

Автор: vivatpm 11.4.2007, 05:18
Вот похожая., но уже с массивами. Помогите решить!
Вот задача:
Дан массив. Поменять местами числа иак, чтобы получился массив задом на перед.

Автор: Dov 11.4.2007, 07:21
Код
#include<stdio.h>

int main()
{
    int mas[] = {1, 2, 3, 4, 5};
    int  size = sizeof(mas) / sizeof(mas[0]);
    int* beg  = &mas[0];
    int* end  = &mas[size - 1];
    int  i, tmp;
    
    
    for(i = 0; i < size; i++)
        printf("%d ", mas[i]);
    puts("");
            
    do
    {
        tmp  = *beg;
        *beg = *end;
        *end = tmp;       
    }while(beg++ < end--); 
    
    for(i = 0; i < size; i++)
        printf("%d ", mas[i]);
    puts("");
    
    return 0;
}

Автор: Alexeis 11.4.2007, 09:58
vivatpm, если данное решение приемлимое, вы хоть как-то об этом сообщайте. 

Автор: apook 11.4.2007, 10:08
Осмелюсь предложить такой вариант smile
Код

#include<iostream.h>

#define N ( sizeof(mas) / sizeof(mas[ 0 ]) )

void main()
{
int i, j;
int mas[ ]={1, 2, 3, 4, 5, 6, 7, 8, 9};

for( i=0, j=N-1; i<j; i++, j-- )
    mas[ i ]-=( mas[ j ]=(mas[ i ]+=mas[ j ])-mas[ j ] );

for( i=0; i<N; i++ )
    cout << mas[ i ];

return;
}

Автор: GIK 11.4.2007, 10:37
apook, 
дааа..... Математику любишь smile ?
Только вот что будет, если кол-во эллементов в массиве ! есть четное? smile 
Нужно явно убрать = из условия в цикле. 

Автор: apook 11.4.2007, 10:43
Цитата

если кол-во эллементов в массиве ! есть четное?  
Нужно явно убрать = из условия в цикле.

А если нет у меня на оба случая <=

GIK
Да да да и куда я смотрел  smile 

Автор: Dov 11.4.2007, 11:39
Цитата(apook @  11.4.2007,  10:08 Найти цитируемый пост)
for( i=0, j=N-1; i<j; i++, j-- )
    mas[ i ]-=( mas[ j ]=(mas[ i ]+=mas[ j ])-mas[ j ] );

Тогда уже так:  smile 
Код
for( i=0, j=N-1; i<j; i++, j-- )
    mas[i] ^= mas[j] ^= mas[i] ^= mas[j];


Автор: GIK 11.4.2007, 13:48
Цитата

GIK
Да да да и куда я смотрел   


С кем не бывает  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)