Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> программа на си переворачивающая число (134->431), оптимизация 
:(
    Опции темы
alexeikom
Дата 26.11.2008, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 26.11.2008

Репутация: нет
Всего: нет



Всем привет!
Я начал изучать си и хотел бы узнать ваше мнение об этой програмке.

Код

#include <stdio.h>
int get_size(int);
main()
{
    unsigned short num=0;
    long num_1;
    printf("enter an integer number:\n");
    scanf("%d", &num_1);

    if(num_1<=65535){
        num=num_1;
    switch(get_size(num))
    {
    case 1: break;
    case 2: num_1=(num%10)*10+(num/10); break;
    case 3: num_1=(num/100)+(num%10)*100+((num%100)/10)*10; break;
    case 4: num_1=(num/1000)+((num%1000)/100)*10+(((num%1000)%100)/10)*100+(((num%1000)%100)%10)*
                1000; break;
    case 5: num_1=(num/10000)+((num%10000)/1000)*10+(((num%10000)%1000)/100)*100+
                ((((num%10000)%1000)%100)/10)*1000+((((num%10000)%1000)%100)%10)*10000;
        break;
    }
    printf("Reverse number is:%d\n",num_1);
    }
    else printf("number you entered is not an integer(=<65535)\n");

}

int get_size(int size)
{
    if (size/10000!=0) {return 5;}
    if (size/1000!=0) {return 4;}
    if (size/100!=0) {return 3;}
    if (size/10!=0) {return 2;}
    else return 1;
}


Как эту программку можно упростить, улучшить?

Буду весьма признателен! smile 
PM MAIL   Вверх
Silent
Дата 26.11.2008, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 252
Регистрация: 3.10.2006

Репутация: 1
Всего: 9



Код

int main()
{
  cin >> x;
  int y = 0;
  while (x!=0)
  {
    y = y*10+x%10;
    x /= 10;
  }
  cout << y;
  return 0;
}


Это сообщение отредактировал(а) Silent - 26.11.2008, 23:19
PM MAIL   Вверх
sir_nuf_nuf
Дата 26.11.2008, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: нет
Всего: 31



может такую задачу легче решать вообще без чисел ? строками...
Код

#include <stdio.h>
#include <string.h>

int
main() {
    char str[10];
    char *p, *v;
    char c;

    printf("poglad kota!\n");
    scanf("%s", str);
    for (p = str, v = str + strlen(str) - 1;
         p < v;
         p++, v--)
    {
        c = *p;
        *p = *v;
        *v = c;    
    }    
    printf("kot: '%s'\n", str);
}


Это сообщение отредактировал(а) sir_nuf_nuf - 26.11.2008, 23:28


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
alexeikom
Дата 26.11.2008, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 26.11.2008

Репутация: нет
Всего: нет



Да...ну я и накрутил. smile  Огромное вам спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0779 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.