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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2012, 23:22   #1
lexo1993
Пользователь
 
Регистрация: 17.09.2012
Сообщений: 14
По умолчанию циклическое преобразование чисел(Visual C++ 6.0)

В этой программе трехзначное число число преобразовывается по следующему правилу:каждая его цифра возводится в квадрат и складываются, и так пока пока число не будет равно предыдущему или пока не образуется цикл.
у меня проблема с тем что меня должно выкидывать из цикла когда появляется цикл который уже был, а у меня программа почему то слегка не правильно делает выкидывает из цикла где то на 3-4 числа позднее.
Помогите решить эту проблему(то что много библиотек открыто не обращайте внимание они мне потом нужны будут)
Код:
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<iostream.h>
int formul(int n)
{int f,c,k,l;
c=n/100;
k=n%10;
l=(n/10)-(c*10);
f=c*c+k*k+l*l;
	return(f);
}
void main(void)
{
int i,j,n,a,m[10];
cin>>a;
cout<<a<<endl;
for(i=0;i<50;i++)
{    n=a;
	a=formul(n);
	{if(a==n)break;}
	m[i]=a;
	{for(j=0;j<i;j++)
	if(a==m[j])break;}
cout<<"m[i]= "<<m[j]<<endl;
}
}
lexo1993 вне форума Ответить с цитированием
Старый 11.12.2012, 15:04   #2
lexo1993
Пользователь
 
Регистрация: 17.09.2012
Сообщений: 14
По умолчанию

я не совсем правильно описал проблему выкидывает из цикла меня при разных числах по разному на некоторых числах выкидывает нормально как и должно быть а на других плохо выкидывает не когда нужно
lexo1993 вне форума Ответить с цитированием
Старый 11.12.2012, 15:24   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Код:
	{for(j=0;j<i;j++)
	if(a==m[j])break;}
У вас в м 10 элементов, а счетчик может бегать до 50... где еше 40 элементов брать?
p51x вне форума Ответить с цитированием
Старый 11.12.2012, 15:30   #4
lexo1993
Пользователь
 
Регистрация: 17.09.2012
Сообщений: 14
По умолчанию

спс за подсказку)))теперь тогда другой вопрос как сделать чтоб меня выкидывало из цикла когда он начинает повторятся?
lexo1993 вне форума Ответить с цитированием
Старый 11.12.2012, 16:03   #5
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
спс за подсказку)))теперь тогда другой вопрос как сделать чтоб меня выкидывало из цикла когда он начинает повторятся?
Если нужно "именно тогда" - то только на каждом шаге проверять все предыдущие значения. Если же нужно только отследить зацикливание, то есть ещё старый фокус с двумя точками: одна делает шаг, другая два шага, если совпали - мы в цикле.
Abstraction вне форума Ответить с цитированием
Старый 11.12.2012, 16:13   #6
lexo1993
Пользователь
 
Регистрация: 17.09.2012
Сообщений: 14
По умолчанию

короче я тут разобрался в программе и понял меня не выкидывает из цикла а возвращает в начало и так до 50 а мне надо чтоб программа выкл после обнаружения цикла
lexo1993 вне форума Ответить с цитированием
Старый 11.12.2012, 17:54   #7
lexo1993
Пользователь
 
Регистрация: 17.09.2012
Сообщений: 14
По умолчанию

помогите решить эту проблему пожалуйста
lexo1993 вне форума Ответить с цитированием
Старый 11.12.2012, 19:41   #8
lexo1993
Пользователь
 
Регистрация: 17.09.2012
Сообщений: 14
По умолчанию

блин помогите как выйти из программы если выполнено условие
Код:
{for(j=0;j<i;j++)
	if(a==m[j])break;}
lexo1993 вне форума Ответить с цитированием
Старый 11.12.2012, 23:03   #9
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
блин помогите как выйти из программы
Универсальный способ: return <value>. Это для выхода из функции. Для выхода из программы в целом есть функции exit(<exit code>) и abort().
Abstraction вне форума Ответить с цитированием
Старый 11.12.2012, 23:24   #10
lexo1993
Пользователь
 
Регистрация: 17.09.2012
Сообщений: 14
По умолчанию

да спс большое функция exit помогла
lexo1993 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование вещественных чисел (Pascal) Freedo Помощь студентам 6 27.11.2012 18:04
преобразование чисел(delphi) mineralkaaa Помощь студентам 4 18.05.2010 13:00
Преобразование чисел с плавающей точкой Ko3blpb Общие вопросы C/C++ 3 22.12.2009 21:19
Преобразование чисел artemavd Общие вопросы Delphi 15 30.07.2008 15:48
Преобразование дробных чисел Gon Помощь студентам 5 01.05.2008 13:12