Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2012, 16:29   #1
xNеo
Пользователь
 
Регистрация: 03.06.2011
Сообщений: 15
Вопрос [C++] Методы

Последняя задачка осталась:

«Разработать метод f(x), который в трёхзначном числе меняет местами первую с последней цифрой, а остальные числа оставляет без изменения».

Также надеюсь на помощь.
xNеo вне форума Ответить с цитированием
Старый 03.01.2012, 16:31   #2
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Переводишь число в строку, находишь длину полученной строки; если 3 -- меняешь первый и третий символы местами и переводишь обратно в число.
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 03.01.2012, 16:58   #3
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию

Код:
#include <iostream>
#include <cstring>

using namespace std;

char* NumReverse(char*);

int main()
{
	char Num[20];
	cin >> Num;
	Num = NumReverse(Num);
	if( (&Num) == 0 ) return -1;
	cout << Num;
	return 0;
}

char* NumReverse(char* number)
{
	if(strlen(number) != 3) return 0;
	char temp = number[0];
	number[0] = number[2];
	number[2] = temp;
	return number;
}
Опять же код не компилил.

По хорошему еще надо сделать проверку нет ли других символом, кроме чисел, в вводимой строке Но я блин тороплюсь)))
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.
MooNDeaR вне форума Ответить с цитированием
Старый 03.01.2012, 17:16   #4
xNеo
Пользователь
 
Регистрация: 03.06.2011
Сообщений: 15
По умолчанию

При компиляции выдаёт ошибку: «error C2440: =: невозможно преобразовать "char *" в "char [20]". Не существует преобразований в типы массивов, хотя существуют преобразования в ссылки или указатели на массивы».
xNеo вне форума Ответить с цитированием
Старый 03.01.2012, 17:27   #5
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Да на кой чёрт здесь строки?!
Код:
#include <iostream>

int func(int x)
{
   if ( x < 100 || x > 999 )
   {
       return -1;
   }

   int a , b , c;
   c = x % 10; x /= 10;
   b = x % 10; x /= 10;
   a = x;

   return ( c * 100 + b * 10 + a );
}

int main()
{
    int i;
    std :: cin >> i;
    i = func(i);
    if ( i == -1 ) std :: cout << "Wrong input";
    else std :: cout << i;

    std :: cin.get();
    return 0;
}
Вот так.
_-Re@l-_ вне форума Ответить с цитированием
Старый 03.01.2012, 17:37   #6
xNеo
Пользователь
 
Регистрация: 03.06.2011
Сообщений: 15
По умолчанию

Спасибо, всё работает. :3
xNеo вне форума Ответить с цитированием
Старый 03.01.2012, 18:12   #7
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Цитата:
Да на кой чёрт здесь строки?!
Согласен.
Для конкретного частного случая с трехзначным числом со строками можно не заморачиваться. Предложенный вариант красив и элегантен -)
Но если вдруг (!) возникнет необходимость сделать то же самое не для трехзначных чисел, а для семи-? или десяти-? или, вообще, для n-значных, размерность которых вводится пользователем?
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 03.01.2012, 18:16   #8
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
или, вообще, для n-значных, размерность которых вводится пользователем?
Тоже можно без строк, вот только подход будет другой. Посложнее будет. Всё, что можно делать без использования строк - лучше делать без них. По крайней мере, я делаю так.
_-Re@l-_ вне форума Ответить с цитированием
Старый 04.01.2012, 15:44   #9
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию

Цитата:
Тоже можно без строк, вот только подход будет другой. Посложнее будет. Всё, что можно делать без использования строк - лучше делать без них. По крайней мере, я делаю так.
иногда это получается затратней и дольше Особенно если число будет ну очень длинное))
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.
MooNDeaR вне форума Ответить с цитированием
Старый 04.01.2012, 16:36   #10
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Да ёмое, цикл обыкновенный только будет. Даже два. И всё.
_-Re@l-_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C# методы Extez1 Помощь студентам 4 15.03.2011 12:53
Виртуальные методы Kn793 Общие вопросы C/C++ 5 26.06.2010 15:08
методы в ООП albatros Общие вопросы Delphi 3 04.02.2009 22:59
Методы... Arkuz Свободное общение 6 11.10.2008 16:53