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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.10.2011, 18:20   #1
FRATER1234
Пользователь
 
Регистрация: 26.09.2011
Сообщений: 68
Вопрос Возникли проблемы с функциями

Здраствуйте все.
Я нуждаю в помощи по функциям столкнулся вот с какой проблемой вот сама задача
1. Написать функцию, которая принимает целое число и возвращает число с перевернутым порядком цифр. Например, пользователь ввел число 5678, функция должна вернуть число 8765. Получить перевернутые числа для N чисел, введенных с клавиатуры. Число N также задается пользователем с клавиатуры.
Вот мой код
Код:
#include <iostream>
#include <Windows.h>
#include <iomanip>
using namespace std;
int MyPow(int Digit, int Pow){
	int key=1;
	for(int i=0;i<Pow;i++)
		key*=Digit;
	return key;
}
void main(){

	
	int res=MyPow(5,3);
	cout<<"Res = "<<res<<"\n\n";

}
Это на умножение я сделал а как сделать чтоб когда вводиш 5 чисел и потом они задам наперёд ишло как сделать?
FRATER1234 вне форума Ответить с цитированием
Старый 08.10.2011, 18:36   #2
haruhi
Форумчанин
 
Аватар для haruhi
 
Регистрация: 05.10.2011
Сообщений: 368
По умолчанию

самый простой и элементарный способ: перевести число в строку, перевернуть строку и вывести
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии
haruhi вне форума Ответить с цитированием
Старый 08.10.2011, 18:54   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
самый простой и элементарный способ
А воти не угадал. И даже ниразу
Цитата:
FRATER1234
Подойдет такая идея?
Код:
int Перевертыш(int n){ int k=0;
	for(;n>0;n/=10,k*=10) k+=(n%10);
	return k/10;
}
int _tmain(int argc, _TCHAR* argv[])
{
	printf("%d",Перевертыш(12345)); 
	getchar();
	return 0;
}
I'm learning to live...

Последний раз редактировалось Stilet; 08.10.2011 в 18:58.
Stilet вне форума Ответить с цитированием
Старый 08.10.2011, 19:00   #4
FRATER1234
Пользователь
 
Регистрация: 26.09.2011
Сообщений: 68
По умолчанию

Код:
#include <iostream>
#include <Windows.h>
#include <iomanip>
using namespace std;
int Reverse(int n)
{
  int result = 0;
 
  while (n) 
  {
    result *= 10;
    result += n % 10;
    n/= 10;
  }
 
  return result;
}
 
int main()
{
  int n;

  cin>>n;
  cout << "Source number: " << n <<endl;
  cout << "Transformed number: " << Reverse(n) <<endl;
 
  return 0;
}
НУ я вот сделал вроде правельно )
А как быть с этими задачками
2. Написать функцию, которая получает оценку студента по 100 бальной системе и возвращает оценку в 12 бальной системе. За основу взять следующие значения: [ 95-100 ] = 12, [90-94] = 11, [85-89] =10, [75-84 ]=9, [ 65-74 ]=8, [60-64]=7, [55-59]=6, [40-49] = 4, [30-39]=3, [20-29]=2, [10-19]=1, [0-9]=0.
3. Написать функцию, которая принимает целое число и возвращает истину, если число является простым, в противном случае – ложь. Проверить, являются ли простыми N целых чисел введенных с клавиатуры. Число N также задается пользователем с клавиатуры.
4. Написать функцию, которая принимает одномерный массив и его размерностью. Функция меняет в массиве все элементы меньше ноля, на максимальное значения этого массива.
5. Написать функцию, которая принимает два целых числа N и M, и возвращает результат истина, если N кратно M, результат ложь, если N не кратно M.
6. Написать функцию, функция возвращает максимальное значение из переданных ей двух значений.
7. Написать функцию возврата абсолютного значения числа.
8. Написать функцию, которая принимает число от 0 до 255 и возвращает символ, подставляя его в соответствие с переданным ей значением. Например, передав число 65, функция должна вернуть символ английского алфавита “A”.
9. Написать функцию, которая принимает символ, а возвращает код этого символа. Например, передав символ английского алфавита “A”, функция вернет число 65.
10. Написать функцию сортировки отдельных строк или столбцов двухмерного массива размерностью 10x10. Функция должна производить сортировку отдельной строки или отдельного столбца, как по убыванию, так и по возрастанию. Номер сортируемой строки или номер сортируемого столбца, а также что сортировать столбец или строку и каким образом (убывание или возрастание) задается при вызове функции. Внимание, если пользователь не передает при вызове функции что сортировать столбец или строку, а также номер сортируемого порядка, то функция должна иметь аргументы по умолчанию, позволяющие ей произвести сортировку главной диагонали переданной матрицы от индексов 0,0 до индексов 9,9. Функция должна быть создана вторым способ объявления и иметь прототип.

Подскажет кто то счего начать?
FRATER1234 вне форума Ответить с цитированием
Старый 08.10.2011, 19:02   #5
FRATER1234
Пользователь
 
Регистрация: 26.09.2011
Сообщений: 68
По умолчанию

Stilet спс за вашу подсказку с формулами с математикой совсем не дружу(( выше код что я сам сделал ) и вот теперь загвозска как сделать 2 задачку и остальные я думаю может так сделать вторую
Код:
#include <iostream>
#include <Windows.h>
#include <iomanip>
using namespace std;
int Reverse(int n)
{
  int bal=12;

  for(int i=0; i<=bal; i++)
  {
	  switch(bal)
	  {
	  case 100:cout<<"Оценка 12 баллов"<<endl;
		  break;
	  case 99:cout<<"Оценка 12 баллов"<<endl;
		  break;
	  case 98:cout<<"Оценка 12 баллов"<<endl;
		  break;
	  case 97:cout<<"Оценка 12 баллов"<<endl;
		  break;
	  case 96:cout<<"Оценка 12 баллов"<<endl;
		  break;
	  case 95:cout<<"Оценка 12 баллов"<<endl;
		  break;
	  }

 
 
  return bal;
}
 
void main()
{
	SetConsoleOutputCP(1251);
  int n;
  
  сin>>n;
  cout<<"По шкале 100 бальной получил -> "<<n<<endl;
  cout<<"По шкале 12 бальной получил -> "<<Reverse(n)<<endl;
 
}
FRATER1234 вне форума Ответить с цитированием
Старый 08.10.2011, 19:13   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну в теории и учеднике она так и должна выглядеть, но на практике я бы делал похитрее:
Код:
int Оценка(int n){
	int k[12]={0,9,19,29,39,49,59,64,74,84,89,94},i=0;
	for(;k[i]<n && i<12;i++); return i;
}
Т.е. в массив забивал контрольные точки баллов, и проходом по нему выяснял в какой по счету диапазон попадает балл. Эта реализация дает возможность менять набор баллов не меняя самого механизма вычисления.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.10.2011, 19:27   #7
FRATER1234
Пользователь
 
Регистрация: 26.09.2011
Сообщений: 68
По умолчанию

Аможете расказать как это работает
Код:
int k[12]={0,9,19,29,39,49,59,64,74,84,89,94},i=0;
	for(;k[i]<n && i<12;i++); return i;
я просто чото не могу понять почему так числа в масиве сделаны ?? и почему "i" вынесенна за цикл?? и почему в цикле сделано такое вычисление "k[i]<n && i<12"
FRATER1234 вне форума Ответить с цитированием
Старый 08.10.2011, 19:35   #8
FRATER1234
Пользователь
 
Регистрация: 26.09.2011
Сообщений: 68
По умолчанию

А если попробывать так написать
Код:
if (bal > 100 || bal < 10) 
        return 0; 
     if (bal >= 95)
        return 12;
     if (bal >= 90 && bal < 95)
        return 11;
FRATER1234 вне форума Ответить с цитированием
Старый 08.10.2011, 19:42   #9
FRATER1234
Пользователь
 
Регистрация: 26.09.2011
Сообщений: 68
По умолчанию

Вот с вашим кодом
Код:
#include <iostream>
#include <Windows.h>
#include <iomanip>
using namespace std;
int Bali(int n)
{
 int k[12]={0,9,19,29,39,49,59,64,74,84,89,94};
 int i=0;
	for( ; i<12; i++);
	{
		if(k[i]<n && i<12);
	}
	return i;
}
 
void main()
{
	SetConsoleOutputCP(1251);
  int n;
  
  cin>>n;
  cout<<"По шкале 100 бальной получил -> "<<n<<endl;
  cout<<"По шкале 12 бальной получил -> "<<Bali(n)<<endl;
 
}
FRATER1234 вне форума Ответить с цитированием
Старый 08.10.2011, 20:49   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А если попробывать так написать
Можно и таким способом )
Если тебе не понятен мой метод - возьми за основу свой, ты в верном направлении мыслишь.
Цитата:
я просто чото не могу понять почему так числа в масиве сделаны ?
Это как я уже сказал граничные баллы, перескакивая через которых ученик получает оценку выше по 12-шкале.
Цитата:
почему "i" вынесенна за цикл?
Потому что ее придется возвращать. А если ты ее локализуешь в цикле, она перестанет быть видимой за его пределами
Цитата:
и почему в цикле сделано такое вычисление "k[i]<n && i<12"
у нас 12 групп баллов. Цикл нужно завершить как только переданное значение в 100-бальной системе попадет в свой диапазон в массиве, индекс которого и будет ответом.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Установка Wordpress возникли проблемы misher WordPress и другие CMS 9 21.02.2011 09:34
Установка форума - возникли проблемы misher WordPress и другие CMS 18 10.02.2011 15:10
JQuery - возникли некоторые проблемы! hoza_syl JavaScript, Ajax 6 30.12.2009 23:11