Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Найти все числа-палиндромы в целочисленном массиве, Математика. Метод Горнера. 
:(
    Опции темы
Voldemar2004
  Дата 18.3.2006, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Этот код выводит все числа-палиндромы. Просто и понятно.
Код
int i=0;

const N=10;
int a[N] = {1021,321,543,666,645,868,754,534,9669,444};

do
{
        if(IntToStr(a[i])==strrev(IntToStr(a[i]).c_str()) && strlen(IntToStr(a[i]).c_str())==strlen(IntToStr(a[i]).c_str()))
        {cout<<a[i]<<"\n";};

i++;
}
while(i<N);
Но препод сказал, что это слишком просто и сказал, чтобы я сделал это же, но методом Горнера:
Код

p=3456;

cout<<p<<"\n";

cout<<"\n"<<(p % 10) * 1000 + (p / 10 % 10) * 100 + (p / 100 % 10) * 10 + (p / 1000 % 10);
Только совсем запутался в этой каше. Может кто подскажет как организовать здесь цикл?


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
Lamak
Дата 19.3.2006, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 204
Регистрация: 8.5.2005
Где: Украина,Одесса

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



Вроде так:
Код

int j=0,i=0,S=0,len=0,p=0,t=0;

const N=10;
int a[N] = {1021,321,543,666,645,868,754,534,9669,444};

do
{
        p=a[i];
        len=strlen(IntToStr(p).c_str());
        S=0;
        t=1;
        for(j=1;j<len;j++) t=t*10;
        for(j=1;j<=len;j++)
        {

                S+=(p % 10) *t; //+ (p / 10 % 10) * 100 + (p / 100 % 10) * 10 + (p / 1000 % 10);
                p=p/10;
                t=t/10;
        }
        if(a[i]==S)
        {cout<<a[i]<<"\n";};

i++;
}
while(i<N);

Добавлено @ 18:57
В 12 строке 10 возводиться в степень (len-1),я непомню есть ли оператор возведения в степень
--------------------
Роботы - это интересно и увлекательно! 
PM MAIL   Вверх
Voldemar2004
Дата 19.3.2006, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Цитата(Lamak @ 19.3.2006, 18:54 Найти цитируемый пост)
есть ли оператор возведения в степень
не оператор, а функция pow(число, степень) - #include <math.h>
Код
int j=0,i=0,S=0,len=0,p=0,t=0;    
const N=10;    
int a[N] = {1021,321,543,10,645,868,754,534,96969,444};

int f=0, z=0;

do
{    
        p=a[i]; z=a[i];
                     // этот цикл я написал вместо функции strlen(), правда такой фокус
                     // работает только для целочисленных значений массива :)
        do           // len=strlen(IntToStr(p).c_str());
        {
        z/=-10; f++;
        }
        while(z!=0);

        len=f; f=0;

        S=0; t=1;
        for(j=1;j<len;j++) t*=10;
        for(j=1;j<=len;j++)
        {
                S+=(p%10) * t; //+ (p / 10 % 10) * 100 + (p / 100 % 10) * 10 + (p / 1000 % 10);
                p/=10;
                t/=10;
        }
        if(a[i]==S)
        {cout<<a[i]<<"\n";};
i++;
}
while(i<N);

getch();
Lamak, спасибо.

Кстати функцию power - возведение в степень просто написать и самому:
Код
double a=1;

double Chislo, Stepen;

cout<<"Chislo = ";
cin>>Chislo;

cout<<"\nStepen = ";
cin>>Stepen;

for(int i=0; i<Stepen; i++)
{
a*=Chislo;
}
И конечно учитывать отрицательное значение степени, т.е. дробь и корень n-ной степени, если степень дробная. smile


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
knitmax87
Дата 20.3.2006, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

стати функцию power - возведение в степень просто написать и самому:

Ну конечно самодельная функция будет работать не так быстро как библиотечная.
PM MAIL ICQ GTalk   Вверх
Lamak
Дата 20.3.2006, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 204
Регистрация: 8.5.2005
Где: Украина,Одесса

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



Цитата

Кстати функцию power - возведение в степень просто написать и самому

Так ни кто и не спорит smile !
Просто как-то в последнее время не пользуюсь ей вот и забыл как она называется.
Ведь главное не помнить все функции наизусть а знать что они такие есть и знать где про них можно почитать(тобиш уметь пользоваться хелпом) smile
--------------------
Роботы - это интересно и увлекательно! 
PM MAIL   Вверх
Voldemar2004
Дата 20.3.2006, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Цитата(Lamak @ 20.3.2006, 18:03 Найти цитируемый пост)
знать что они такие есть и знать где про них можно почитать
Храним в голове не саму функцию, а указатель на ее описание. smile :
http://www.lib.ru/CTOTOR/kernigan.txt
Цитата
Так значение POWER(2,5) равно 32. Конеч-
но, эта функция не выполняет всей работы операции **, пос-
кольку она действует только с положительными степенями не-
больших чисел, но лучше не создавать дополнительных затруд-
нений, смешивая несколько различных вопросов.
    Ниже приводится функция POWER и использующая ее основная
программа, так что вы можете видеть целиком всю структуру.
Код
 MAIN()  /* TEST POWER FUNCTION */
 {
    INT I;

    FOR(I = 0; I < 10; ++I)
     PRINTF("%D %D %D\N",I,POWER(2,I),POWER(-3,I));
 }

 POWER(X,N)  /* RAISE  X  N-TH POWER; N > 0  */
 INT X,N;
 {
    INT I, P;
    P = 1;
    FOR (I =1; I <= N; ++I)
    P = P * X;
    RETURN (P);
 }
    Все функции имеют одинаковый вид:
 имя (список аргументов, если они имеются)
 описание аргументов, если они имеются
 {
 описания
    операторы
 }




--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


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

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


 




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


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

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